下面列出了android.content.Context#MODE_WORLD_READABLE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private Uri getApkUri(String path) {
// Before N, a MODE_WORLD_READABLE file could be passed via the ACTION_INSTALL_PACKAGE
// Intent. Since N, MODE_WORLD_READABLE files are forbidden, and a FileProvider is
// recommended.
boolean useFileProvider = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N;
// String tempFilename = "tmp.apk";
// byte[] buffer = new byte[16384];
int fileMode = useFileProvider ? Context.MODE_PRIVATE : Context.MODE_WORLD_READABLE;
/* try (InputStream is = new FileInputStream(new File(path));
FileOutputStream fout = context.openFileOutput(tempFilename, fileMode)) {
int n;
while ((n = is.read(buffer)) >= 0) {
fout.write(buffer, 0, n);
}
} catch (IOException e) {
Log.i(TAG + ":getApkUri", "Failed to write temporary APK file", e);
}*/
if (useFileProvider) {
// File toInstall = new File(context.getFilesDir(), tempFilename);
File toInstall = new File(path);
return FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID+".provider", toInstall);
} else {
return Uri.fromFile(new File(path));
}
}
@SuppressWarnings("deprecation")
@SuppressLint({"WorldReadableFiles", "WorldWriteableFiles"})
public static void setFilePermissionsFromMode(String name, int mode) {
int perms = FileUtils.S_IRUSR | FileUtils.S_IWUSR
| FileUtils.S_IRGRP | FileUtils.S_IWGRP;
if ((mode & Context.MODE_WORLD_READABLE) != 0) {
perms |= FileUtils.S_IROTH;
}
if ((mode & Context.MODE_WORLD_WRITEABLE) != 0) {
perms |= FileUtils.S_IWOTH;
}
FileUtils.setPermissions(name, perms, -1, -1);
}