2015-12-11 2 views
0

Мои AndroidManifest.xml содержит:андроид BroadcastReceiver автоматический запуск при загрузке до

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

и

<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 

и MyBroadcastReceiver

class MyBroadcastreceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     context.startService(new Intent(context, MainService.class)); 
     //Toast.makeText(context, " O ", Toast.LENGTH_SHORT).show(); 
     new AlertDialog.Builder(context) 
     .setTitle("OK") 
     .setMessage("OK") 
     .setPositiveButton("ㅇㅇ", null) 
     .setCancelable(false) 
     .show(); 
    } 
} 

НО,

Я не вижу AlertDialog после перезагрузки.

Я тоже запустил приложение много раз ...

Как я могу сделать BroadcastReceiver автозапуск после загрузки?

+0

Возможный дубликат [Автозагрузка после загрузки в Android] (http://stackoverflow.com/questions/8950854/auto-start-application-after-boot-completed-in-android) –

ответ

0

Проблема заключается в том, что вы пытаетесь показать AlertDialog от BroadcastReceiver, что недопустимо. Вы не можете показать AlertDialog от BroadcastReceiver. Только действия могут отображать диалоги.

Вы должны сделать что-то еще, начните с загрузки BroadcastReceiver и начните действие, чтобы отобразить диалоговое окно.

Добавьте следующую активность в приложение

public class AlertActivity extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     new AlertDialog.Builder(this) 
      .setTitle("OK") 
      .setMessage("OK") 
      .setPositiveButton("ㅇㅇ", null) 
      .setCancelable(false) 
      .show(); 
    } 
} 

Также не забудьте добавить новую активность в манифесте.

Тогда вам просто необходимо, чтобы начать деятельность в ресивере

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    context.startService(new Intent(context, MainService.class)); 
    context.startActivity(new Intent(context, AlertActivity.class)); 
} 

Если этот ответ был полезным, пожалуйста, нажмите на галочку под кнопкой, как указать это.

+0

Большое вам спасибо : D – user3887675

0

Широковещательный приемник не может отображать диалог. Начните действие вместо этого.

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