【问题标题】:Fatal Exception: java.lang.SecurityException without permission com.google.android.c2dm.permission.RECEIVE致命异常:未经许可的 java.lang.SecurityException com.google.android.c2dm.permission.RECEIVE
【发布时间】:2019-05-26 00:26:29
【问题描述】:

致命异常: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)

【问题讨论】:

  • 发布您的清单文件
  • 我只是集成了firebase crash和analytics SDK,并没有使用任何关于FCM的东西,但是这个问题在很多设备上都发生过,不是100%,但是会经常发生。我不知道如何定位和修复它
  • 如果使用过滤器拦截,会避免这次崩溃吗?

标签: android sdk android-permissions user-permissions


【解决方案1】:

确保您已在您的 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
    }

这些是运行时权限!

【讨论】:

  • 我尝试添加以下权限,但仍有很多设备出现此问题。
  • <!--FireBase Event --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/> <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" />
  • 现在不知道怎么处理了。
【解决方案2】:

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

android_packages_apps_GmsCore

【讨论】:

  • 我没有在 GCM 上使用任何操作,只有 Firebase 的 crashlytics 和 anlytics。我不明白为什么 GCM 还会出现这种问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2014-08-26
  • 2013-07-07
  • 2020-02-17
  • 1970-01-01
相关资源
最近更新 更多