失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 显示android缓存文件 android – 使用ACTION_VIEW在缓存目录中打开文件

显示android缓存文件 android – 使用ACTION_VIEW在缓存目录中打开文件

时间:2020-08-07 12:20:10

相关推荐

显示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 .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在缓存目录中打开文件》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。