3

Я новичок в разработке Android. На некоторых устройствах я столкнулся с нижеприведенным исключением после публикации его в игровом магазине. Для меня это совершенно неизвестное исключение. Эта исключительная сила останавливает/разбивает мое приложение.Fatal Exception: java.lang.SecurityException: Отсутствует разрешение на вставку значков

Complete StackTrace вошли:

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: Я использую внешнюю библиотеку (SDK) для нажимной уведомления, добавив, что мое приложение начало показывать 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" 
    > 

и использовать .jar файл SDK вместо скомпилировать его как

компиляции «com.abc.xyz:[email protected]» // предложенный для студии android in (build.gradle)

После применения вышеуказанного процесса эти разрешения удаляются, и я загружаю приложение.

Только эти вещи я выполнил в своей новой версии приложения. Я также посмотрел, что проект библиотеки recentally и содержит папку «» shortcutbadger, который содержит некоторую вложенную папку и файл .class внутри

из-за вышеуказанные изменения Я: начать получать это исключение? объясните/помогите!

+0

В вашем приложении должен быть код, в котором значки приложений обновляются значками. Обычно значки обновляются через Intents. Поэтому постарайтесь выяснить, где вы это делаете, и отправить код. Также разные производители телефонов нуждаются в разных намерениях, чтобы сделать эту работу. – sJy

+0

Проверьте [это] (https://github.com/leolin310148/ShortcutBadger/issues/110) – Soham

+0

@sJy добавил полную информацию и часть кода, который я применил, после чего начинаю смотреть вышеописанное исключение –

ответ

3

Как вы сказали, вы можете изменить Gradle зависимость с Jar того же SDK. Но при использовании Jar вы должны убедиться, что все разрешения добавлены соответствующим образом в манифест, чтобы заставить SDK работать должным образом.

OneSignal SDK, который вы использовали, рекомендует зависимость от градиента для Android Studio & Jar-файл с дополнительными разрешениями в Manifest for Eclipse. Поскольку вы заменили gradle на Jar в Studio, убедитесь, что в файл манифеста добавлены следующие разрешения.

<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? 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 Library, то вам необходимо следовать этой инструкции

API >= 23 теперь требуют специального разрешения. Попробуйте сделать это через onRequestPermissionsResult

also check this url

 Смежные вопросы

  • Нет связанных вопросов^_^