Открыть PDF в приложении для Android
Я работаю над приложением, где нужно открыть файл 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.
Ответы
Ответ 1
Поскольку ваш блок catch имеет ActivityNotFoundException, это означает, что у вас нет активности/приложения, которое может читать формат файла приложения /pdf. Установите любой просмотрщик в формате pdf с Android Market (недавно выпустите Adobe), либо используйте вышеупомянутый просмотрщик с открытым исходным кодом, и ваша проблема, скорее всего, будет решена.
http://code.google.com/p/apv/downloads/list
https://market.android.com/details?id=cx.hell.android.pdfview&feature=search_result
Когда вы начинаете работу с вашими параметрами, она ищет все приложения/действия/намерения, зарегистрированные для открытия формата pdf. Поскольку у вас их нет на вашем устройстве, вы получаете ActivityNotFoundException
Ответ 2
Ваш код прав, я также использовал тот же код, чтобы открыть PDF файл в средстве просмотра.
Поскольку у вас нет устройства просмотра, установленного на вашем устройстве, поэтому он не может открываться без какого-либо средства просмотра.
Вы можете установить Adobe reader для Android.
Я не могу открыть файл PDF в эмуляторе, поэтому мне нужно протестировать его с помощью моего устройства.
Ответ 3
Сначала установите устройство чтения 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");
}
}
});
}