2011-03-12 48 views
5

我正在開發一個使用多個第三方應用程序的Android應用程序,這些應用程序由意圖調用,例如,第三方日曆,網絡視頻等。因此,爲了正確啓動這些意圖,需要安裝這些應用程序。在我的應用程序中包含這些應用程序以便它們自動安裝時是否可行? 這似乎是一個相當糟糕的方式讓用戶手動安裝這些應用程序...在一個應用中捆綁多個應用程序

有什麼建議嗎?

感謝 彼得

回答

7

是否possbile包括那些的APK我的應用程序,使它們自動安裝好時,我的應用程序是安裝?

這可能不是一個好主意。

對於初學者來說,這可能是版權侵犯,除非你有這些開發者的明確許可。

然後,這些開發者是否確實暴露了一個API,他們期望您使用這種方式,以及該API對他們是唯一的還是屬於通用系統的一部分(例如,ACTION_SEND)。用戶應該能夠安裝他們想要的任何應用程序,以滿足通用的Intent請求(例如,ACTION_SEND),並且不會被迫使用您指定的某個應用程序。而且,您不應該將應用程序集成到不公開已記錄且受支持的API或以其他方式表明他們對此類集成感興趣的應用程序。

然後,如果這些應用程序最初並未通過某些標準分發服務(例如Android Market)安裝,那麼這些應用程序是否可以稍後更新。

然後,所有這些APK文件都會讓您自己的APK文件變大,佔用設備上更多的空間。

如果你可以通過所有這一切,它應該是可能的。將APK打包爲資產,首先將它們複製到外部存儲,然後通過startActivity()使用正確的MIME類型在其上啓動ACTION_VIEWIntent

但是,這可能不是一個好主意。

這似乎是一個相當糟糕的方式讓用戶手動安裝這些應用程序...

理想情況下,你的應用程序不應該依賴於這些其他應用程序,所以它沒有多大關係是否用戶擁有或不擁有。您可以通過PackageManagerqueryIntentActivities()檢測它們是否在那裏,然後使用它來確定是否要禁用應用程序的某些部分,或者指導用戶安裝額外的應用程序等。

+0

下面是一個體面的用例:讓我們來說說我的應用取決於ZXing條碼掃描器(http://code.google.com/p/zxing/)。他們似乎鼓勵其他應用程序通過Intents(http://code.google.com/p/zxing/wiki/ScanningViaIntent)依賴他們的應用程序。將掃描儀與我的應用程序捆綁在一起會很好,特別是如果我懷疑用戶第一次使用它時可能沒有網絡連接。儘管你描述的困難,你認爲這將有資格捆綁嗎? – 2011-03-16 15:27:44

+0

@Jan Zankowski:恕我直言,這是爲什麼*不*要捆綁的一個很好的例子。ZXing希望通過APK集成Barcode Scanner的原因恰恰就是他們可以更新應用程序。這就是爲什麼他們要爲集成JAR提供自動檢測邏輯和市場支持。如果您對用戶自己安裝條碼掃描器不以爲意,那麼至少將ZXing直接集成到您自己的代碼中,因爲它是開源的,所以您不會浪費額外的空間。不過,最終,條碼掃描儀是否可以按照您的要求發貨對於ZXing來說是一個問題。 – CommonsWare 2011-03-16 16:59:46

+0

我有類似的情況。我想避免在C#中編寫太多的共享代碼,所以我正考慮在C#中完成一些代碼,其餘部分在JAVA中,並使用意圖一起討論。因此將兩個apk文件合併成一個文件是有意義的。 – slott 2012-06-22 05:28:13

相關問題