拍照后通知相册更新:
/**如果你存放的图片目录是getExternalFilesDir()则Media Scanner将无法访问到我们的图片这个目录只有APP可以使用,对外是隐藏的**/
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
uri = Uri.fromFile(new File(mCurrentPhotoPath));
intent.setData(uri);
this.sendBroadcast(intent);
Android7.0访问本地目录FileProvider步骤
1.首先在res下创建xml资源文件夹,创建完成后添加filepath.xml,内容为:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 注意root-path这个最好写上,要不会报错-->
<root-path
name="root_path"
path="." />
<external-path
name="images"
path="test/"></external-path>
</paths>
2.在AndroidManifest.xml中和activity平级配置provider:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.yunhujinrong.m.myapplication.fileprovider3"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/imgspath3"></meta-data>
</provider>
如图所示
3.在activity中使用FileProvider:
/** 中间的参数必须和AndroidManifest中的android:authorities对应上**/
FileProvider.getUriForFile(this, "com.yunhujinrong.m.myapplication.fileprovider3", photoFile);
启动相机拍照
/** resolveActivity(),这个方法会返回能处理该Intent的第一个Activity(译注:即检查有没有能处理这个Intent的Activity)。执行这个检查非常重要,因为如果在调用[startActivityForResult()](http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, int))时,没有应用能处理你的Intent,应用将会崩溃。
**/
if (intent.resolveActivity(getPackageManager()) != null) {
photoFile = createFile();
if (photoFile != null) {
Uri uri = null;
if (Build.VERSION.SDK_INT >= 24) {
uri = FileProvider.getUriForFile(this, "com.yunhujinrong.m.myapplication.fileprovider3", photoFile);
} else {
uri = Uri.fromFile(photoFile);
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
camerAc.startActivityForResult(intent, GET_CAMERA_REQUESTCODE);
}
} else {
throw new Exception("调用相机错误");
}
网友评论