我知道此类问题已在 SO 上多次回答。但我无法找到适合我要求的答案。
我需要知道客户端上是否安装了 Adobe Reader for Android。如果没有从应用程序触发阅读器的安装,然后查看 pdf...
我在 Android 上有点像新手...感谢您使用代码流程..
感谢你..
我知道此类问题已在 SO 上多次回答。但我无法找到适合我要求的答案。
我需要知道客户端上是否安装了 Adobe Reader for Android。如果没有从应用程序触发阅读器的安装,然后查看 pdf...
我在 Android 上有点像新手...感谢您使用代码流程..
感谢你..
如果您想在未安装 Reader 的情况下链接到市场,您可以在 Activity 中触发此 Intent:
Intent marketIntent = new Intent(Intent.ACTION_VIEW)
.setData(Uri.parse("market://details?id=com.adobe.reader"));
startActivity(marketIntent);
查看 PDF 有点棘手:
Intent showPDFIntent = new Intent();
showPDFIntent.setPackage("com.adobe.reader");
showPDFIntent.setDataAndType(Uri.fromFile(myPDFFile), "application/pdf");
startActivity(showPDFIntent);
我希望这有帮助。
最好的祝愿,蒂姆
嗨 Kunal 我已经为你写了一些代码请交叉验证因为我还没有测试过
public static final String QUICK_OFFICE_URL = "https://market.android.com/search?q=quick+office&so=1&c=apps";
public static final String QUICK_OFFICE_TRIAL_PACKAGE = "com.qo.android.am3.trial";
public static final String QUICK_OFFICE_PACKAGE = "com.qo.android.am3";
public static final String ADOBE_READER_URL="https://market.android.com/search?q=adobe+reader&so=1&c=apps";
public static final String ADOBE_READER_PACKAGE="com.adobe.reader";
public static final String DOCUMENTS_TO_GO_PACKAGE = "com.dataviz.docstogo";
public static final String GOOGLE_DOCUMENT_PACKAGE ="com.google.android.apps.docs";
public static final String OPEN_OFFICE_PACKAGE = "at.tomtasche.reader";
public static final String BEAMREADER_PACKAGE = "com.slgmobile.beamreader";
public static final String PDFVIEWER_PACKAGE = "mobi.mgeek.pdfviewer";
public static final String ANDROID_PDF_VIEWER_PACKAGE = "net.sf.andpdf.pdfviewer";
public static final String EZ_READER = "udk.android.reader";
public static final String PDF_VIEWER = "com.dzepina.pdfviewer";
private void openFileForReading(File file, String extension) {
Log.v(TAG, " openFileForReading(File file, String extension)");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
if (extension.equalsIgnoreCase("pdf")) {
Log.v(TAG, " file extension is .pdf");
if (appInstalledOrNot(Common.ADOBE_READER_PACKAGE)
|| appInstalledOrNot(Common.BEAMREADER_PACKAGE)
|| appInstalledOrNot(Common.PDF_VIEWER)
|| appInstalledOrNot(Common.PDFVIEWER_PACKAGE)
|| appInstalledOrNot(Common.EZ_READER)) {
intent.setDataAndType(Uri.fromFile(file), "application/*");
startActivity(intent);
} else {
showAlertDialog(Common.ADOBE_READER_URL, file);
}
} else if (extension.equalsIgnoreCase("doc")) {
Log.v(TAG, " file extension is .doc");
if (appInstalledOrNot(Common.QUICK_OFFICE_PACKAGE)
|| appInstalledOrNot(Common.DOCUMENTS_TO_GO_PACKAGE)
|| appInstalledOrNot(Common.GOOGLE_DOCUMENT_PACKAGE)
|| appInstalledOrNot(Common.OPEN_OFFICE_PACKAGE)) {
intent.setDataAndType(Uri.fromFile(file), "application/*");
startActivity(intent);
} else {
showAlertDialog(Common.QUICK_OFFICE_URL, file);
}
} else if (extension.equalsIgnoreCase("docx")) {
Log.v(TAG, " file extension is .docx");
if (appInstalledOrNot(Common.QUICK_OFFICE_PACKAGE)
|| appInstalledOrNot(Common.DOCUMENTS_TO_GO_PACKAGE)
|| appInstalledOrNot(Common.GOOGLE_DOCUMENT_PACKAGE)
|| appInstalledOrNot(Common.OPEN_OFFICE_PACKAGE)) {
intent.setDataAndType(Uri.fromFile(file), "application/*");
startActivity(intent);
} else {
showAlertDialog(Common.QUICK_OFFICE_URL, file);
}
} else {
intent.setDataAndType(Uri.fromFile(file), "application/*");
startActivity(intent);
}
}
private void showAlertDialog(final String uri, final File file) {
AlertDialog.Builder dialog = new AlertDialog.Builder(
DocumentsActivity.this);
dialog.setTitle("No Application Found !!!");
dialog.setMessage("Install App From Market");
dialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(uri));
startActivity(intent);
}
});
dialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/*");
startActivity(intent);
dialog.cancel();
}
});
dialog.show();
}
private boolean appInstalledOrNot(String packageName) {
PackageManager pm = getPackageManager();
boolean app_installed = false;
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
app_installed = true;
} catch (PackageManager.NameNotFoundException e) {
app_installed = false;
}
return app_installed;
}