首先,第一个问题:
在Android 7.0 之后, 打开文件时报错:
其次,第二个问题, 在android 9.0 上,打开intent时会闪一下, 但是打不开, 仅需要添加权限即可
代码语言:javascript复制 <!--适应android 9.0 调用安装app-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
最后, android在9.0遇到的解析包错误,请看代码:
代码语言:javascript复制 未修改之前代码:
public static void installUPTSMServiceApk(final Activity activity) {
File downNewAppFile = new File(Environment.getExternalStorageDirectory().getPath() "/GDDownload", "UPTSMSeraviceApk.apk");
Intent intent = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT >= 24) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID ".fileProvider", downNewAppFile);
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
intent.setDataAndType(Uri.fromFile(downNewAppFile), "application/vnd.android.package-archive");
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
}
代码语言:javascript复制修改之后代码:
public static void installUPTSMServiceApk(final Activity activity) {
// 启用安装新线程
File downNewAppFile = new File(Environment.getExternalStorageDirectory().getPath() "/GDDownload", "UPTSMSeraviceApk.apk");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 24) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID ".fileProvider", downNewAppFile);
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
intent.setDataAndType(Uri.fromFile(downNewAppFile), "application/vnd.android.package-archive");
}
activity.startActivity(intent);
}
如果大家仔细看代码就会看出些许端倪, 如果没时间看也没关系,其实最主要的就是把
代码语言:javascript复制intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
放在了,
代码语言:javascript复制 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
的前面, 具体原因不再详述,有兴趣的同学可以自行查阅。