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,见:

点击打开链接



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值