【发布时间】:2016-05-06 03:55:24
【问题描述】:
我正在尝试通过使用睡眠循环来获取 requestPermissions(..) 的结果并等待用户响应,但回调方法 onRequestPermissionsResult(..) 必须等待调用 requestPermissions 的方法完成执行,所以我也弄不明白。
示例代码:
public int result = 0;
public int askSystemForPermission(String permission)
{
result = 0;
requestPermissions(this,new String[] {permission});
while (result == 0) // It hang forever here
{ // because onRequestPermissionsResult never excute
try { // then result always equals to 0
Thread.sleep(500);
} catch (Exception ecx) {}
}
return result;
}
public void onRequestPermissionsResult(...)
{
if ( /*granted*/ )
{
result = 1;
}
else if ( /*dont show again*/ )
{
result = 2;
}
else //denied
{
result = 3;
}
}
我尝试了一些解决方案: 将 requestPermissions 放入 new Thread(), runOnUiThread() .. 还是一样的。 从其他 Activity 调用 requestPermissions,新的 Activity 甚至没有启动,它仍然等待 askSystemForPermission 方法完成。
P/S : 可以通过其他方式完成,但我想知道为什么 android 会这样以及如何解决这个问题。
【问题讨论】:
-
我遇到了同样的问题。但如果我从 c++(ndk) 创建线程,就可以了。
标签: java android android-6.0-marshmallow android-permissions