【问题标题】:Android ignoring manifest permissions [duplicate]Android忽略清单权限[重复]
【发布时间】:2016-04-05 14:14:30
【问题描述】:

这是我的清单文件:

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

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

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

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

</manifest>

所以我从 android studio 运行应用程序并得到:

java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations.

我已经从我的设备中完全删除了该应用程序,还清理了我的项目并尝试重新部署,但没有任何效果...

我使用带有 Android 6 的 Nexus 5 作为测试设备,Android 项目 SDK 设置为 23

【问题讨论】:

  • 您用于测试运行的设备是什么版本的Android?
  • 尝试添加此权限,&lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/&gt;
  • 您正在尝试在没有互联网权限的情况下定位一个地方?
  • @Tanis.7x Nexus 5 与 Android 6.0,android sdk 23

标签: android android-manifest


【解决方案1】:

我认为您为此使用了 marshmellow(API 23),您需要为 access_fine_location 权限请求运行时权限。 请按以下方式进行:

context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED &&
                context.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
                        == PackageManager.PERMISSION_GRANTED)

  @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults) {
        if (requestCode == MY_PERMISSIONS_REQUEST_CODE) {
            Log.v("Toadways", "onRequestPermissionsResult");
            isPermissionRequest = false;
         //your code
}

欲了解更多信息,请查看以下链接:

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

希望这会有所帮助。

【讨论】:

  • 较早的答案和更完整的。 +1
【解决方案2】:

从 Android 6.0(Marshmallow,API 级别 23)开始,应用程序必须在运行时向用户询问权限。

您仍然需要在清单中请求权限,但安装应用程序时不再自动授予权限。

要详细了解运行时权限(包括代码示例),请查看Requesting Permissions at Run Time 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2019-10-28
    相关资源
    最近更新 更多