FileProvider 是android 7.0 之后才有的一个东西,其目的也是加强管理碎片化严重的android文件夹,避免其内的应用随意使用手机的内存。 使用一个例子,拍照获取图片,并设置到ImageView中: 把大象放到冰箱需要几个步骤? 步骤一:打开相机: 步骤二:设置拍摄图片的回调: 步骤三:设置FileProvider 小步骤1.设置xml/file_path.xml 文件 小步骤2.设置AndroidManifest文件 在Application节点中添加 其中authorities 就是上面 步骤一 中设置的 authority,包名自己设置好即可。 解释一下其中几个标签: 是不是跟把大象放进冰箱的步骤一样多?哈哈哈
// 相机 public static final int CAMERA_REQUEST_CODE = 1004; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_ss"); private File tempFile; // 中转的文件 private Uri mImgUri; /** * 开启相机 * @param activity */ public void toCamera(Activity activity) { Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String fileName = simpleDateFormat.format(new Date()); tempFile = new File(Environment.getExternalStorageDirectory(), fileName + ".jpg"); // 7.0 以下 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { mImgUri = Uri.fromFile(tempFile); } else { // 7.0 利用FileProvider String authority = activity.getPackageName() + ".fileprovider"; // 需要在配置文件中配置 mImgUri = FileProvider.getUriForFile(activity, authority, tempFile); // 添加权限 i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); } LogUtils.i("toCamera mImgUri = " + mImgUri); i.putExtra(MediaStore.EXTRA_OUTPUT, mImgUri); activity.startActivityForResult(i, CAMERA_REQUEST_CODE); }
private File uploadFile = null; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { LogUtils.i("onActivityResult requestCode = " + requestCode); if (resultCode == Activity.RESULT_OK) { if (requestCode == CAMERA_REQUEST_CODE) { uploadFile = FileHelper.getInstance().getTempFile(); } } // 设置头像 if (uploadFile != null) { Bitmap bitmap = BitmapFactory.decodeFile(uploadFile.getPath()); iv_photo.setImageBitmap(bitmap); } super.onActivityResult(requestCode, resultCode, data); }
<!-- 兼容android7.0的Provider --> <provider android:name="androidx.core.content.FileProvider" android:authorities="{pkgName}.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider>
android:exported="false" //不允许跨进程访问
android:grantUriPermissions="true" // 步骤一种添加的flag的权限
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算