在mainactivity.java上添加admob横幅代码后,我的应用程序崩溃
这是mainactivity.java的完整代码,我添加了以下内容:在mainactivity.java上添加admob横幅代码后,我的应用程序崩溃,java,android,Java,Android,这是mainactivity.java的完整代码,我添加了以下内容: mAdView = (AdView)findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); import android.content.Intent; import android.os.Bundle; import android.support.annot
mAdView = (AdView)findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.Toast;
import com.github.ybq.android.spinkit.SpinKitView;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
Toolbar toolbar;
ActionBarDrawerToggle actionBarDrawerToggle;
NavigationView navigationView;
RecyclerView recyclerView;
LinearLayoutManager manager;
PostAdapter adapter;
List<Item> items = new ArrayList<>();
Boolean isScrolling = false;
int currentItems, totalItems, scrollOutItems;
String token = "";
SpinKitView progress;
AdView mAdView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdView = (AdView)findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
recyclerView = (RecyclerView) findViewById(R.id.postList);
manager = new LinearLayoutManager(this);
adapter = new PostAdapter(this, items);
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(adapter);
progress = (SpinKitView) findViewById(R.id.spin_kit);
setUpToolbar();
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.nav_home:
break;
case R.id.nav_aboute: {
Intent intent = new Intent(MainActivity.this, aboutus.class);
startActivity(intent);
break;
}
case R.id.nav_contact: {
Intent intent = new Intent(MainActivity.this, contactus.class);
startActivity(intent);
break;
}
case R.id.nav_share:
String shareBody = getString(R.string.app_name) + " " + getString(R.string.url_app_google_play);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name));
startActivity(Intent.createChooser(sharingIntent, getResources().getString(R.string.app_name)));
break;
}
return true;
}
});
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL)
{
isScrolling = true;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentItems = manager.getChildCount();
totalItems = manager.getItemCount();
scrollOutItems = manager.findFirstVisibleItemPosition();
if(isScrolling && (currentItems + scrollOutItems == totalItems))
{
isScrolling = false;
getData();
}
}
});
getData();
}
private void setUpToolbar()
{
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout, toolbar,R.string.app_name, R.string.app_name);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
}
private void getData()
{
String url = BloggerAPI.url + "?key=" + BloggerAPI.key;
if(token != ""){
url = url+ "&pageToken="+ token;
}
if(token == null){
return;
}
progress.setVisibility(View.VISIBLE);
final Call<PostList> postList = BloggerAPI.getService().getPostList(url);
postList.enqueue(new Callback<PostList>() {
@Override
public void onResponse(Call<PostList> call, Response<PostList> response) {
PostList list = response.body();
token = list.getNextPageToken();
items.addAll(list.getItems());
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
progress.setVisibility(View.GONE);
}
@Override
public void onFailure(Call<PostList> call, Throwable t) {
Toast.makeText(MainActivity.this, "Error Occured", Toast.LENGTH_SHORT).show();
}
});
}
}
启动屏幕后应用程序崩溃的问题在哪里?在初始化请求之前,您忘记在onCreate()中添加这一行
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");
请参阅下面的正确指南
我发现了错误
E/FA: Task exception on worker thread: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 12451000 but found 7095000. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />: com.google.android.gms.internal.measurement.zzik.zzdf(Unknown Source)
E/FA:worker线程上的任务异常:java.lang.IllegalStateException:应用程序的AndroidManifest.xml中的元数据标记没有正确的值。预计为12451000,但发现7095000。元素中必须有以下声明::com.google.android.gms.internal.measurement.zzik.zzdf(未知源)
我找到的解决方案是将此代码添加到清单中
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
感谢大家的帮助从app gradle文件更改您的播放服务广告版本
implementation 'com.google.android.gms:play-services-ads:16.0.0'
尝试更高版本或更低版本这将起作用将此代码添加到您的menifest文件中
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-2834184685160637~xxxxxx"/>`
`
您是否调用MobileAds.initialize(…)
任何地方(代码中未显示)?此外,如果您遇到崩溃,请发布stacktrace。是的,添加了import com.google.android.gms.ads.MobileAds;初始化(这是“ca-app-pub-xxxxx~xxxxxx”);但是仍然崩溃您应该从Logcat发布stacktrace以显示崩溃是什么。E/FA:worker线程上的任务异常:java.lang.IllegalStateException:应用程序的AndroidManifest.xml中的元数据标记没有正确的值。预计为12451000,但发现7095000。您必须在元素中有以下声明::com.google.android.gms.internal.measurement.zzik.zzdf(未知源代码)OP表明他确实在发布的代码之外的某个地方调用了它(参见注释)。另外,不打电话也不会导致崩溃(我刚刚在一个应用程序中试过)。
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
implementation 'com.google.android.gms:play-services-ads:16.0.0'
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-2834184685160637~xxxxxx"/>`