2013-06-05 189 views
0

我需要創建一個應用程序,它將安裝我創建的一些apk(名稱是myapp.apk)文件。 (我單獨檢查了myapp.apk,它工作正常)通過另一個應用程序安裝一個android應用程序

我在res文件夾內創建了一個文件夾raw,並將myapp.apk文件放在那裏。 我下面的代碼添加到我的應用程序:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File("R.raw.myapp")), "application/vnd.android.package-archive"); 

但我發現了在模擬器上出現的語法錯誤(日食Android模擬器)。

我感謝你的幫助

回答

0

首先,R.raw.myapp不是一個文件。它是原始資源的整數標識符。

其次,您無法從資源(或資產或ContentProvider)安裝APK。它必須是文件系統上的文件,可被其他進程讀取。

因此,使用getResources().openRawResource()在您的APK上獲得InputStream,將其寫入外部存儲,然後在您的Intent的外部存儲中使用該文件。

+0

感謝您的回答。 是否可以從內部存儲中讀取它? 基本上我想做的事情(以及如何正確處理這個問題非常困惑)是,其他應用程序將能夠(當給出我的應用程序的SDK和apk)添加到他們的應用程序,這樣做,我的應用程序也可以安裝。 (我的應用程序是一個簡單的,只是創建我的網站的Web視圖)。 再次感謝 – dev

+0

@dev:「是否可以從內部存儲中讀取它?」 - 只有當你跳過籃球讓世界可讀。說白了,你的描述聽起來很像惡意軟件(應用程序B作爲運行應用程序A的一部分安裝)。如果您的應用「僅創建了[您的]網站的web視圖」,那麼只需將您的「sdk」將您網站的URL發佈到用戶選擇的瀏覽器中,然後徹底轉儲install-the-APK方法。 – CommonsWare

相關問題