android 開機直接運行app並當做手機桌面
直接上代碼:
1.開機啓動APP
1.1 寫一個廣播接收器,用來接收手機開機廣播
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("broadCastReceiver","onReceiver...");
Intent mBootIntent = new Intent(context, MainActivity.class);
// 必須設置FLAG_ACTIVITY_NEW_TASK
mBootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mBootIntent);
}
}`
1.2 manifest中靜態註冊廣播接收器
<!--開機廣播接受者-->
<receiver android:name=".Receiver">
<intent-filter>
<!--註冊開機廣播地址-->
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
2.開機直接運行app,並把app主頁面當成手機桌面
備註: 上面1中提到的,會在手機開機之後先顯示系統桌面,過一會才能啓動app,下面要提到的是開機直接把app Launcher頁面當成手機桌面,完成一開機就直接啓動app,不需要等待。
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY"/>
</intent-filter>
</activity>
manifest中將主activity設置成上述樣子
這個時候1中註冊的廣播接收器其實可以不要了,可能與手機還會有關係,留與不留都可以試試。
(很多人到這裏就以爲可以了,結果重啓手機發現還是不行,看下面)
到這裏,離成功只差關鍵一步,就是你需要在手機設置中找到 桌面設置
選項,找不到的可以在設置中的搜索欄搜一下,找到後你會發現桌面設置這裏多了一個選項,就是你的這個app,因爲加了 <category android:name="android.intent.category.HOME" />
這一行,桌面設置也會把你的app當成一個桌面主題,還有一個選項是系統桌面,你需要設置成自己的app,重啓手機,ok!
(我測試了華爲5.1華爲7.0和小米5.2三部手機,均能找到桌面設置這個選項)
如果找不到桌面設置選項,可以從手機設置–應用程序-查看所有應用程序(包括系統的應用程序),找到桌面程序之類的字眼的應用,清楚其默認設置。清除之後回到APP,按回主頁面的時候應該會有類似選擇默認桌面的設置項。