我已在我的应用raw/my_pdf.pdf
中放置了一个pdf文件,以防止被复制,并希望在我的平板电脑中使用外部应用打开它
这是我试过的:
public void loadDocInReader(View v)
throws ActivityNotFoundException, Exception {
try {
Intent intent = new Intent();
intent.setPackage("com.foobnix.pro.pdf.reader");
intent.setDataAndType(Uri.parse("raw/my_pdf.pdf"), "application/pdf");
startActivity(intent);
} catch (ActivityNotFoundException activityNotFoundException) {
activityNotFoundException.printStackTrace();
throw activityNotFoundException;
} catch (Exception otherException) {
otherException.printStackTrace();
throw otherException;
}
}
此方法启动我想要的外部应用程序但没有pdf文件只是一个空白页
我也知道可以将其作为输入流:
InputStream raw = getResources().openRawResource(R.raw.my_pdf)
但如何使用我指定的应用程序打开它
有没有办法解决这个问题
答案 0 :(得分:1)
我正在努力解决同样的问题。我发现您需要设置一个内容提供程序,公开您的某些文件/文件夹以供其他应用程序访问。
通常,Android应用程序将其文件封装在沙盒中,该沙箱无法从系统上安装的其他应用程序访问(一些解决安全问题的聪明方法)。因此,您需要通过内容提供商公开它们。
试试这个:
我今晚要实施它...祝你好运!
答案 1 :(得分:0)
下面的代码将确定用户设备上是否存在合适的应用程序,而不会捕获异常。如果存在,它将使用合适的应用程序打开pdf文件。
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("path-to-document"));
intent.setType("application/pdf");
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);
if (activities.size() > 0) {
startActivity(intent);
} else {
// Do something else here. Maybe pop up a Dialog or Toast
}