Android廣播實現App開機自啟動
本文實例為大傢分享瞭Android廣播實現App開機自啟動的具體代碼,供大傢參考,具體內容如下
一、概括
在安卓中,想要實現app開機自動啟動,需要實現攔截廣播android.permission.RECEIVE_BOOT_COMPLETED,並且需要使用靜態註冊廣播的方法(即在AndroidManifest.xml文件中定義廣播);
二、步驟
1. 先在AndroidManifest.xml文件中定義廣播和聲明權限;
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver>
2. 自定義MyReceiver,繼承BroadcastReceiver,代碼如下:
public class MyReceiver extends BroadcastReceiver { public MyReceiver() { } @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { Intent i = new Intent(context, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } }
註意:上面的 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 非常重要,如果缺少的話,程序將在啟動時報錯;
3. 編寫MainActivity類,代碼如下:
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(this, "哈哈,我成功啟動瞭!", Toast.LENGTH_LONG).show(); Log.e("AutoRun","哈哈,我成功啟動瞭!"); } }
4. 安裝app到手機上,然後啟動一次程序(據說安卓4.0以後,必須先啟動一次程序才能接收到開機完成的廣播,目的是防止惡意程序)
5. 重啟手機,測試app有沒有自動啟動。如果有,那麼恭喜你。如果沒有,請往下看。
如果按照上面的全部步驟後操作後,重啟沒有自動啟動程序,怎麼辦呢?是怎麼回事呢?那麼首先請檢查一下你的手機是不是安裝瞭360之類的安全軟件,如果有,請在軟件的自啟動軟件管理中將app設置為【允許】(我的手機沒有安裝這些軟件,但是系統設置裡面自帶瞭自啟動軟件管理的功能 ,所以我在這裡將我的app設置為【允許開機啟動】),重啟手機,測試是否成功。如果還是失敗,那麼請檢查你的手機是不是設置瞭app安裝首選位置是sd卡,據說安裝到sd卡的話,因為手機啟動成功後(發送瞭啟動完成的廣播後)才加載sd卡,所以app接收不到廣播。如果是的話,把app安裝到內部存儲試試。如果不懂得設置的話,那麼直接在AndroidManifest.xml文件中設置安裝路徑,android:installLocation="internalOnly"。比如:
<manifest package="cn.weixq.autorun" xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly">
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- BroadcastReceiver靜態註冊案例詳解
- 詳解Android的四大應用程序組件
- Android開發之permission動態權限獲取詳解
- Android中Intent組件的入門學習心得
- Android四大組件之廣播BroadcastReceiver詳解