在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Android  HTML/ 安裝APP后不啟動,如何實現(xiàn)開機啟動APP的Activity或者Service?

安裝APP后不啟動,如何實現(xiàn)開機啟動APP的Activity或者Service?

我們知道,在Android中實現(xiàn)開啟啟動的方法注冊一個靜態(tài)廣播去監(jiān)聽開機啟動完畢的廣播,然后在接聽到開機廣播完畢后,啟動Activity或者Service,方法如下:
首先,新建一個廣播監(jiān)聽器監(jiān)聽開機啟動完畢的廣播

public class BootCompletedReceiver extends BroadcastReceiver {

    private static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
 
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(action_boot)){
            Intent intent=new Intent(context,MainActivity.class);
            ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
    }
}

然后,在AndroidManifest.xml靜態(tài)注冊該廣播

<receiver android:name=".BootCompletedReceiver">
        <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.HOME" />
        </intent-filter>
</receiver>

最后,在AndroidManifest.xml申請權(quán)限

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

通過以上的方法,可以實現(xiàn)開啟啟動APP,但是,這個方法有問題,以上的方法必須要在安裝APP后,手動運行一次APP后,APP才能接收到android.intent.action.BOOT_COMPLETED廣播。

假如APP沒有Activity,只有Service,或者安裝完畢后無法手動運行,也不能通過其他的APP來啟動此APP的Service或者Activity,如何安裝后,可以開機啟動呢? PS:在可以修改Android系統(tǒng)代碼的基礎(chǔ)上,又有哪些方法呢?

回答
編輯回答
毀與悔

APP接收不到BOOT_COMPLETED廣播可能的原因,有以下幾種:

  1. BOOT_COMPLETED對應(yīng)的actionuses-permission沒有一起添加
  2. 應(yīng)用安裝到了sd卡內(nèi),安裝在sd卡內(nèi)的應(yīng)用是收不到BOOT_COMPLETED廣播的
  3. 系統(tǒng)開啟了Fast Boot模式,這種模式下系統(tǒng)啟動并不會發(fā)送BOOT_COMPLETED廣播
  4. 應(yīng)用程序安裝后重來沒有啟動過,這種情況下應(yīng)用程序接收不到任何廣播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。

Android3.1之后,系統(tǒng)為了加強了安全性控制,應(yīng)用程序安裝后或是(設(shè)置)應(yīng)用管理中被強制關(guān)閉后處于stopped狀態(tài),在這種狀態(tài)下接收不到任何廣播,除非廣播帶有FLAG_INCLUDE_STOPPED_PACKAGES標志,而默認所有系統(tǒng)廣播都是FLAG_EXCLUDE_STOPPED_PACKAGES的,所以就沒法通過系統(tǒng)廣播自啟動了。
所以Android3.1之后:

  1. 應(yīng)用程序無法在安裝后自己啟動
  2. 沒有ui的程序必須通過其他應(yīng)用激活才能啟動,如它的Activity、Service、Content Provider被其他應(yīng)用調(diào)用。

不過,存在一種例外,就是應(yīng)用程序被adb push you.apk /system/app/下是會自動啟動的,不處于stopped狀態(tài)。

http://developer.android.com/...
http://commonsware.com/blog/2...

也就是說,解決方式就是將APK推送到/system/app目錄下,或者打包系統(tǒng)時,將APK放置到/system/app中打包

2017年10月27日 01:06