致命异常:未经许可com.google.android.c2dm.permission.RECEIVE的java.lang.SecurityException

时间:2018-12-28 05:38:03

标签: android sdk android-permissions user-permissions

  

致命异常:java.lang.SecurityException:不允许启动   服务意图{act = com.google.android.c2dm.intent.REGISTER   pkg = com.google.android.gms(有其他功能)}未经允许   com.google.android.c2dm.permission.RECEIVE          在android.app.ContextImpl.startServiceCommon(ContextImpl.java:1419)          在android.app.ContextImpl.startService(ContextImpl.java:1396)          在android.content.ContextWrapper.startService(ContextWrapper.java:623)          在com.google.firebase.iid.zzat.zze(未知来源:130)          在com.google.firebase.iid.zzat.zzd(未知来源:91)          在com.google.firebase.iid.zzat.zzc(未知来源:90)          在com.google.firebase.iid.zzr.zza(未知来源:73)          位于com.google.firebase.iid.zzs.run(未知来源)          在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)          在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607)          在java.lang.Thread.run(Thread.java:760)

2 个答案:

答案 0 :(得分:0)

在安装GmsCore之前安装使用GCM的应用程序时会发生这种情况。 Android无法将权限授予该应用程序,因为它根本不知道该权限(因为它是在GmsCore中定义的)。要变通解决此问题,您可以重新安装引起问题的应用程序(无需删除它,只需重新安装即可)。

android_packages_apps_GmsCore

答案 1 :(得分:0)

确保已在Android清单中添加了接收权限。

您还必须在代码中初始化运行时权限,现在从api 23及更高版本开始是强制性的

if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECIEVE) != PackageManager.PERMISSION_GRANTED){


        if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECIEVE)){
            Toast.makeText(this, "Need Permission.", Toast.LENGTH_SHORT).show();
        }else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.RECIEVE}, MY_PERMISSIONS_REQUEST_RECIEVE);
        }
    }else{  // do noting
    }

这些是运行时权限!