3

我是Android开发新手,在Play商店发布后,我在某些设备上遇到了以下异常。对我来说,这是完全未知的例外。这个异常强制停止/崩溃我的应用程序。致命异常:java.lang.SecurityException:缺少插入徽章的权限

完整的堆栈跟踪记录:

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) 

由于异常上面提到的剂量不包含的,涉及到我的应用程序代码的任何部分,也是我没有找到上述问题的任何满意的解决方案。

编辑: 我使用推送通知外部库(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 

我不是我自己的清单文件中添加这些权限,让我修改我的“AndroidManifest”通过添加的代码以下行应用程序的标记文件:

<application 
    <--some code--> 
    tools:replace="android:icon, android:allowBackup" 
    > 

并使用SDK的一个.jar文件,而不是编译它像

编译“com.abc.xyz:[email protected]”//建议安卓工作室在(build.gradle)

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

只有这些东西我已经执行到我的新版本的应用程序。我也看了那个库项目recentally,它包含的文件夹“shortcutbadger”包含一些子文件夹和.class文件内部

是由于上述变化,我开始接收该异常?请解释/帮助!

+0

应用程序中应该有一些代码,其中应用程序图标用徽章更新。通常徽章通过意图进行更新。所以试着弄清楚你在那里做了什么并且发布了代码。另外不同的电话供应商需要不同的意图来完成这项工作。 – sJy

+0

检查[this](https://github.com/leolin310148/ShortcutBadger/issues/110) – Soham

+0

@sJy添加完整的详细信息和我申请的代码的一部分,之后开始面临异常 –

回答

3

正如你所说,你可以改变使用相同的SDK的一个罐的Gradle依赖。但是,在使用Jar时,您应该确保所有权限都在清单中正确添加,以便使SDK正常工作。

您使用的OneSignal SDK建议Android Studio的gradle依赖关系& Jar文件在Manifest for Eclipse中具有额外权限。由于您在Studio中将Jar替换为Jar,因此请确保将以下权限添加到清单文件中。

<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 --> 
2

设备是三星吗?三星和其他一些品牌都有发射器,您可以在应用程序图标中添加徽章,也许您的代码或库中的代码试图使用它?

您需要将正确的权限添加到您的应用程序清单。

<uses-permission android:name="com.sec.android.provider.badge.permission.READ" /> 
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" /> 
0

如果您正在使用 “ShortcutBadger” 的Android库,那么你需要按照该指令

API >= 23现在需要特别许可。尽量做到通过onRequestPermissionsResult

also check this url

相关问题