我正在开发一个需要在设备中打开pdf文件的应用程序,
我实际上已经在网上获得了与大多数示例类似的代码。但是,问题是我无法打开文件,控件直接进入“异常”部分。
以下是代码:
public class MyPDFDemo extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button OpenPDF = (Button) findViewById(R.id.button);
OpenPDF.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
File pdfFile = new File("/sdcard/Determine_RGB_Codes_With_Powerpoint [PDF Library].pdf");
if(pdfFile.exists())
{
Uri path = Uri.fromFile(pdfFile);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try
{
startActivity(pdfIntent);
}
catch(ActivityNotFoundException e)
{
Toast.makeText(MyPDFDemo.this, "No Application available to view pdf", Toast.LENGTH_LONG).show();
}
}
}
});
}
当我运行此代码时:我曾经看到“没有应用程序可用于查看pdf”。任何人都可以请我查看pdf文件。
答案 0 :(得分:9)
由于您的catch块具有ActivityNotFoundException,这意味着您没有任何可以读取'application / pdf'文件类型格式的活动/应用程序。从Android Market安装任何pdf查看器(Adobe最近发布他们的),或者使用上面提到的开源pdf查看器,你的问题很可能会得到解决。
http://code.google.com/p/apv/downloads/list
https://market.android.com/details?id=cx.hell.android.pdfview&feature=search_result
当您使用给定的参数启动活动时,它会搜索所有已注册为打开pdf格式的应用程序/活动/意图。由于您的设备中没有,因此您将获得ActivityNotFoundException
答案 1 :(得分:2)
您的代码是对的,我也使用相同的代码在查看器中打开pdf文件。
由于您没有在设备上安装查看器,因此无法在没有任何查看器的情况下打开。
您可以为Android安装Adobe reader。
我无法在模拟器中打开pdf文件,因此我必须使用我的设备进行测试。
答案 2 :(得分:2)
首先在设备上安装pdf阅读器。 而不是使用此代码从内部存储器中读取pdf文件。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final TextView tv = (TextView)findViewById(R.id.tv);
Button bt=(Button)findViewById(R.id.openbtn);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File pdfFile = new File(Environment.getExternalStorageDirectory(),"Leave.pdf");
if(pdfFile.exists())
{
Uri path = Uri.fromFile(pdfFile);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try{
startActivity(pdfIntent);
}catch(ActivityNotFoundException e){
tv.setText("No Application available to view PDF");
}
}
else
{
tv.setText("File not found");
}
}
});
}