2012-02-28 39 views
6

現在我正在開發一個應用程序。通過我的應用程序用戶可以閱讀PDF文件,如果PDF閱讀器不存在,那麼我的應用程序會自動從網站安裝它。 這是我用來閱讀pdf文件的代碼。如何以編程方式下載adobe reader(如果不存在)

File file = new File("/sdcard/sample.pdf"); 
PackageManager packageManager = getPackageManager(); 
Intent testIntent = new Intent(Intent.ACTION_VIEW); 
testIntent.setType("application/pdf"); 
List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY); 
if (list.size() > 0 && file.isFile()) { 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    Uri uri = Uri.fromFile(file); 
    intent.setDataAndType(uri, "application/pdf"); 
    startActivity(intent); 
} 

我的疑惑是:

  1. 如何檢查有安裝在手機或不是的Adobe Reader?
  2. 如何以編程方式在手機上安裝Adobe Reader?

回答

19

從你的代碼中的一些併發症..

使用此代碼,

Intent intent; 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(file, "application/pdf"); 
     try { 
      startActivity(intent); 
     } catch (ActivityNotFoundException e) { 
      // No application to view, ask to download one 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("No Application Found"); 
      builder.setMessage("Download one from Android Market?"); 
      builder.setPositiveButton("Yes, Please", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          Intent marketIntent = new Intent(Intent.ACTION_VIEW); 
          marketIntent 
            .setData(Uri 
              .parse("market://details?id=com.adobe.reader")); 
          startActivity(marketIntent); 
         } 
        }); 
      builder.setNegativeButton("No, Thanks", null); 
      builder.create().show(); 
     } 
    } 
+0

感謝ü非常.....我在emulater測試我們的代碼......這alertdialog箱來。而我按OK,然後它給例外..什麼ü認爲...它是因爲我在測試emulater ..它會在手機中工作嗎? – sarath 2012-02-28 10:50:02

+0

這是我已經做到了以前 – TerryProbert 2012-02-28 10:50:09

+0

@sarath模擬器不來與市場應用的方式,請參閱http://stackoverflow.com/questions/3994923/no-marketplace-application-on-the-android-emulator – TerryProbert 2012-02-28 10:53:46

2

我認爲這可以幫助你:

private void loadDocInReader(String doc) throws ActivityNotFoundException, Exception { 

try { 
    Intent intent = new Intent(); 

    intent.setPackage("com.adobe.reader"); 
    intent.setDataAndType(Uri.parse(doc), "application/pdf"); 

    startActivity(intent); 

} 

catch (ActivityNotFoundException activityNotFoundException) { 
      activityNotFoundException.printStackTrace(); 

      throw activityNotFoundException; 
} 
catch (Exception otherException) { 
      otherException.printStackTrace(); 

      throw otherException; 
} 
} 

如果使用Adobe reader沒有安裝你可以將用戶拖到這個網址:

https://market.android.com/details?id=com.adobe.reader

這將在Android Market中打開Adobe Reader時的移動應用。如果用戶想要,他們可以安裝。

相關問題