2016-07-21 3 views
0

На некоторых устройствах приложение правильно запрашивает разрешения при загрузке. В других (Android 6.0) он не запрашивает разрешения при загрузке. Разрешения перечислены в файле manifest.xml (ниже) и отлично работают для некоторых устройств (Android 5.0). На других устройствах (Android 4.0, 6.0.1) он запрашивает разрешения, как следует, но, похоже, не включает их все. Всплывающее окно ниже - пример того, что происходит, когда нажата кнопка отправки sms.Android-приложение debug apk не запрашивает разрешения для некоторых устройств

У меня было только ограниченное тестирование, и проблемы, похоже, немного отличаются в зависимости от того, какая версия Android работает. Это, как говорится, может быть связано с чем-то другим, я бы не знал.

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

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.catalizeapp.catalize_ss25"> 

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.READ_PROFILE" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="Catalize" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".LoginActivity" 
     android:label="Catalize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 

     <meta-data 
      android:name="android.app.default_searchable" 
      android:value="Contacts" /> 
     <meta-data 
      android:name="android.app.searchable" 
      android:resource="@xml/searchable" /> 
    </activity> 
    <activity android:name=".Contacts" /> 

    <activity android:name=".Account" 
     android:theme="@style/SuperCoolAppBarActivity"/> 
     <meta-data android:name = "android.support.PARENT_ACTIVITY" 
      android:value= ".Contacts"/> 

    <activity android:name=".ReportBug"> 
     <meta-data android:name = "android.support.PARENT_ACTIVITY" 
      android:value=".Contacts"/> 
    </activity> 
</application></manifest> 

(IMAGE) When a button that should send a text message is clicked, this pops up instead of executing the action of the button

+0

Вы можете показать нам, где вы запрашиваете разрешение. – tk1505

ответ

0

Согласно документации:

Если устройство работает под управлением Android 6.0 или выше, и целевой SDK вашего приложения является 23 или выше: приложение должно перечислить разрешения в манифеста, и он должен запросить каждое опасное разрешение, в котором он нуждается, пока приложение работает. Пользователь может предоставлять или отклонять каждое разрешение, и приложение может продолжать работать с ограниченными возможностями, даже если пользователь отклоняет запрос на разрешение. Именно поэтому, если вы объявили разрешения в вашем файле манифеста, вам все равно нужно попросить их во время выполнения.

В качестве временного решения вы можете установить minSdkVersion < 23, но и как говорится в документации:

Примечание: Начиная с Android 6.0 (уровень API 23), пользователи могут отменить разрешения из любого приложения в любое время, даже если приложение нацелено на более низкий уровень API. Вы должны проверить свое приложение, чтобы убедиться, что оно ведет себя правильно, когда ему не хватает необходимого разрешения, независимо от того, какой уровень API соответствует вашим приложениям. Кроме того, согласно рекомендациям «Разрешения», вы должны протестировать обе модели разрешений, чтобы обеспечить лучший пользовательский интерфейс.