要检查您是否拥有权限,请调用ContextCompat.checkSelfPermission()
[上下文] .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
吗?
我不确定你认为你正在获得什么......但是,是的,你可以使用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中应用的新规则。