2015-11-04 86 views
1

我正在使用以下代碼從我的應用程序安裝應用程序。以編程方式從相同的應用程序本身安裝更新的APK。[更新apk]

Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/InstallTest.apk")), "application/vnd.android.package-archive"); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 

讓上面的代碼包是com.xyz.one。 現在,如果我使用所提到的代碼安裝任何其他包應用程序,那麼它工作正常。 但是,如果我嘗試相同的應用程序的更新的apk版本相同的代碼,即com.xyz.one,那麼它會給出「解析軟件包時出現問題」。

有人請幫助我如何從相同的應用程序本身以編程方式安裝apk。

注意:我的更新apk存在於外部存儲器中。

謝謝

+0

你試過安裝apk手動? –

+0

@DhavalPatel是手動它正在安裝。 –

回答

0

您是否嘗試過使用動作ACTION_INSTALL_PACKAGE

您可以使用它來直接啓動應用程序安裝程序,並使用幾個參數來控制apk文件和安裝選項。

EXTRA_INSTALLER_PACKAGE_NAMEEXTRA_NOT_UNKNOWN_SOURCEEXTRA_ALLOW_REPLACEEXTRA_RETURN_RESULT

+0

雅我已經嘗試過,但似乎並沒有工作。 –

0

下面的代碼工作對我很好,我想你可能會錯過文件://前綴

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse("file://"+path), "application/vnd.android.package-archive"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
0

如果你有本地文件在手機或你可以在編程前下載:

Intent intent = new Intent(Intent.ACTION_VIEW); 

     intent.setDataAndType(
      Uri.fromFile(
         new File(Environment.getExternalStorageDirectory() + "/download/" + "NameOfFille.apk") 
      ), "application/vnd.android.package-archive"); 

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);