致命异常:java.lang.SecurityException:缺少插入标记的权限

Ank*_*ngh 4 android android-manifest android-xml android-permissions android-securityexception

我是Android开发的新手,在Play商店发布之后,我面临一些设备的异常.这对我来说完全不为人知.此异常强制停止/崩溃我的应用程序.

记录完整的堆栈跟踪:

Exception java.lang.SecurityException: Missing permission to insert badges
android.os.Parcel.readException (Parcel.java:1553)
android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:185)
android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:137)
android.content.ContentProviderProxy.insert (ContentProviderProxy.java:476)
android.content.ContentResolver.insert (ContentResolver.java:1213)
android.content.AsyncQueryHandler$WorkerHandler.handleMessage (AsyncQueryHandler.java:96)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:211)
android.os.HandlerThread.run (HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)

如上所述,例外剂量不包含与我的申请相关的任何代码部分,而且我也没有找到任何满意的上述问题的解决方案.

编辑: 我正在使用外部库(SDK)进行推送通知,添加我的应用程序开始在Play商店显示11个新权限"必需权限"部分,当我要更新我的应用程序

其中一些权限是:

    com.htc.launcher.permission.READ_SETTINGS
    com.htc.launcher.permission.UPDATE_SHORTCUT
    com.huawei.android.launcher.permission.CHANGE_BADGE
    com.huawei.android.launcher.permission.READ_SETTINGS
    com.huawei.launcher.permission.WRITE_SETTINGS
    com.sec.android.provider.badge.permission.READ
    com.sec.android.provider.badge.permission.WRITE
    com.sonyericsson.home.permission.BROADCAST_BADGE
    com.sonymobile.home.permission.PROVIDE_INSERT_BADGE
Run Code Online (Sandbox Code Playgroud)

我没有在我自己的清单文件中添加这些权限,因此我通过在应用程序标记中添加以下代码行来修改我的'AndroidManifest'文件:

<application
     <--some code-->
    tools:replace="android:icon, android:allowBackup"
    >
Run Code Online (Sandbox Code Playgroud)

并使用SDK的.jar文件而不是编译它

编译'com.abc.xyz:3.+@aar'//为android studio(build.gradle)建议

应用上述过程后,这些权限将被删除,我上传我的应用程序.

只有我在我的新版应用程序中执行了这些操作.我最近也看了那个库项目,它包含一个文件夹'shortcutbadger',里面包含一些子文件夹和.class文件

是由于上述变化,我开始收到该例外?请解释/帮助!

sJy*_*sJy 6

如您所说,您可以使用相同SDK的Jar更改gradle依赖项.但是在使用Jar时,您应该确保在清单中正确添加所有权限,以使SDK正常工作.

您使用的OneSignal SDK建议对Android Studio和Jar文件使用Gradle依赖,并在Manifest for Eclipse中具有其他权限.由于您在Studio中使用Jar替换了gradle,因此请确保将以下权限添加到清单文件中.

<permission android:name="${manifestApplicationId}.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
<uses-permission android:name="${manifestApplicationId}.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<!-- START: ShortcutBadger -->
<!-- Samsung -->
<uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>

<!-- HTC -->
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>

<!-- Sony -->
<uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
<uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>

<!-- Apex -->
<uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>

<!-- Solid -->
<uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>

<!-- Huawei -->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE" />
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS" />
<!-- End: ShortcutBadger -->
Run Code Online (Sandbox Code Playgroud)