In meiner Splash-Aktivität starte ich eine Handler-Verzögerung, wenn Start App, jetzt mit Gerät 6.0 (Ziel 23) Ich habe Dialog fragen Erlaubnis. Also ich will nach dem Klick im Dialog erlauben ich werde meine Handler starten, denn wenn ich Handler zur gleichen Zeit mit der Check-Berechtigung starte, wird es nächste Aktivität, obwohl ich nicht klicken kann im Dialog erlauben. Wie kann ich es tun? hier ist mein Code:Wie kann ich Ereignis festlegen, wenn klicken Erlaube im Dialogfeld Erlaubnis Android Target> 23
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main22);
askPermissions();
}
private static String[] STR_ALL_PERMITTIONS = new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.SEND_SMS,
};
private static final int RCODE_PERMISSION_ALL = 1;
private int iAskingCounter = 0;
private boolean doesAppNeedPermissions() {
return android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1;
}
private void askPermissions() {
if (doesAppNeedPermissions()) {
Toast.makeText(this, "hi", Toast.LENGTH_SHORT).show();
iAskingCounter++;
try {
boolean isPermitted = isPermittedAllPermissions(this, STR_ALL_PERMITTIONS);
if (!isPermitted) {
if (iAskingCounter >= 20) {
startNextIntent();
} else {
ActivityCompat.requestPermissions(this, STR_ALL_PERMITTIONS, RCODE_PERMISSION_ALL);
}
return;
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
Toast.makeText(this, "helllo", Toast.LENGTH_SHORT).show();
}
}
private void startNextIntent() {
Intent in = new Intent(Main22Activity.this, Main2Activity.class);
startActivity(in);
}
private boolean isPermittedAllPermissions(Context context, String... sArrPermissions) {
if (context == null || sArrPermissions == null) return true;
for (String permission : sArrPermissions) {
boolean shouldShow = ActivityCompat.shouldShowRequestPermissionRationale(this, permission);
if (shouldShow) {
//ActivityCompat.finishAffinity(this);
}
if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
askPermissions();
}
public void playHandler(){ // where is I call it?
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent in = new Intent(Main22Activity.this, Main2Activity.class);
startActivity(in);
}
}, 1000);
}
Danke. Aber wenn ich die App schließe und öffne, kann sie die Methode start_handler() nicht aufrufen. –
Vielen Dank. Ich habe es gemacht –