天天看點

Android 設定apk開機自啟,啟動後自動禁用

在做一個向導類apk的時候,有這樣的需求:

1、開機後第一個界面顯示apk的界面

2、apk退出後自動禁用,也就是說在桌面上找不到該apk,再次開機後也不再顯示該apk界面。

實作:

1、在MainActivity的onCreate方法裡加入:

<span style="white-space:pre">		</span>// 啟動一次後将自己給禁用掉
		PackageManager pm = getPackageManager();
		ComponentName name = new ComponentName(this, MainActivity.class);
		pm.setComponentEnabledSetting(name,
				PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
				PackageManager.DONT_KILL_APP);
           

2、在AndroidManifest.xml對應的Activity标簽下intent-flter标簽内加入:

android:priority="1" 
           
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
           
<span style="white-space:pre">	</span><activity
            android:name="com.MainActivity"
            android:label="@string/app_name" >
            <intent-filter android:priority="1" >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
           

3、打包出來一個沒有簽名的apk檔案,名為:old.apk,用系統簽名的方式給old.apk簽名,生成target.apk檔案:

java -jar signapk.jar platform.x509.pem platform.pk8 old.apk target.apk

注意:不同廠商的安卓系統,platform.x509.pem 和 platform.pk8檔案可能需要特定的廠商提供,如何系統簽名請google。

4、系統需要具備root權限,連接配接上電腦後,執行以下指令:

adb remount

adb push D:\target.apk /system/app

将apk放到 /system/app 目錄下

4、完成,當關機後開機,開機完成的第一個界面将是target.apk的界面,退出target.apk後,将無法在桌面上找到這個apk。

5、此操作适合機頂盒上的向導使用,沒有系統簽名或沒有放到 /system/app 下的apk,不确定以上操作是否可行。歡迎大家指正。

更詳細的編譯調試Android系統原生App,見:

點選打開連結

繼續閱讀