权限问题

2018-06-08  本文已影响0人  GrayZhang

android7.0以上手机摄像头,SD卡 访问

1、 在AndroidManifest.xml 设置 provider

<provider>

        android:name="android.support.v4.content.FileProvider"

        android:authorities="com.wondersgroup.smartcampus.teacher.fileprovider"

        android:exported="false"

        android:grantUriPermissions="true">

            android:name="android.support.FILE_PROVIDER_PATHS"

            android:resource="@xml/file_paths" />

</provider>

2、在res文件夹下的xml文件夹下添加file_paths文件

<paths>

<!--第一个参数随便写,第二个参数是 对那个目录下面的文件进行分装呢,如果什么都不写就代表是sd 卡下面-->

<external-path name="my_images" path="smartCampus/images"/>

</paths>

3、使用

录制视频

captureMediaFile 保存地址

limit_time  录制时间

fileprovider 包名+“.fileprovider”

public static IntentcreateCaptureMediaIntent(File captureMediaFile, long limit_time, Context context, String fileprovider) {

Uri uri =null;

        // 7.0 中的处理

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

//FileProvider 将文件进行分装, 然后供外部应用(相机)访问提高了当前应用的安全性

            uri = FileProvider.getUriForFile(context, fileprovider, captureMediaFile);//通过FileProvider 来获取本地图片文件

        }else {

uri = Uri.fromFile(captureMediaFile);

        }

Intent intent =new Intent();

        intent.setAction("android.media.action.VIDEO_CAPTURE");

        intent.addCategory("android.intent.category.DEFAULT");

        // 保存录像到指定的路径

        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

        intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, limit_time);

        return intent;

    }

拍照

public static IntentcreateCaptureImageIntent(File captureImageFile, Context context, String fileprovider) {

Uri uri =null;

    // 7.0 中的处理

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

//FileProvider 将文件进行分装, 然后供外部应用(相机)访问提高了当前应用的安全性

        uri = FileProvider.getUriForFile(context, fileprovider, captureImageFile);//通过FileProvider 来获取本地图片文件

    }else {

uri = Uri.fromFile(captureImageFile);

    }

Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

    return intent;

}

   

上一篇下一篇

猜你喜欢

热点阅读