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

相关文章
相关标签/搜索