有些時候,應用須要在開機時就自動運行,例如某個自動從網上更新內容的後臺service。怎樣實現開機自動運行的應用?在撰寫本文時,聯想到高煥堂先生以「Don't call me, I'll call you back!」總結Android框架,真是說到點子上了。理解這句話的含義,許多有關Android平臺上實現某種功能的問題,都能迎刃而解。 java
手機開機後,自動運行程序。 android
{只是最近本人在作萬達大歌星點餐系統,須要用到系統啓動直接啓動App避免服務員玩別的app才研究的,如下分享是本人蔘考網絡,親自嘗試成功的代碼,貼出來與你們分享,但願能幫助更多的人!不懂的能夠問我哦。QQ:11745405 } 網絡
當Android啓動時,會發出一個系統廣播,內容爲ACTION_BOOT_COMPLETED,它的字符串常量表示爲android.intent.action.BOOT_COMPLETED。只要在程序中「捕捉」到這個消息,再啓動之便可。記住,Android框架說:Don't call me, I'll call you back。咱們要作的是等到接收這個消息,而實現的手段就是實現一個BroadcastReceiver。 app
package com.example; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.*; import android.widget.Toast; public class MainActivity extends Activity { // 收到消息啓動此Activity @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setIntegerProperty("splashscreen", R.drawable.wandapad_splash); TextView tv = new TextView(this); tv.setText("Hello這是MainActivity"); setContentView(tv); }
package com.example; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /** * Created with IntelliJ IDEA. * User: 郟高陽 * Date: 13-6-5 * Time: 下午8:25 * To change this template use File | Settings | File Templates. */ public class BootBroadcastReceiver extends BroadcastReceiver { static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION)) { Intent mainActivityIntent = new Intent(context, MainActivity.class); // 要啓動的Activity mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(mainActivityIntent); } } }該類派生自BroadcastReceiver,覆載方法onReceive中,檢測接收到的Intent是否符合BOOT_COMPLETED,若是符合,則啓動MainActivity。
在application內添加一下配置: 框架
<receiver android:name=".BootBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
向系統註冊了一個receiver,子節點intent-filter表示接收android.intent.action.BOOT_COMPLETED消息。 ide
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>五、大功告成!
在多數狀況下,要自動運行的不是有界面的程序,而是在後臺運行的service。此時,就要用startService來啓動相應的service了。 this
❤犒勞一杯咖啡❤
spa
原文連接:http://my.oschina.net/jgy/blog/135858 .net