显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
我一直在寻找这个,但我无法让它正常工作.让我解释.
我有一个Android应用程序,可以将文件(图像,文档,…)保存在缓存目录中.起初我曾经使用getExternalCacheDir()方法并将它们保存在那里,但因为它应该缓存在没有SD卡的设备上,所以我必须使用getCacheDir().
当我以前使用getExternalCacheDir()方法时,在这样的另一个应用程序中打开这些文件是没有问题的:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), mimetype);
但是在使用getCacheDir()时,这些文件将保存在应用程序沙箱中,并且无法从应用程序外部访问.所以我用谷歌搜索了它,然后来了** ContentProvider. ContentProvider可以使用外部应用程序打开私有文件.但是当我尝试实现它时,它不起作用.
package com.myapplication.providers;
import java.io.File;
import java.io.FileNotFoundException;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
public class FileProvider extends ContentProvider {
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
File privateFile = new File(getContext().getCacheDir(), uri.getPath());
return ParcelFileDescriptor.open(privateFile, ParcelFileDescriptor.MODE_READ_ONLY);
}
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
return 0;
}
@Override
public String getType(Uri arg0) {
return null;
}
@Override
public Uri insert(Uri arg0, ContentValues arg1) {
return null;
}
@Override
public boolean onCreate() {
return false;
}
@Override
public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
String arg4) {
return null;
}
@Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
return 0;
}
}
将此提供程序添加到应用程序清单
android:name="com.myapplication.providers.FileProvider"
android:authorities="com.myapplication"
android:exported="true" />
并使用此代码打开文件:
Uri uri = Uri.parse("content://com.myapplication/" + filename);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(uri, mimetype);
提前致谢!
显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件相关推荐
- 各种浏览器的缓存文件的位置和修改缓存目录的方法
一.手动清空缓存 1.Opera 清除Opera浏览器的缓存的方法:打开Opera,工具->首选项->高级->历史->点击立即清空按钮就可以清除Opera浏览器的缓存. 2.I ...
- android 访问存储卡,Android:无法访问存储在SD卡中的文件
我正在研究一个读取存储在SD卡(内部/数据/本地)中的.txt文件的应用程序.我遇到的问题是,它似乎可以访问文件路径,但它不能访问文件本身(尽管它具有读取和写入权限),但会引发FileNotFound ...
- java中打开文件显示_在默认文件资源管理器中打开文件,并使用JavaFX或普通Java突出显示它...
我想做标题所说的. 部分解决方案 例如,在Windows中,您可以使用以下代码在默认资源管理器中打开文件并突出显示它. (虽然它需要修改包含空格的文件): /** * Opens the file w ...
- android上传sd卡文件格式,Android开发学习:向模拟器的sdcard中添加文件
向模拟器的sdcard中添加文件有两种方法: 1.在eclipse的DDMS视图中操作 启动eclipse---打开DDMS视图---选择File Explorer,出现下面的窗口 选中sdcard文 ...
- python显示目录中的文件_Python中的文件和目录操作实现
Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...
- android activity从新打开,【Android开发-8】生命周期,Activity中打开另一个Activity
前言:生命中有不少人陪伴本身走过一辈子中的某段旅程,仅仅是有些人仅仅是某阶段出现,有些人却陪伴本身很是久.就像小学.中学.高中.大学,那些之前觉得会长久拥有的,当经历过天涯各地地忙碌于生活,或如意.或 ...
- android studio 2.3.1 r丢失,AndroidStudio中 R文件缺失的办法
flex自适应小例子 libcurl使用easy模式阻塞卡死等问题的完美解决 引言: 由于要在android手机测进行DM开发, 其中最重要的就是FUMO和SCOMO下载, 下载使用的是linux开源 ...
- 将android程序写入内存,android中将数据写入手机内存和sdcard中的文件
在android中一般有两种方式: 第一种是写入手机内存的文件,这种方式,文件的存取路径都是在应用包下的 files 文件夹下,其路径是固定的,并不受程序员控制的, FileOutputStream ...
- Android 使用MediaPlayer播放assets或者raw目录的音频文件
不废话,需求:当接收到推送消息时,播放apk自带的声音,怎么办? 首先接入极光推送,我前几篇文章已经讲了,不会的自己去看.在MyReceiver里的public void onReceive(Cont ...
最新文章
- pci串口驱动安装失败_TSC TTP-243E Pluse装LTP并口驱动无法安装
- C#读写word,文段及表格
- 解决Spring Cloud中Feign/Ribbon第一次请求失败的方法
- 2015-03-19 My Appointment text read case
- java pdf添加图片水印图片_Java 在PDF中添加文本水印、图片水印
- 判断鼠标不在控件上_VB常用控件属性讲解单选按钮、复选框总结
- python中异或运算_python – 基于ID列表有效计算XOR(^)校验和的方法
- java如何脱离ide运行_如何脱离IDE使用自己的jar包?
- 5、main方法详解
- tsung压测mysql_高并发测试工具Tsung使用教程
- es的node内存设置
- OpenSSH学习笔记(安装配置openssh-4.6p1)[zz]
- c语言对字符串逆序,【C语言】 字符串逆序
- 去掉输入法上的CH和EN
- java学生成绩降序代码_输入5名学员成绩,降序排列输出
- python 霍夫直线变换_霍夫线变换
- BDTC2014中国大数据技术大会 会议记录
- Revit插件推荐[一]
- 机器人运动学逆解中最常用的三角方程(附代码)
- Unity 上传自定义头像
热门文章
- 030_jdbc-mysql事务
- mysql导入数据表大小限制,解除phpMyAdmin导入大型MySQL数据库文件大小限制
- mysql按特定的顺序_如何在MySQL中按特定顺序排列数据?
- 升级bios_ThinkPad如何升级BIOS?我来教你!
- 牛客java面试题总结版(四)
- 在linux下Qt使用sqlite,QT中SQLite使用【实例】
- php电商交押金的逻辑,PHP高并发下抢购、秒杀功能的超卖问题
- 计算机专业大学排名_计算机专业大学排名公布:大连大学、辽宁师范大学冲进前一百...
- c语言循环程序设计教案,10 《C语言程序设计》教案 第三章 程序的控制结构(6)—循环结构 while和do while.doc...
- java并发性是指什么_java – 什么是“非阻塞”并发,它与普通并发性有什么不同?...