Подтвердить что ты не робот

Ни пользователь, ни текущий процесс не имеют android.permission.ACCESS_COARSE_LOCATION

Я знаю, что это может быть глупый вопрос, и я упомянул все аналогичные вопросы раньше, но, к сожалению, я мог бы решить эту проблему. Скорее всего, это проблема в моем файле Manifest.xml.

Когда я пытаюсь получить доступ к местоположению, приложение терпит крах

вот мой manifest.xml

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".sTest"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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


    </activity>
    <service android:name="com.test.tt.test.sService">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter> </service>
    <service android:name="com.test.tt.test.sServiceRequest" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


</application>

когда я запустил его, пропустите эту ошибку

 java.lang.SecurityException: Neither user 11029 nor current process has android.permission.ACCESS_COARSE_LOCATION.

Аналогично другим разрешениям. Я не вижу ошибки в файле манифеста. Помогите оценить

4b9b3361

Ответ 1

Это означает, что у вас есть некорректная информация или неверная информация в вашем файле манифеста, и именно по этой причине ваше разрешение не идентифицируется вашим приложением. Просто убедитесь, что вы очистили файл ANDROIDMANIFEST с любыми искаженными данными.

Он будет работать, и все разрешения должны быть за пределами тега приложения

Ответ 2

Если вы используете устройство на Android Marshmallow и выше:

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

Дополнительная информация:

http://developer.android.com/training/permissions/requesting.html

и

http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous

Ответ 3

переместить приложение "Заявление-использование" вне приложения непосредственно под тегом манифеста

Ответ 4

Раздел разрешений на перенос разрешил мою проблему: "Ни у пользователя, ни у текущего процесса нет android.permission.READ_PHONE_STATE". Большое вам спасибо всем на этом форуме. В отношении других, мои изменения ниже:

Оригинал:

    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />


    <uses-feature
        android:name="android.hardware.nfc"
        android:required="true" />

    <activity android:name=".NfcRead"></activity>
</application>

Изменение:

    <uses-permission android:name="android.permission.NFC" />

    <uses-feature
        android:name="android.hardware.nfc"
        android:required="true" />

    <activity android:name=".NfcRead"></activity>
</application>

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

Ответ 5

Это исключение относится к системе разрешений во время выполнения в Android 6 и выше. Разрешение на размещение подпадает под опасное разрешение [ проверьте здесь ], поэтому вы должны выполнить ниже 2 минимальных требований для обработки этих разрешений:

  1. Объявленные ниже 2 разрешения в манифесте (эти разрешения должны быть вне тега приложения)

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION " />
    
  2. Проверьте наличие предоставленных разрешений во время выполнения с помощью checkSelfPermission() и запросите разрешения с помощью requestPermissions(), если они еще не предоставлены.

Если вы уже выполнили оба вышеперечисленных действия, но по-прежнему получаете сообщение об ошибке, проверьте следующее:

  1. Вы применяете targetSdkVersion (должно быть> = 23) [Если для targetSdkVersion установлено значение меньше 23. Предполагается, что приложение еще не тестировалось с новой системой разрешений и переключится на то же старое поведение: пользователь должен принять все одно разрешение во время установки, и все они будут предоставлены после установки].
  2. Проверьте, нет ли у вас ошибок в файле манифеста. Возможно, у вас неверный файл манифеста.
  3. Проверьте, вызываете ли вы какую-либо функцию, которая работает с данными о местоположении, перед тем, как пользователь примет/отменил диалоговое окно разрешения местоположения во время выполнения?
  4. Очистите ваше приложение (Clean build) и перезапустите.

Надеюсь, что это может помочь :-)