在做一个向导类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>
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,见: