您当前的位置: 首页 >  android

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android】【打开方式】Android11用其它应用打开微信文件

命运之手 发布时间:2021-08-24 17:34:53 ,浏览量:1

注册自己的Activity

通过mimeType和scheme,可以将自己的Activity与特定格式的内容和协议关联起来,从而用自己的Activity去打开这些内容

mimeType指的是内容格式,比如是txt,还是doc,还是ppt等

scheme指的是协议格式,比如是file,还是http等


	
	
	    
	        
	        
	        
	    
	

获得资源URI

在Activity中通过以下代码,就可以获得打开的资源对应的URI


	//获得资源URI
	Uri uri = getIntent().getData();

微信URI转文件路径

微信文件的URI,是通过FileProvider分享出去的,我们通过URI,可以获得实际对应的文件位置

但从Android11开始,由于系统权限管理的力度加强,微信的文件已经存放到私有目录

所以我们就算能通过URI拿到文件路径,也不能读取这个文件

只有通过ContentResolver,才能正常访问FileProvider提供的资源


	//通过微信URI解析文件地址
	public static String uriToFile(Context context, Uri uri) {
	    //获得ContentResolver,用于访问其它应用数据
	    ContentResolver resolver = context.getContentResolver();
	    //获得URI路径
	    String pathUri = uri.getPath().toLowerCase();
	    //解析微信文件路径
	    if (uri.toString().toLowerCase().startsWith("content://com.tencent.mm.external.fileprovider/external/")) {
	        String file = ProjectFile.getProjectFile("cache/" + Files.getFileName(pathUri));
	        InputStream is = resolver.openInputStream(uri);
	        OutputStream os = new FileOutputStream(file);
	        Streams.write(is, os);
	        return file;
	    }
	    return null;
	}


	//将输入流的数据拷贝到输出流
	public static void write(InputStream is, OutputStream os) {
	    byte[] buffer = new byte[1024 * 1024];
	    while (true) {
	        int len = is.read(buffer);
	        if (len             
关注
打赏
1654938663
查看更多评论
0.0409s