我在Android中遇到这种情况。
应用...
<div class="swal2-container">
<div class="swal2-overlay" tabindex="-1"></div>
<div class="swal2-modal" style="display: none; width: 500px; padding: 20px; margin-left: -250px; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial;" tabindex="-1">
<div class="swal2-icon swal2-error" style="display: none;">
<span class="x-mark">
<span class="line left"></span>
<span class="line right"></span>
</span>
</div>
<div class="swal2-icon swal2-question" style="display: none;">?</div>
<div class="swal2-icon swal2-warning pulse-warning" style="display: block;">!</div>
<div class="swal2-icon swal2-info" style="display: none;">i</div>
<div class="swal2-icon swal2-success" style="display: none;">
<span class="line tip"></span>
<span class="line long"></span>
<div class="placeholder"></div>
<div class="fix"></div>
</div>
<img class="swal2-image" style="display: none;">
<h2>Are you sure?</h2>
<div class="swal2-content" style="display: none;"></div>
<input class="swal2-input">
<select class="swal2-select"></select>
<div class="swal2-radio"></div>
<label for="swal2-checkbox" class="swal2-checkbox">
<input type="checkbox" id="swal2-checkbox"></label>
<textarea class="swal2-textarea"></textarea>
<div class="swal2-validationerror"></div>
<hr class="swal2-spacer" style="display: block;">
<button class="swal2-confirm styled" style="background-color: rgb(221, 107, 85);">Yes</button>
<button class="swal2-cancel styled" style="display: inline-block; background-color: rgb(170, 170, 170);">No</button>
<span class="swal2-close" style="display: none;">×</span>
</div>
</div>
拥有权限A
以获取一些信息。它不是直接获取此信息,而是向App PERM
内的一个BroadCastReceiver发送意图(当然B
已B
)。为了确保PERM
等所有此类应用都拥有权限,我使用了context.checkCallingPermission(在this answer的帮助下)。
然而它总是失败。
A
特别是,当我从public void onReceive(Context context, Intent intent) {
String info;
String perm = Manifest.permission.READ_PHONE_STATE;
Log.i(TAG, "callPid="+ Binder.getCallingPid()+" myPid="+ Process.myPid()); /// SAME PID
if (context.checkCallingPermission(perm) != PackageManager.PERMISSION_GRANTED) {
Log.i(TAG, "not granted " + perm);
info = "denied perm " + perm;
} else {
Log.i(TAG, perm + " already granted");
info = dumpDeviceInfoImpl(context);
}
}
发送意图时,注释行始终返回SAME pid(B
)。我可以确认A
和A
有不同的PID。
更新
之前我认为这是由B
引起的,所以我尝试BroadCastReceiver
startActivity
,然后在A
开始活动。再次,在B
期间,它再次失败。令人惊讶的是,仍然返回了相同的pid。
那么使用checkCallingPermission
的正确方法是什么?
答案 0 :(得分:0)
使用这种方法
checkCallingPermission(Context context, String permission, String packageName)
检查您正在处理的IPC是否具有给定的权限,以及是否允许与此权限相对应的应用操作。