版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c_he_n/article/details/83117004
问题描述
Android 8.0系统除了启动service和broadcastreceiver限制以外,还有一个就是在service中启动第三方应用。
解决办法
在android 8.0中启动第三方应用是可以的,所以我就大胆的进行尝试:
1.先启动一个空activity。
2.在这个activity中进行打开第三方应用。
3.值得注意的是,需要在打开第三方应之后立刻销毁这个activity,免除出现返回两次才能到上一个activity中。
4.在service中打开这个activity就行了。
详见代码。
//这个activity用于启动第三方app的
public class EmptyActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String packageName = "com.iflytek.elpmobile.teachanalysis";
if (AppInfoUtils.isAppInstalled(packageName)) {
try {
Intent LaunchIntent = this.getPackageManager().getLaunchIntentForPackage(packageName);
LaunchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(LaunchIntent);
} catch (Exception e) {
Toast.makeText(this, "请到应用商店下载", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "请到应用商店下载", Toast.LENGTH_SHORT).show();
}
this.finish();//打开后立刻讲这个activity销毁,就不会出现
}
}
在service中直接打开EmptyActivity
Intent intent1 = new Intent(this, EmptyActivity.class);
startActivity(intent1);
完结。