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;
	}

以上,作一个记录。

相关文章:

  • 2021-12-17
  • 2021-07-19
  • 2021-06-11
  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-15
  • 2021-07-11
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
相关资源
相似解决方案