2018-03-22代码工具整理系列

2018-03-22  本文已影响0人  Android小人

拍照后通知相册更新:

/**如果你存放的图片目录是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("调用相机错误");
        }
上一篇下一篇

猜你喜欢

热点阅读