android apk 靜默安裝

最近作了apk的默認安裝,是在後檯安裝的,主要實現方法以下,要在源碼環境編譯。 android

private void InstallApk(int allcount) {
   AppInfoData info = listapp.get(allcount);//要安裝的列表,我這裏是讀取的配置的json文件
  String fileName = info.apkPath;          //獲得apk的存放路徑,如/mnt/sdcard/hello.apk
  Uri uri = Uri.fromFile(new File(fileName));
  int installFlags = 0;                    
  PackageManager pm = getPackageManager();//獲得包管理實例
  try {
   PackageInfo pi = pm.getPackageInfo(info.packageName,
     PackageManager.GET_UNINSTALLED_PACKAGES);
   if (pi != null) {
    // installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
     installFlags |= 0x00000002;
   }
  } catch (NameNotFoundException e) {
  }

   PackageInstallObserver observer = new PackageInstallObserver();
   pm.installPackage(uri, observer, installFlags, info.packageName);//改方法爲隱藏方法
 } json

實現下面方法,改方法爲安裝完成後的回調方法,能夠在這裏處理ui app

//import android.content.pm.IPackageInstallObserver;要導入改類 ui

  class PackageInstallObserver extends IPackageInstallObserver.Stub {
  public void packageInstalled(String packageName, int returnCode) {
  System.out.println("packageName============>>>>"+packageName);
  System.out.println("returnCode============>>>>"+returnCode); server

    dosomesing(); //安裝完畢,作處理 如sendmessage()  從新調用InstallApk(count)安裝下一個。
   } };  get

 

不須要源碼的方法就簡單了 ,但會有系統安裝的彈框,如: 源碼

protected void installApk(File file) {//file爲絕對路徑
  Intent intent = new Intent();
  intent.setAction(Intent.ACTION_VIEW);
  intent.setDataAndType(Uri.fromFile(file),
    "application/vnd.android.package-archive");
  startActivity(intent);
 }; it

相關文章
相關標籤/搜索