私はrequestPermissions(..)の結果をスリープループを使用して取得しようとしていますが、ユーザーの応答を待っていますが、コールバックメソッドonRequestPermissionsResult(..)これはrequestPermissionsを呼び出して実行を終了するので、私もそれを取得できません。onRequestPermissionsResultコールバックはメソッド呼び出しを待つ必要がありますrequestPermissions finish
例コード:runOnUiThreadは(..まだ同じ)、)(新しいスレッドで プット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;
}
}
私はいくつかの解決策を試してみました。 他のアクティビティの呼び出し要求のアクセス権。新しいアクティビティも起動しません。それでもaskSystemForPermissionメソッドは終了します。
P/S:それは他の方法で行うことができますが、私はなぜこのようなアンドロイドの行為がこの問題を解決する方法を知りたいです。
私は同じ問題に遭遇しました。しかし、私はC + +(ndk)からスレッドを作成する場合は、それは大丈夫です。 – user558185