我有一个Android应用程序,我在WebView中截取PDF文件下载事件,使用DownloadManager下载它,并使用Adobe Reader启动新意图以显示该文件。它工作正常,但Adobe Reader启动时,它会在显示实际文件之前显示以下消息:
只读文档|要修改此文档,请在设备上保存副本。 保存|查看只读
解除此提示后,文档会正确显示。如何摆脱只读提示?
这是我的代码:
public class MyDownloadListener implements DownloadListener {
MainActivity activity;
BroadcastReceiver receiver;
DownloadManager downloadManager;
public MyDownloadListener(MainActivity a) {
activity = a;
downloadManager = (DownloadManager) activity.getSystemService(Context.DOWNLOAD_SERVICE);
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
Query query = new Query();
query.setFilterById(downloadId);
Cursor c = downloadManager.query(query);
if (c.moveToFirst()) {
int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
if (DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) {
String uriString = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));
File fileSrc = new File(uriString);
Intent intentPdf = new Intent(Intent.ACTION_VIEW);
intentPdf.setDataAndType(Uri.fromFile(fileSrc), "application/pdf");
intentPdf.setPackage("com.adobe.reader");
intentPdf.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.startActivity(intentPdf);
}
}
}
}
};
activity.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Request request = new Request(Uri.parse(url));
downloadManager.enqueue(request);
}
}
答案 0 :(得分:0)
此类包含请求新内容所需的所有信息 下载。 URI是唯一必需的参数。 请注意 默认下载目标是系统可能的共享卷 如果需要回收系统使用空间,请删除文件。如果这 是一个问题,在外部存储上使用一个位置(参见 setDestinationUri(Uri)
因此,默认位置更多是缓存位置,如果需要更多空间,系统可以删除该文件。因此,如果您想要关闭文件,那么您可以使用setDestinationUri
来提供SD卡中的路径..
看起来默认空间不允许任何其他线程/进程,然后下载管理器在该空间中写入文件,因此来自adobe reader的只读消息..