如何通过Uri链接打开Google Photos中的视频或图片?
问题根因
- 你获取到的
content://com.google.android.apps.photos.contentprovider开头的URI是Google Photos专属的内容提供器URI,这类URI的临时访问权限仅在onActivityResult回调返回后的短时间内默认生效,后续直接调用ACTION_VIEW时权限已经失效,导致Google Photos判定你无权限访问对应媒体资源,所以提示Media not found。 - 你没有给Intent设置正确的MIME类型,系统匹配目标应用时会出现异常,也会导致Google Photos无法正确识别媒体格式。
修复方案
你需要给Intent补充MIME类型声明、临时URI访问权限标记两个参数,示例代码如下:
Intent configIntent = new Intent(Intent.ACTION_VIEW); // 同时传入URI和对应的MIME类型 configIntent.setDataAndType(link, "video/mp4"); // 授予目标应用临时读权限,使其可以访问URI对应的资源 configIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(configIntent);
- 如果视频的MIME类型不固定,可以通过
ContentResolver查询对应URI的真实MIME类型再传入,比写死固定类型的适配性更好。 - 如果需要持久化保留该URI的访问权限,可以在
onActivityResult拿到URI后调用getContentResolver().takePersistableUriPermission(link, Intent.FLAG_GRANT_READ_URI_PERMISSION),就算重启应用后依然可以正常访问该URI。
内容的提问来源于stack exchange,提问作者qarasique
相关产品推荐
相关产品推荐

