2016-05-23 5 views
0

Я реализовал один класс обслуживания, который (расширяет сервис) в Android. В моем классе обслуживания я должен отобразить один диалог Alert, как я могу это сделать?Android -Как отобразить диалоговое окно предупреждения в классе службы

Вот мой код

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; 
} 

В этом коде выше я Реализовано, но я не знаю, как реализовать диалог предупреждения в классе обслуживания

+0

Вы можете попробовать создать активацию чтобы выглядеть и делать то, что именно делает диалоговое окно предупреждения. –

ответ

1

Вы должны настроить ваш диалог, как Системное предупреждение, так как только сервисное оповещение может отображаться с помощью службы.

Добавьте это в файл манифеста:

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

Edit:

Создать стиль для вашего диалога:

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

добавить его при создании строитель:

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

Да, уже упоминается в файле манифеста, но не отображается – user5961381

+0

Исключение: java.lang.RuntimeException: не удается создать обработчик внутри потока, который не вызвал Looper.prepare() –

Смежные вопросы