2016-05-23 7 views
0

Ich habe eine Serviceklasse implementiert, die (erweitert Service) in Android ist. In meiner Serviceklasse muss ich einen Alarmdialog anzeigen, wie kann ich das tun?Android -How zur Anzeige von Alarmdialog Builder in der Serviceklasse

Hier ist mein Code

public class BackgroundService extends Service { 

@Override 
public void onCreate() { 
    super.onCreate(); 
    //Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show(); 
    Log.i(tag, "Service created..."); 

} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("LocalService", "Received start id " + startId + ": " + intent); 
    AlertDialog.Builder builder = new AlertDialog.Builder(getApplication()); 
           builder.setTitle("Test dialog"); 
           builder.setMessage("Content"); 
           builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int whichButton) { 
             //Do something 
             dialog.dismiss(); 
            } 
           }); 
           builder.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int whichButton) { 
             dialog.dismiss(); 
            } 
           }); 
           AlertDialog alert = builder.create(); 
           alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
           alert.show(); 

    return START_STICKY; 

} 
@Override 
public void onDestroy() { 
    super.onDestroy(); 
    t.cancel(); 
    // Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show(); 
} 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

In diesem obigen Code I umgesetzt haben, aber ich weiß nicht, wie Alarm-Dialog in Serviceklasse

+0

Sie können versuchen, eine Aktivität zu erstellen wie ein Alarmdialog aussehen und tun soll. –

Antwort

1

Sie implementieren müssen Ihren Dialog konfigurieren Systemalarm als nur Systemalarm kann über den Dienst angezeigt werden.

Fügen Sie diese auf Ihre Manifest-Datei:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

Edit:

erstellen Stil für Ihren Dialog:

<style name="dialog" parent="Theme.AppCompat.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
</style> 

es hinzufügen, während der Builder erstellen:

AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getApplication(), R.style.dialog)); 
+0

Yeah bereits in der Manifestdatei erwähnt, aber nicht angezeigt – user5961381

+0

Ausnahme: java.lang.RuntimeException: Kann den Handler nicht in Thread erstellen, der Looper.prepare() nicht aufgerufen hat –

Verwandte Themen