哈尔滨模板网站,顺的网络做网站好不好,邯郸网站制作设计,网站图怎么做会高清图片前言#xff1a; 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExt… 前言 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExternalStoragetrue以此禁用分区存储,但这在Android11及以上版本不起作用。
非root方式 root方式点这里
使用 Storage Access Framework 请求访问权限。 SAF 提供了一种标准化的方式来让应用程序请求访问其他应用的文件和目录。要使用 SAF 请求访问 Android/data 目录。 private static int REQUEST_CODE_FOR_DIR 10525;//通过SAF获取权限public void startForSAF(Activity activity) {Uri uri Uri.parse(content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fdata);DocumentFile documentFile DocumentFile.fromTreeUri(activity, uri);Intent intent new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION| Intent.FLAG_GRANT_WRITE_URI_PERMISSION| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);assert documentFile ! null;intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, documentFile.getUri());activity.startActivityForResult(intent, REQUEST_CODE_FOR_DIR);}protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);Uri uri;if (requestCode REQUEST_CODE_FOR_DIR (uri data.getData()) ! null) {getContentResolver().takePersistableUriPermission(uri, data.getFlags() (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION));finish();}}//使用时public static Uri pathToUri(String path) {return Uri.parse(content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fdata/document/primary%3A path.replace(/storage/emulated/0/, ).replace(/, %2F));}效果如下