如何實現APK的靜默安裝java
Android上的靜默安裝是個很誘人的功能,可是Android系統的安全策略要求任何應用在安裝時應該提示APK安裝包的權限,僅僅只對於一些內置特定廠商應用,能夠跳過安裝過程的信息加快安裝,或者運營商強制安裝。若是安裝一個普通的APK也想實現靜默安裝,那麼應該怎麼辦呢?android
Android系統主控應用程序安裝的是PackageManager,咱們平時在安卓手機上看到的安裝界面是系統自帶的PackageInstaller.apk爲咱們提供的。這裏實現靜默安裝的思路是經過修改這個APK中顯示安裝界面的部分來達成實現靜默安裝的目的。這個過程以下:web
(1)首先找到PackageInstaller.apk的源碼,位於packages/apps/PackageInstaller中。以下:安全
這裏須要修改AndroidManifest.xml文件:app
把<application android:label="@string/app_name" spa
android:theme="@android :style/Theme.Holo.DialogWhenLarge">.net
改爲 <application android:label="@string/app_name" >orm
把PackageInstallActivity <activity的主題改成:server
android:theme="@android :style/Theme.NoDisplay"表示沒有窗口。 xml
其它的<activity>……</activity>可根據須要進行調整。
(2)接着進packages/apps/PackageInstaller/src/com/android/packageinstaller
在PackageInstallActivity.java這個Activity中,首先檢查所欲安裝的程序是不是正確的安裝文件,以及當前系統中是否已安裝了此應用程序,提示用戶是否重複安裝,另外還獲取所欲安裝的程序所用到的權限,而後將這些信息經過一個對話框提示給用戶。當用戶肯定安裝時,啓動InstallAppProgress.java這個Activity,在這個Activity中,調用android.content.pm.PackageManager.installPackage(Uri packageURI, IPackageInstallObserver observer, int flags, String installerPackageName)進行安裝應用程序。
這裏須要修改PackageInstallActivity.java,去掉下面的dialog和對話框界面便可。
安裝權限確認窗口:installPermissionConfirm
安裝進度條:installProgress
安裝結果窗口:installResult
安裝錯誤提示對話框
(3)修改完以後進行保存,必須隨系統源碼從新編譯一次。