Ich versuche, das Ergebnis einer Anfrage Permissions (..) mithilfe einer Schlafschleife zu erhalten und auf Benutzerantwort warten, aber die Callback-Methode onRequestPermissionsResult (..) muss auf die Methode warten welche Call RequestPermissions beendet werden, um auszuführen, so kann ich es auch nicht bekommen.onRequestPermissionsResult Callback muss warten Methodenaufruf requestPermissions zu beenden
Beispielcode:
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;
}
}
ich eine Lösung habe versucht: Put requestPermissions in neuen Thread(), runOnUiThread() .. immer noch die gleichen. Call RequestPermissions von anderen Activity, die neue Activity nicht starten, noch warten askSystemForPermission Methode zu beenden.
P/S: Es kann auf andere Weise getan werden, aber ich möchte wissen, warum Android so handeln und wie Sie dieses Problem lösen.
ich das gleiche Problem gestoßen. aber wenn ich den Thread von C++ (ndk) erstelle, ist es ok. – user558185