有时候我们安装APP仅仅是需要一个服务,或者拆分出复杂APP中的某一功能,这时我们不需要启动页和桌面图标,所以我们可以采用隐藏的形式实现。然后再mainActivity中启动所需服务。隐藏方式如下:
子APP所需代码:
在Activity标签下 < intent-filter>节点下加入的 < data/>节点,通过代码启动。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<data android:host="子APP的启动class" android:scheme="子APP的包名" tools:ignore="AppLinkUrlError" />
<!--例如: <data android:host="MainActivity" android:scheme="com.clearliang.mytestapp2" tools:ignore="AppLinkUrlError" /> -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
主APP所需代码:
在mainActivity中加入以下代码:
String packetName = "子APP的包名";
PackageManager packageManager = getPackageManager();
if (checkPackInfo(packetName)) {
Log.e("信息:","应用已安装");
Intent intent = new Intent();
ComponentName cn = new ComponentName(packetName ,
"packetName.MainActivity");
intent.setComponent(cn);
Uri uri = Uri.parse("packetName.MainActivity");
intent.setData(uri);
startActivity(intent);
} else {
Toast.makeText(MainActivity.this, "没有安装" + packetName, Toast.LENGTH_LONG).show();
}
/**
* 检查包是否存在
*/
private boolean checkPackInfo(String packname) {
PackageInfo packageInfo = null;
try {
packageInfo = getPackageManager().getPackageInfo(packname, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return packageInfo != null;
}