Android O以后安装第三方app的方式

2019-08-12  本文已影响0人  绘情少年

首先,在AndroidManifest.xml写权限

    <!-- 安装应用权限 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

然后在application包围里面写

        <!-- 访问文件权限 -->
        <provider android:name="androidx.core.content.FileProvider"
            android:authorities="包名.fileProvider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

然后在res目录新建xml目录,在xml目录新建file_paths.xml文件,文件中写入

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path path="Android/data/包名/" name="files_root" />
    <external-path path="." name="external_storage_root" />
</paths>

以上就是获取访问Uri权限的内容
下面开始在Java中使用代码来动态申请安装app权限以及安装指定安装包

//判断有没有权限
boolean hasins = getPackageManager().canRequestPackageInstalls();
//如果没有就写跳转申请界面,这个是8.0新API
Uri packageURI = Uri.parse("package:" + getPackageName());
Intent intent10086 = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent10086, 10086);
//如果有权限,就直接安装
Intent intent = new Intent(Intent.ACTION_VIEW);
//判断是否是AndroidN以及更高的版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
  intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
  Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", new File("安装包路径"));
  intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
  intent.setDataAndType(Uri.fromFile(new File("安装包路径")), "application/vnd.android.package-archive");
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
startActivity(intent);
上一篇下一篇

猜你喜欢

热点阅读