首页 > 解决方案 > 每当我将插页式 ID 更改为 Admob 上的 ID 并尝试在手机上测试该应用程序时

问题描述

每当我将插页式 ID 更改为 AdMob 上的 ID 并尝试在手机上测试该应用程序时,它都会在屏幕上显示此消息,不幸的是,该应用程序已停止,请问该怎么办?这是我用来实现非常适合测试的广告的代码,但是当我更改它的 ID 时,应用程序无法正常工作,并且 indroid 工作室没有显示任何错误,只是一条安装成功完成的消息,所以任何想法

JAVA

    //View adContainer = findViewById(R.id.unitads);
        final String packageName = this.getPackageName();
        context = this;
        linearlayout = (LinearLayout)findViewById(R.id.unitads);
        admob.admobBannerCall(this, linearlayout);
        
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId(SettingsClass.Interstitial);
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                requestNewInterstitial();
            }
        });

        requestNewInterstitial();
        
        rateus = (Button)findViewById(R.id.rateus2);
        shareapp= (Button) findViewById(R.id.play2);
        
        rateus.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                AppRater.rateLink(MainActivity.this);
                 
            }
        });
        
        shareapp.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                ShareApp();
            }
        });
        
        mDBHelper = new DataBaseHelper(this);
      //got it from here
        //Check exists database
        File database = getApplicationContext().getDatabasePath(DataBaseHelper.DBNAME);
        if(false == database.exists()) {
            mDBHelper.getReadableDatabase();
            //Copy db
            if(copyDatabase(this)) {
                //Toast.makeText(this, "Copy database succes", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Copy data error"+DataBaseHelper.DBLOCATION, Toast.LENGTH_LONG).show();
                return;
            }
        }
        //Get product list in db when db exists
        mItemList = new ArrayList<>();
        mItemList.clear();
        mItemList.addAll(mDBHelper.getListItem());
        //Init adapter
        adapter = new ListItemAdapter(this, mItemList);
        adapter.setClickListener(this);
        //Set adapter for listview
        try {
            lvItem.setAdapter(adapter);
        }catch (Exception ex){}
        //itemSelected();
    }
    
    private void ShareApp(){
        Intent sharingIntent = new Intent(Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        String shareBody = "Hey my friend check out this app\n https://play.google.com/store/apps/details?id="+ getPackageName() +" \n";
        sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject Here");
        sharingIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, "Share via"));
    }
    
    private boolean copyDatabase(Context context) {
        try {

            InputStream inputStream = context.getAssets().open(DataBaseHelper.DBNAME);
            String outFileName = DataBaseHelper.DBLOCATION + DataBaseHelper.DBNAME;
            OutputStream outputStream = new FileOutputStream(outFileName);
            byte[]buff = new byte[1024];
            int length = 0;
            while ((length = inputStream.read(buff)) > 0) {
                outputStream.write(buff, 0, length);
            }
            outputStream.flush();
            outputStream.close();
            Log.w("SplashActivity","DB copied");
            return true;
        }catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    
    
    @Override
    public void onBackPressed() {
        AppRater.app_launched(this);
    }
   
    private void requestNewInterstitial() {
         mInterstitialAd.loadAd(ConsentSDK.getAdRequest(context));
    } 
  /*
    private void itemSelected() {
        
        lvItem.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
             Item itemClicked = mItemList.get(position) ;
                
                try {
                    //Class classe= Class.forName(getPackageName()+".Details");
                    Intent intent=new Intent(MainActivity.this,Details.class);
                    intent.putExtra("detail",""+itemClicked.getText());
                    intent.putExtra("title",""+itemClicked.getTitle());
                    startActivityForResult(intent, 1);
                    //startActivity(intent);
                    //finish();
                    if(admob.mCount == admob.nbShowInterstitial) {
                        if (mInterstitialAd.isLoaded()) 
                            mInterstitialAd.show();
                            admob.mCount=0;
                    }
                    ++admob.mCount;
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
             
            };
        });
    }
*/
    @Override
    public void onItemClick(View view, int position) {
        if ((mItemList.get(position) instanceof Item)) {
            Item itemClicked = (Item) mItemList.get(position);
            try {

                //Class classe= Class.forName(getPackageName()+".Details");
                Intent intent = new Intent(MainActivity.this, Details.class);
                intent.putExtra("detail", "" + itemClicked.getText());
                intent.putExtra("title", "" + itemClicked.getTitle());
                startActivityForResult(intent, 1);
                //startActivity(intent);
                //finish();
                if (admob.mCount == admob.nbShowInterstitial) {
                    if (mInterstitialAd.isLoaded())
                        mInterstitialAd.show();
                    admob.mCount = 0;
                }
                ++admob.mCount;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    public void guide(View view) {
        switch (view.getId()) {
            case R.id.button12:
                Intent intent = new Intent(MainActivity.this, Data_one.class);
                startActivity(intent);
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
        }
                break;
            case R.id.button13:
                intent = new Intent(MainActivity.this, Data_two.class);
                startActivity(intent);
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                }
                break;
            case R.id.button14:
                intent = new Intent(MainActivity.this, Data_three.class);
                startActivity(intent);
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                }
                break;
            case R.id.button:
                intent = new Intent(MainActivity.this, Data_four.class);
                startActivity(intent);
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                }
                break;
            case R.id.button2:
                intent = new Intent(MainActivity.this, Data_five.class);
                startActivity(intent);
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                }
                break;
            case R.id.button3:
                intent = new Intent(MainActivity.this, Data_six.class);
                startActivity(intent);
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                }
                break;
            case R.id.button4:
                intent = new Intent(MainActivity.this, Data_seven.class);
                startActivity(intent);
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                }
        }

}
}

标签: javaandroidadmobmobile-applicationinterstitial

解决方案


要在您的应用中插入广告,请按照以下步骤操作

  • 首先将 google play for ads 库添加到您的依赖项 gradle

implementation 'com.google.android.gms:play-services-ads:19.2.0'

  • 其次,您应该在选择所需广告后从您的 admob 生成密钥,将生成两个密钥,一个有 /,另一个有~
  • 带有斜线的那个,你在你的代码中添加

      mInterstitialAd = new InterstitialAd(this);
      mInterstitialAd.setAdUnitId(SettingsClass.Interstitial); /// here the one with slash
    
  • 第三,在您的清单文件中,添加元数据,其中键为 ~
<manifest>
   <application>
       <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
       <meta-data
           android:name="com.google.android.gms.ads.APPLICATION_ID"
           android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> // the one with ~
   </application>
</manifest>

PS:真正的密钥在开发模式下可能不起作用,我猜谷歌已经停止了,所以它们会在你的应用程序上传到谷歌游戏商店后运行。


推荐阅读