Android checkCallingPermission()方法返回值问题
Android开发检查权限时,发现调用checkCallingPermission()总是返回值-1,而Binder.getCallingPid() == Process.myPid()又总是返回true,百思不得其解。
网上查资料后发现,必须是在使用AIDL时在IPC(interprocess communication)方法中调用上述两个方法,才能够得到期望的值。即下面的方法只能在远程Services的远程方法中调用。
// 检查调用者是否具有 permission权限 // 此方法仅在调用IPC(interprocess communication)方法时有用 public static boolean checkPermission(Context context, String permission) { //检查如果是当前应用则返回真 if (Binder.getCallingPid() == Process.myPid()) { return true; } if (context.checkCallingPermission(permission) == PackageManager.PERMISSION_GRANTED) { return true; } return false; }
以上,作一个记录。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。