介绍
客户提供的apk并没有自启动功能,想要通过系统在开机时打开应用,思路就是在接收到开始广播后执行startActivity即可,这里我是在Settings的RoamingSettingsReceiver.java中监听的开机广播。
修改
静态注册
路径:/vendor/mediatek/proprietary/packages/apps/MtkSettings/AndroidManifest.xml
<receiver android:name="com.mediatek.settings.network.RoamingSettingsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
路径:vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/mediatek/settings/network/RoamingSettingsReceiver.java
//*/soda water.20230920 bootstrap
import android.content.ComponentName;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
//*/
} else if (action.equals(BOOT_COMPLETED_ACTION)) {
//*/soda water.20230920 bootstrap
PackageManager packageManager = context.getPackageManager();
List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
for (PackageInfo packageInfo : packageInfoList) {
if (packageInfo.packageName.equals("com.wt.poclite.ui")) {//检测是否有该apk如果有则启动
Intent intent1 = new Intent();
intent1.setClassName("com.integratedbiometrics.ibsimplescan", "com.integratedbiometrics.ibsimplescan.SimpleScanActivity");
sContext.startActivity(intent1);
Log.d("soda water", "onClick: ");
}
}
//*/
Log.d(TAG, "onReceive BOOT completed");
if (!checkCarrierConfig()) {
return;
}
AndroidManifest.xml
接收此广播需申请权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />