您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
安卓通过意图Intent以相册方式打开指定图片
发布时间:2021-07-15 21:50:48编辑:雪饮阅读()
说起图片的放大,比如一个图片列表中,想要查看某个图片的全图,相对高清些的图,而不是像是列表中那种一般都是有缩放的图。那么常见的有全屏显示这个图片。
不过在安卓中,我更喜欢用系统的相册去显示这个指定路径的图片。
那么具体实现要通过内容提供者,当然在早前可以更方便,但是那样做从某种角度来说是有安全风险的。
这里首先是我们在清单文件AndroidManifest.xml种的application节点中加入如下内容提供者的定义
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.penguinvideoedit.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths"
/>
</provider>
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.penguinvideoedit.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths"
/>
</provider>
这里第一处标红的地方,是我们要调用这个内容提供者的可以,类似授权key那样。
第二个标红的地方就是这个内容提供者的元数据提供者,对于这个元数据提供者,则我们这里定义在res/xml/filepaths.xml如:
那么最后我们在用意图去打开这个图片路径以相册来显示,则如:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
//通过意图打开
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
File file = new File(imageInfo.getAbsolutePath());
Uri uri = FileProvider.getUriForFile(MainActivityCut.this,"com.example.penguinvideoedit.fileprovider",file);
intent.setDataAndType(uri,"image/*");
startActivity(intent);那么大致实现效果就是像这样了。
关键字词:Intent,安卓,相册,指定路径,打开图片