Ни пользователь, ни текущий процесс не имеют 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.
Аналогично другим разрешениям. Я не вижу ошибки в файле манифеста. Помогите оценить
Ответы
Ответ 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 минимальных требований для обработки этих разрешений:
-
Объявленные ниже 2 разрешения в манифесте (эти разрешения должны быть вне тега приложения)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION " />
-
Проверьте наличие предоставленных разрешений во время выполнения с помощью checkSelfPermission() и запросите разрешения с помощью requestPermissions(), если они еще не предоставлены.
Если вы уже выполнили оба вышеперечисленных действия, но по-прежнему получаете сообщение об ошибке, проверьте следующее:
- Вы применяете targetSdkVersion (должно быть> = 23) [Если для targetSdkVersion установлено значение меньше 23. Предполагается, что приложение еще не тестировалось с новой системой разрешений и переключится на то же старое поведение: пользователь должен принять все одно разрешение во время установки, и все они будут предоставлены после установки].
- Проверьте, нет ли у вас ошибок в файле манифеста. Возможно, у вас неверный файл манифеста.
- Проверьте, вызываете ли вы какую-либо функцию, которая работает с данными о местоположении, перед тем, как пользователь примет/отменил диалоговое окно разрешения местоположения во время выполнения?
- Очистите ваше приложение (Clean build) и перезапустите.
Надеюсь, что это может помочь :-)