3

私はAndroid開発で新しく、プレイストアに公開した後、一部のデバイスで例外が発生しています。私にとって完全に不明な例外です。この例外強制は私のアプリケーションを停止/クラッシュさせます。致命的な例外: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) 

を例外用量上述したように自分のアプリケーションに関連するコードのどの部分が含まれていない、とも私は上記の問題のための任意の満足のいく解決策を見つけていないです。

EDIT: は私が私のアプリ

を更新しようと思ってたときに私のアプリがPlayストア「必要な権限」セクションに11の新しい権限の表示を開始することを追加した後、プッシュ通知のための外部ライブラリ(SDK)を使用しています

これらの権限は以下のとおりです。

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

[こちら](https://github.com/leolin310148/ShortcutBadger/issues/110)をチェックしてください – Soham

+0

@sJyが私が適用した完全な詳細とコードの一部を追加しました。その後、例外を越えて開始されます –

答えて

3

を通してそれを作るようにしてください。しかし、Jarを使用する場合は、SDKを適切に動作させるために、すべての権限がマニフェストに適切に追加されていることを確認する必要があります。

使用したOneSignal SDKは、Android Studio &のマニフェスト用の追加の権限を持つJarファイルに対して、gradle依存関係を推奨しています。 Studioでgradleを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

デバイスはSamsungですか?サムスンと他のいくつかのブランドでは、アプリアイコンにバッジを追加できるランチャーがあります。おそらくライブラリのコードやコードがそのアイコンを使用しようとしていますか?

あなたのApp Manifestに適切なアクセス許可を追加する必要があります。

<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に従う必要があります。あなたが言ったように、あなたが同じSDKの瓶でGradleの依存関係を変更することができますonRequestPermissionsResult

also check this url

関連する問題