android 调用系统播放器播放视频,调用系统图库查看图片,适配android 7.0以上
android 调用系统播放器播放视频,调用系统图库查看图片
·
1.新建一个类并继承FileProvider类,不做其他事情
public class AppFileProvider extends FileProvider {
}
2.AndroidManifest.xml中配置
<provider
android:name=".ui.file.view.AppFileProvider"
android:authorities="你的包名.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
3.res文件夹下新增xml文件夹,然后添加file_paths.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:ignore="MissingDefaultResource">
<files-path
name="int_root"
path="/" />
<external-path
name="ext_root"
path="/"/>
<external-files-path
name="ext_file"
path="/"/>
/>
<external-cache-path
name="ext_path"
path="/"/>
/>
</paths>
4.调用系统播放器播放视频代码
private void playVideo(String filePath, Context context){
Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File(filePath);
Uri uri=null;
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
uri = FileProvider.getUriForFile(context,"你的包名.fileprovider", file);
}else {
uri = Uri.fromFile(file);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(uri, "video/*");
context.startActivity(intent);
}
5.调用系统图库展示图片代码
private void playImage(String filePath, Context context){
Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File(filePath);
Uri uri=null;
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
uri = FileProvider.getUriForFile(context,"你的包名.fileprovider", file);
}else {
uri = Uri.fromFile(file);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(uri, "image/*");
context.startActivity(intent);
}
在Android8上测试了,没有问题
更多推荐
已为社区贡献1条内容
所有评论(0)