我已经看过其他帖子中有这个错误,其中一个解决方法是他们拼错了#34;许可"我在this帖子中添加了另一个解决方案,虽然它导致我的应用程序没有崩溃,但它导致它退出,因为我没有被授予权限。
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.turtl.decider">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.hardware.location.gps"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我添加了精确的位置和粗略的位置权限以确保安全。
这是导致错误的代码:
private void getLocation() throws SecurityException {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (isPermissionGranted("ACCESS_FINE_LOCATION",context)) {
loc = locationManager.getLastKnownLocation(locationProvider);
} else {
showAlert("Insufficent Permissions", "Please grant this app GPS permissions to continue.");
}
}
我从我链接到的解决方案中复制的代码:
public static boolean isPermissionGranted(String permission, Context c) {
//int res = ContextCompat.checkSelfPermission(context, permission);
return (ContextCompat.checkSelfPermission(c, permission) == PackageManager.PERMISSION_GRANTED);
}
我在Nexus 6p模拟器上使用Android API级别24。就像我说的那样,检查是否授予了权限会导致应用程序不会崩溃,因为它会跳过该行,但它只是退出。
我在我的个人设备(API 23)上运行它,结果相同。任何帮助表示赞赏。
答案 0 :(得分:0)
错误#1:isPermissionGranted("ACCESS_FINE_LOCATION",context)
不正确,因为这不是正确的字符串。使用isPermissionGranted(Manifest.permission.ACCESS_FINE_LOCATION, context)
拉入正确的字符串。
错误#2:<uses-permission android:name="android.hardware.location.gps"/>
应为<uses-feature android:name="android.hardware.location.gps"/>
,因为该名称没有权限,但该名称有硬件功能。
此外,您最终需要致电requestPermissions()
以请求Manifest.permission.ACCESS_FINE_LOCATION
,因为您的应用不会保留它。