我可以在android +24上使用checkPermission而不是checkSelfPermission吗?

问题描述 投票:-1回答:1

根据this document

要检查您是否拥有权限,请调用ContextCompat.checkSelfPermission()

this document说:

[上下文] .checkPermission()用于确定特定进程是否允许给定权限以及系统中运行的用户ID

我在android 24上有以下代码:

smsPerm = "android.permission.SEND_SMS";
int result = checkPermission(smsPerm, Process.myPid(), Process.myUid());

result将是:

  • PackageManager.PERMISSION_GRANTED如果将smsPerm添加到manifest中并在运行时被授予。
  • PackageManager.PERMISSION_DENIED如果将smsPerm添加到清单但未在运行时授予。
  • PackageManager.PERMISSION_DENIED如果smsPerm没有加入清单。

有了这个说法,似乎行为与android +24上的checkSelfPermission相同。我可以使用checkPermission而不是checkSelfPermission吗?

android permissions android-manifest android-6.0-marshmallow runtime-permissions
1个回答
1
投票

我不确定你认为你正在获得什么......但是,是的,你可以使用Context#checkPermission()而不是ContextCompat.checkSelfPermission()

ContextCompat.checkSelfPermission()的实施使用Context#checkPermission(),至少使用at the time that I posted this answer

public static int checkSelfPermission(@NonNull Context context, @NonNull String permission) {
    if (permission == null) {
        throw new IllegalArgumentException("permission is null");
    }

    return context.checkPermission(permission, android.os.Process.myPid(), Process.myUid());
}

从长远来看,使用ContextCompat.checkSelfPermission()会更安全。可以更新以反映在新版Android中应用的新规则。

© www.soinside.com 2019 - 2024. All rights reserved.