android靜默安裝apk已經成功實現

         由於公司要求,應用後臺更新下載必須使用靜默安裝,於是邊研究了下。。

         實現靜默安裝必須要2個前提條件:1、必須有對機器的ROOT權限 ; 2、必須有編譯源碼的環境

         具備了以上2個條件就可以實現靜默安裝了。。

        1、首先必須實現一個觀察者的類,來監聽apk安裝成功或者失敗,所以我們先寫一個類去繼承IPackageInstallObserver.Stub,

              由於IPackageInstallObserver.Stub不是開放api,所以我們自己必須在改類前面加import android.content.pm.IPackageInstallObserver;

             具體代碼如下:       

             

class PackageInstallObserver extends IPackageInstallObserver.Stub {
		public void packageInstalled(String packageName, int returnCode) {
			// 該方法裏面可以根據returnCode的值判斷apk安裝成功或者失敗
			// 1表示成功 0表示失敗
			if (returnCode == 1) {
				Log.e(TAG, packageName + " install Success");
			} else {
				Log.e(TAG, packageName + "install fail ");
			}
		}
	}

        2、現在就來看看靜默安裝的方法了

              其中方法中的參數packageName是你需要安裝的應用apk的包名 , path表示apk在本地所在的路徑

              

public void SilentInstall(String packageName, String path) {
		Uri uri = Uri.fromFile(new File(path));
		int installFlags = 0;
		PackageManager pm = getPackageManager();
		try {
			PackageInfo packageInfo = pm.getPackageInfo(packageName,
					PackageManager.GET_UNINSTALLED_PACKAGES);
			if (packageInfo != null) {
				installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
			}
		} catch (NameNotFoundException e) {
			Log.e(TAG, "NameNotFoundException = " + e.getMessage());
		}
		PackageInstallObserver observer = new PackageInstallObserver(); // PackageInstallObserver
																		// 就是1中實現的觀察者類
		pm.installPackage(uri, observer, installFlags, packageName);
	}


           好了,上面2個步驟做好了後在AndroidMainfest.xml加上安裝包的權限
      <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
          加如權限之後就可以編寫Android.mk文件了,這個Android.mk我是從 源碼package/APP/PackageInstaller中的Android.mk拷貝過來,然後將其中的
      LOCAL_PACKAGE_NAME := Test   //其中Test是你項目的名稱

         做完上述所有步驟之後,就可以將這個項目放在源碼環境下編譯了,編譯成成功後會在out\target\product\leader75_6628_ics2\system\app生成改項目的apk

      然後push到system/app或者編譯在升級包裏面就可以使用了。

       注意:單獨編譯項目的時候,可以將一些沒用的文件夾刪除掉,比如gen  bin等,下面圖片就是我編譯之前刪除後的目錄結構

                                                      

         到這裏就結束!!

         

      


       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章