【问题标题】:How to trigger Adobe Reader install on Android Client如何在 Android 客户端上触发 Adob​​e Reader 安装
【发布时间】:2012-04-24 06:22:50
【问题描述】:

我知道这类问题已经在 SO 上回答过很多次了。但我找不到适合我要求的答案。

我需要知道客户端上是否安装了 Adob​​e Reader for Android。如果没有从应用程序触发阅读器的安装,然后查看 pdf...

我是 Android 的新手...感谢您的代码流程..

谢谢你。

【问题讨论】:

    标签: android android-emulator


    【解决方案1】:

    您好 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;
            }
    

    【讨论】:

    • 嗨 Shabbir,虽然蒂姆首先给出了答案,但我接受你的答案,因为其中包含代码...谢谢...
    • 嗨 Shabbir,虽然你有代码但编译错误...什么是“Common”?
    • 只需删除 Common。无论它出现在哪里。您应该在静态字符串常量上方看到它的常识,顺便感谢您扣分。
    • uri 是市场网站上 adobe 阅读器的 id,因此要启动市场应用程序(现在是 Google play),我们需要使用操作视图和 uri 触发意图,请查看 stackoverflow.com/questions/2518740/… 了解如何启动市场应用程序
    【解决方案2】:

    如果您想在未安装 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);
    

    我希望这会有所帮助。

    最好的祝愿, 蒂姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-02
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多