:外部存储空间应⽤私有⽬录下的 cache/ ⽬录,等同于 Context.getExternalCacheDir(); 获取URI的⽅法:在Android7.0以下 获取相册图⽚URI的⽅式:
Uri uri= Uri.from ( file );
Android 7.0+获取相册图⽚的⽅式:
//注意此处的 第⼆个参数必须与 Manifest⽂件中Provider 的 android:authorities ⼀致
Uri contentUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + \".FileProvider\
Android 7.0以下 安装应⽤:
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
installIntent.setDataAndType(Uri.fromFile(apkFile), \"application/vnd.android.package-archive\");startActivity(installIntent);
Android 7.0+ 安装应⽤:
//采⽤FileProvider的⽅式访问⽂件
File apkFile = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), \"app_sample.apk\");Uri apkUri = FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID+\".FileProvider\
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//添加此处 是临时对⽂件的授权 必须加上此句
installIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
installIntent.setDataAndType(apkUri, \"application/vnd.android.package-archive\");startActivity(installIntent);
调⽤相机的时候:
public void camera() {
Intent intent = new Intent(\"android.media.action.IMAGE_CAPTURE\");
tempFile = new File(Environment.getExternalStorageDirectory(),PHOTO_FILE_NAME); Uri uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, \"com.camera.fileprovider\ //此处为Uri临时授权
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } else {
uri = Uri.fromFile(tempFile); }
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, PHOTO_REQUEST_CAMERA); }
裁剪图⽚:
public static void cropImageUri(Activity activity, Uri orgUri, Uri desUri, int aspectX, int aspectY, int width, int height, int requestCode) { Intent intent = new Intent(\"com.android.camera.action.CROP\"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //此处为Uri临时授权
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); }
intent.setDataAndType(orgUri, \"image/*\"); //此处的Uri为 输⼊Uri⽤FileProvider的⽅式获取 intent.putExtra(\"crop\
intent.putExtra(\"aspectX\ intent.putExtra(\"aspectY\ intent.putExtra(\"outputX\ intent.putExtra(\"outputY\ intent.putExtra(\"scalerue); //将剪切的图⽚保存到⽬标Uri中
intent.putExtra(MediaStore.EXTRA_OUTPUT, desUri);//此处的Uri为输出Uri 需要⽤Uri.fromFile()的⽅式获取 intent.putExtra(\"return-data\false);
intent.putExtra(\"outputFormat\ intent.putExtra(\"noFaceDetectionrue);
activity.startActivityForResult(intent, requestCode);}