【问题标题】:Can't get ACCESS_FINE_LOCATION permission in android无法在 android 中获得 ACCESS_FINE_LOCATION 权限
【发布时间】:2017-03-03 14:50:19
【问题描述】:

我想在 android 中获得 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 的权限,但无论出于何种原因,它只授予 ACCESS_COARSE_LOCATION 的权限。

我的活动:

final int PERMISSION_ALL = 1;
String[] PERMISSIONS = {ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION};

if(!hasPermissions(this, PERMISSIONS)){
        System.out.println("=========================================nottttt========================================================");
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }



@Override
public void onRequestPermissionsResult(int requestCode, String PERMISSIONS[], int[] grantResults) {
    System.out.println("==================requesttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt");

    switch (requestCode) {
        case PERMISSION_ALL: {
            System.out.println("lengthhhhhhhhhhhhhhhhhhhhhh"+PERMISSIONS.length);
            for (int i = 0; i < PERMISSIONS.length; i++) {
                String permission = PERMISSIONS[i];
                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                    System.out.println(permission + "is alreadyyyyyyyyyyyyy grantedddddddddddddddd");
                } else {
                    System.out.println(permission + "is not grantedddddddddddddddd");

                }
                return;
            }

        }
    }
}


public static boolean hasPermissions(Context context, String[] permissions) {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

Android 清单:

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

我启动应用程序,提示我授予对位置的访问权限,我选择 yes ,但未授予 ACCESS_FINE_LOCATION。有人可以帮我找出问题吗?

【问题讨论】:

  • 在没有进一步修改的情况下,突然它说授予了很好的位置,这没关系。有人知道为什么会发生这种奇怪的行为吗?

标签: java android


【解决方案1】:

一旦用户授予其中一个权限的权限,另一个权限也将被授予。您不能授予其中一个而未授予另一个。

【讨论】:

  • 但是为什么来自 onRequestPermissionResult 的打印发现 ACCES_FINE_LOCATION 权限没有被授予。
  • 是否有可能在你授予它之前检查它是否被授予?
  • 我认为情况并非如此,因为我在每次触摸屏幕后都会从控制台检查打印,并且在 ii 授予权限后打印未授予任何内容
【解决方案2】:

ACCESS_FINE_LOCATION 权限允许应用使用 GPS 和网络位置提供程序。但是,网络提供商是一个粗略的位置提供商。这就是为什么,如果你先请求 ACCESS_FINE_LOCATION,它会自动请求 ACCESS_COARSE_LOCATION 权限

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多