Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 呼叫需要权限,用户在尝试获取位置时可能会拒绝该权限_Java_Android_Android Studio_Geolocation - Fatal编程技术网

Java 呼叫需要权限,用户在尝试获取位置时可能会拒绝该权限

Java 呼叫需要权限,用户在尝试获取位置时可能会拒绝该权限,java,android,android-studio,geolocation,Java,Android,Android Studio,Geolocation,我看了其他问题,但找不到答案。 不管怎么说,我正在尝试获取设备的位置,但它无法工作。我使用的是安卓5.0(API 21) 错误发生在.getLastKnowLocation()中。它说我应该检查权限,但我已经将权限添加到Android清单中 uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permissi

我看了其他问题,但找不到答案。 不管怎么说,我正在尝试获取设备的位置,但它无法工作。我使用的是安卓5.0(API 21)

错误发生在.getLastKnowLocation()中。它说我应该检查权限,但我已经将权限添加到Android清单中

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

但当我运行它时,它总是返回,就像我没有权限一样。

您需要启用运行时权限

  ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION},1200);

如果你只想让你的应用程序运行到API级别21,你可以在你的模块级别
build.gradle
文件中设置
targetSdkVersion 21
,这将使你面临的错误消失


如果/当您想要开始以API级别23或更高为目标时,除了在清单中声明权限外,还需要在运行时请求权限。

检查Android运行时权限,如果在创建时未授予该权限,则调用该权限。虽然运行时权限实际上始于Android 6.0(API级别23)
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION},1200);