2016-07-18 9 views
1

Ich möchte, dies zu tun: Ich LoginActivity Login und in MainActivity nutzen kann, müssen die MainActivity ein Button, wenn ich die Button klicken, um eine Sendung zu schicken, Aktivität ein AlertDialog zeigen, wenn ich OK klicken, es beendet alle Aktivitäten und geht zurück zu LoginActivity.Einen AlertDialog anzeigen, wenn ich eine Sendung bekomme? In SDK> 23 =

Ich habe gesetzt alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT) und schreibe <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> in manifest.xml und kann ausgeführt werden, wenn das SDK < 23.But, wie es laufen, wenn SDK> = 23? Oder wie soll ich von meinem Code zu tun?

@Override 
    public void onReceive(final Context context, Intent intent) { 
     AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); 
     dialogBuilder.setTitle("Warning"); 
     dialogBuilder.setMessage("You are forced to be offline. Please try to login again."); 
     dialogBuilder.setCancelable(false); 
     dialogBuilder.setPositiveButton("OK", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         if (Build.VERSION.SDK_INT >= 23){ 
          if (Settings.canDrawOverlays(context)){ 
           ActivityCollector.finishAll(); 
           Intent intent = new Intent(context, LoginActivity.class); 
           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           context.startActivity(intent); 
          } else { 
           Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); 
           context.startActivity(intent); 
          } 
         } else { 
          ActivityCollector.finishAll(); 
          Intent intent = new Intent(context, LoginActivity.class); 
          intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
          context.startActivity(intent); 
         } 

        } 
       }); 
     AlertDialog alertDialog = dialogBuilder.create(); 
     alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
     alertDialog.show(); 
    } 
+0

bessere Wirksamkeit als Dialog zu verwenden. –

+0

Entschuldigung, ich bin ein Android Beginer, können Sie es klar beschreiben? Thx: D –

+0

Lesen http://stackoverflow.com/questions/18525407/defining-android-activity-as-dialog-with-light-theme. Erstellen Sie ein Beispiel anhand dieses Beispiels und starten Sie diese Aktivität als Ort des Dialogfeldes. –

Antwort

0

Try this ::

int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
if (currentapiVersion >= 23){ 

    //Do what you want 

} else{ 

} 
+0

Ich glaube, ich schreibe so, dass du sagst: Kannst du mir deutlicher helfen? Danke: D –

+0

Wenn eine api-Version größer als 23 bedeutet, musst du den Dialog konw.so vor der api-Version mit diesem Code überprüfen Welche api-Version benutzt dein Gerät? Hast du verstanden? – Punithapriya

+0

Ja, ich weiß, aber ich hatte es in meinem Code getan, den ich schreibe. und ich kann es nicht wirklich benutzen, kannst du mir helfen, es in meinem Code zu lösen.thx: D –