java - 每当我将插页式 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();
}
}
}
}
解决方案
要在您的应用中插入广告,请按照以下步骤操作
- 首先将 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:真正的密钥在开发模式下可能不起作用,我猜谷歌已经停止了,所以它们会在你的应用程序上传到谷歌游戏商店后运行。
推荐阅读
- python - pip/python:普通站点包不可写
- docker - 如何使用来自 GitHub Packages 的 Docker 镜像?
- ios - RPScreenRecorder.shared().isAvailable 始终为 false
- javascript - Promise {
} on bcrypt - python - 对 pandas 数据框项的迭代
- python - Why my data loop multiple times when I created dictionary?
- excel - Time Calculation Type Mismatch
- amazon-cloudfront - CloudFront - How to forward all request headers to the origin
- python - Selenium can't find id element in
- javascript - 如何在网页上只有一个人,其他人在等待屏幕上