2015-12-11 62 views
0

AndroidManifest.xml包含:Android的廣播接收器自動啓動了

<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

我公司推出的應用程序很多時候太...

我怎樣才能讓廣播接收器自動啓動開機後?

+0

[Android在啓動完成後自動啓動應用程序]可能重複(http://stackoverflow.com/questions/8950854/auto-start-application-after-boot-completed-in-android) –

回答

0

問題是你正試圖顯示AlertDialogBroadcastReceiver,這是不允許的。您不能從BroadcastReceiver中顯示AlertDialog。只有活動可以顯示對話框。

您應該採取其他措施,讓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

廣播接收器無法顯示對話框。改爲開始一項活動。