Разрешение Android не предоставлено с помощью Samsung SDK

Я пытаюсь запустить этот пример проекта, где телефон является потребителем.

http://developer.samsung.com/sample-app/view.do?v=S000000069nCT030000

Приложение отлично работает на моем HTC Desire 820 (4.4.4).

Однако, когда я запускаю его на Samsung Galaxy S4 (5.0.1), он вылетает при запуске onCreate() в ConsumerService

Вот моя трассировка стека:

FATAL EXCEPTION: main
Process: com.samsung.android.sdk.accessory.example.helloaccessory.consumer, PID: 29617
java.lang.RuntimeException: Unable to create service com.samsung.android.sdk.accessory.example.helloaccessory.consumer.ConsumerService: java.lang.SecurityException: com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY permission is required.
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3167)
at android.app.ActivityThread.access$1900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
Caused by: java.lang.SecurityException: com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY permission is required.
at com.samsung.android.sdk.accessory.SA.initialize(Unknown Source)
at com.samsung.android.sdk.accessory.SAAgent.onCreate(Unknown Source)
at com.samsung.android.sdk.accessory.example.helloaccessory.consumer.ConsumerService.onCreate(ConsumerService.java:52)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3157)
at android.app.ActivityThread.access$1900(ActivityThread.java:177) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:145) 
at android.app.ActivityThread.main(ActivityThread.java:5951) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183) 

Так что в основном мне не хватает разрешения, и я подтвердил это, используя:

String permission = "com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY";
int res = getContext().checkCallingOrSelfPermission(permission);
return (res == PackageManager.PERMISSION_GRANTED); 

Который вернул false

Однако я включаю это разрешение в свой AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.samsung.android.sdk.accessory.example.helloaccessory.consumer"
android:versionCode="4"
android:versionName="2.0.2" >

<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="com.samsung.accessory.permission.ACCESSORY_FRAMEWORK" />
<uses-permission android:name="com.samsung.wmanager.ENABLE_NOTIFICATION" />
<uses-permission android:name="com.samsung.WATCH_APP_TYPE.Companion"/>

<application...

Я строю с помощью gradle с этими версиями:

compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
    applicationId "com.samsung.android.sdk.accessory.example.helloaccessory.consumer"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 4
    versionName '2.0.2'
}

Также я использую

compile 'com.android.support:appcompat-v7:23.1.1'

Телефон не рутирован.

Кто-нибудь знает, почему это происходит и как решить эту проблему?

Спасибо!


person Patryk Krawczyk    schedule 27.05.2016    source источник
comment
Попробуйте добавить <uses-feature android:name="com.sec.feature.spen_usp" android:required="true"/> в свой манифест.   -  person ksno    schedule 27.05.2016
comment
@ksno все еще падает, та же ошибка   -  person Patryk Krawczyk    schedule 27.05.2016
comment
Возможно, это разрешение больше не предоставляется на 5.0.1.   -  person Mohammad Haidar    schedule 27.05.2016
comment
только что проверил на Xiaomi Redmi Note 2 (5.0.2), все работает нормально. У меня также есть эта проблема с использованием Galaxy Note4 (6.0.1). Так что я предполагаю, что это связано с устройствами Samsung. Я думаю, что KNOX может блокировать это разрешение, но я не знаю, как его отключить.   -  person Patryk Krawczyk    schedule 27.05.2016
comment
Есть новости по этому поводу? У меня такая же проблема. Спасибо   -  person FabioC    schedule 08.07.2016
comment
Ничего не изменилось, проблема осталась   -  person Patryk Krawczyk    schedule 08.07.2016
comment
Вы используете ProGuard?   -  person divanov    schedule 01.08.2016
comment
Я столкнулся с очень похожей проблемой на некоторых телефонах Samsung, и в моем случае виновником оказался shrinkResources true. Он более или менее опустошил вспомогательные службы xml (в res/xml), а это означало, что служба моего провайдера также отсутствовала. Попробуйте отключить его или добавить правило сохранения для сокращения ресурсов.   -  person MH.    schedule 16.08.2016
comment
Я столкнулся с такой же проблемой   -  person ashraful    schedule 07.11.2016


Ответы (1)


Попробуйте обновить Samsung Pass SDK до версии 1.2.2.

http://developer.samsung.com/galaxy/pass

Я не знаю, что случилось, но 1.2.1 больше не работает, также добавляя разрешение в Androidmanifest.

person Gorio    schedule 07.12.2016