Проблема с реализацией SwipeRefreshLayout и вознагражденного видео

#android #swiperefreshlayout #admob-rewardedvideoad

#Android #swiperefreshlayout #admob-видео с вознаграждением

Вопрос:

в процессе создания приложения я столкнулся с парой проблем с кодом, суть в том, что пользователь открывает приложение, нажимает кнопку «Получить», смотрит рекламное видео и получает промо-код, но сталкивается с проблемой, если человек выключает рекламу или получает промо-код, он уже не может открыть фильм, вторая проблема связана с реализацией обновления страницы; Я использовал анимацию макета SwipeRefresh, но ничего не обновляется.

Код приложения:

 public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener {

    private static final String TAG = "MainActivity";

    AdView mAdView;

    Button mButtonGive, mButtonOrig, mButtonAmedia, mButtonIvi;
    TextView mTextPromo;

    RewardedVideoAd mAd;

    ClipboardManager clipboardManager;
    ClipData clipData;

    FirebaseFirestore mRef = FirebaseFirestore.getInstance();
    DocumentReference mPapaRef = mRef.collection("Promocode").document("Papa_Johns");

    SwipeRefreshLayout mSwipeRefresh;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButtonGive = findViewById(R.id.mButtonGivePapa);
        mTextPromo = findViewById(R.id.mTextPromoPapa);
        mButtonOrig = findViewById(R.id.mButtonBuyOrig);
        mButtonAmedia = findViewById(R.id.mButtonBuyAmedia);
        mButtonIvi = findViewById(R.id.mButtonBuyIvi);

        mSwipeRefresh = findViewById(R.id.swipeRefresh);
        mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                Log.i(TAG, "onRefresh called from SwipeRefreshLayout");
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mSwipeRefresh.setRefreshing(false);
                    }
                }, 3000);
            }
        });
        mSwipeRefresh.setColorSchemeResources(R.color.colorLight, R.color.colorMiddle, R.color.colorPrimary);

        MobileAds.initialize(this, "ca-app-pub-7120970387686966~9640430308");
        mAd = MobileAds.getRewardedVideoAdInstance(this);
        mAd.setRewardedVideoAdListener(this);

        mAd.loadAd("ca-app-pub-7120970387686966/4195342567", new AdRequest.Builder().build());


        MobileAds.initialize(this, "ca-app-pub-7120970387686966/2942750897");

        mAdView = findViewById(R.id.mBanner);
        AdRequest adRequest1 = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest1);


        mButtonGive.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mTextPromo.setText("");
                mPapaRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                        if (task.isSuccessful()) {
                            DocumentSnapshot document = task.getResult();
                            assert document != null;
                            if (document.exists()) {
                                List<String> promocodes = (List<String>) document.get("Promo");
                                if (promocodes.size() > 0) {
                                    if (mAd.isLoaded()){
                                        mAd.show();
                                    }
                                } else {
                                    mTextPromo.setText("Купонов нет ;(");
                                }
                            } else {
                                Log.d(TAG, "No such document");
                            }

                        }
                        else {
                            Log.d(TAG, "get failed with ", task.getException());
                        }
                    }

                });

            }
        });

        clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        mTextPromo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = mTextPromo.getText().toString();
                clipData = ClipData.newPlainText("text", text);
                clipboardManager.setPrimaryClip(clipData);

                Toast.makeText(getApplicationContext(),"Скопировано в буфер обмена", Toast.LENGTH_SHORT).show();
            }
        });

        mButtonOrig.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    Intent broIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://clc.to/origin_gift"));
                    startActivity(broIntent);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        mButtonAmedia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    Intent broIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://clc.to/amediateka_gift"));
                    startActivity(broIntent);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        mButtonIvi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    Intent broIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://clc.to/ivi_account"));
                    startActivity(broIntent);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

    }

    @Override
    public void onRewardedVideoAdLoaded() {
    }

    @Override
    public void onRewardedVideoAdOpened() {

    }

    @Override
    public void onRewardedVideoStarted() {

    }

    @Override
    public void onRewardedVideoAdClosed() {

    }

    @Override
    public void onRewarded(RewardItem rewardItem) {

    }

    @Override
    public void onRewardedVideoAdLeftApplication() {

    }

    @Override
    public void onRewardedVideoAdFailedToLoad(int i) {

    }

    @Override
    public void onRewardedVideoCompleted() {
        mPapaRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    assert document != null;
                    if (document.exists()) {
                        List<String> promocodes = (List<String>) document.get("Promo");
                        if (promocodes.size() > 0) {
                            int a = new Random().nextInt(promocodes.size());
                            mPapaRef.update("Promo", FieldValue.arrayRemove(promocodes.get(a)));
                            mTextPromo.setText(promocodes.get(a));
                        }
                    }
                }
            }
        });
    }
}
  

Logcat:

Без рекламы: #004 Веб-просмотр уничтожен. Игнорирование действия.

I / chatty: uid=10091 (ru.redstart) идентичные 6 строк

Без рекламы: #004 Веб-просмотр уничтожен. Игнорирование действия.

Без рекламы: недостаточно места для показа рекламы. Требуется 412×90 точек на дюйм, но имеет только 411×718 точек на дюйм.

Без рекламы: недостаточно места для показа рекламы. Требуется 412×90 точек на дюйм, но имеет только 53×718 точек на дюйм.

Без рекламы: недостаточно места для показа рекламы. Требуется 412×90 точек на дюйм, но имеет только 411×694 точек на дюйм.

Без рекламы: недостаточно места для показа рекламы. Требуется 412×90 точек на дюйм, но имеет только 53×694 точек на дюйм.

D / EGL_emulation: eglMakeCurrent: 0xdcf64ea0: версия 2.0 (tinfo 0xc2221880)

I / Ads: Этот запрос отправляется с тестового устройства.

I / Ads: Версия SDK: afma-sdk-a-v15000000.15000000.0

I / Ads: не удалось загрузить объявление: 3

И мой манифест:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.redstart">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-7120970387686966~9640430308"/>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>