安装apk 报解析包错 或者报 No Activity found to handle Intent { act=android.intent.action.VIEW

1,需要赋予临时权限的,获取uri的方式,和普通的file方式地址不相同
//apk 的uri和其他的不同
public static Uri getApkUriFromFile(Context context, File file) {
    Uri uri = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        String authority = getPackageName(context) + ".fileProvider";
        uri = FileProvider.getUriForFile(context, authority, file);
    } else {
        uri = Uri.fromFile(file);
    }
    return uri;
}
获得的uri
content://包名.fileProvider/external_files/..


 

private static Uri getFileUri(File apkFile) {
    //如果没有设置 SDCard 写权限,或者没有 SDCard,apk 文件保存在内存中,需要授予权限才能安装
    try {
        String[] command = {"chmod", "777", apkFile.toString()};
        ProcessBuilder builder = new ProcessBuilder(command);
        builder.start();
    } catch (IOException ignored) {
    }
    Uri uri = Uri.fromFile(apkFile);
    return uri;
}

获得的uri

file://包名.fileProvider/storage/..

你可能感兴趣的:(大数据)