android 8.0 service 中不能启动第三方应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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);

完结。

猜你喜欢

转载自blog.csdn.net/c_he_n/article/details/83117004