类android.content.pm.IPackageInstallObserver源码实例Demo

下面列出了怎么用android.content.pm.IPackageInstallObserver的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: YalpStore   文件: InstallerPrivilegedReflection.java
@Override
protected void install(App app) {
    PackageManager pm = context.getPackageManager();
    Class<?>[] types = new Class[] {Uri.class, IPackageInstallObserver.class, int.class, String.class};
    try {
        pm.getClass().getMethod("installPackage", types).invoke(
            pm,
            Uri.fromFile(Paths.getApkPath(context, app.getPackageName(), app.getVersionCode())),
            new InstallObserver(),
            INSTALL_REPLACE_EXISTING,
            BuildConfig.APPLICATION_ID
        );
    } catch (NoSuchMethodException | IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
        fail(e, app.getPackageName());
    }
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    final VerificationParams verificationParams = new VerificationParams(null, null,
            null, VerificationParams.NO_UID, null);
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, verificationParams, null);
}
 
@Override
public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
        int flags, String installerPackageName, Uri verificationURI,
        ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
    final VerificationParams verificationParams = new VerificationParams(verificationURI, null,
            null, VerificationParams.NO_UID, manifestDigest);
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, verificationParams, encryptionParams);
}
 
@Override
public void installPackageWithVerificationAndEncryption(Uri packageURI,
        IPackageInstallObserver observer, int flags, String installerPackageName,
        VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) {
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, verificationParams, encryptionParams);
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    try {
        mPM.installPackage(packageURI, observer, flags, installerPackageName);
    } catch (RemoteException e) {
        // Should never happen!
    }
}
 
@Override
public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
        int flags, String installerPackageName, Uri verificationURI,
        ManifestDigest manifestDigest) {
    try {
        mPM.installPackageWithVerification(packageURI, observer, flags, installerPackageName,
                verificationURI, manifestDigest);
    } catch (RemoteException e) {
        // Should never happen!
    }
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    final VerificationParams verificationParams = new VerificationParams(null, null,
            null, VerificationParams.NO_UID, null);
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, verificationParams, null);
}
 
@Override
public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
        int flags, String installerPackageName, Uri verificationURI,
        ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
    final VerificationParams verificationParams = new VerificationParams(verificationURI, null,
            null, VerificationParams.NO_UID, manifestDigest);
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, verificationParams, encryptionParams);
}
 
@Override
public void installPackageWithVerificationAndEncryption(Uri packageURI,
        IPackageInstallObserver observer, int flags, String installerPackageName,
        VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) {
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, verificationParams, encryptionParams);
}
 
源代码10 项目: Demo_Public   文件: ApplicationManager.java
public ApplicationManager(Context context) throws SecurityException, NoSuchMethodException {
	
       observer = new PackageInstallObserver();
       observerdelete = new PackageDeleteObserver(); 
       pm = context.getPackageManager();
       
       Class<?>[] types = new Class[] {Uri.class, IPackageInstallObserver.class, int.class, String.class};
       Class<?>[] uninstalltypes = new Class[] {String.class, IPackageDeleteObserver.class, int.class};
       
	method = pm.getClass().getMethod("installPackage", types);
	uninstallmethod = pm.getClass().getMethod("deletePackage", uninstalltypes);
}
 
@Override public void call(Subscriber<? super Void> subscriber) {
  final IPackageInstallObserver.Stub silentObserver = new IPackageInstallObserver.Stub() {
    @Override public void packageInstalled(String packageName, int returnCode)
        throws RemoteException {
      if (returnCode == INSTALL_SUCCEEDED) {
        if (!subscriber.isUnsubscribed()) {
          subscriber.onNext(null);
          subscriber.onCompleted();
        }
      } else {
        if (!subscriber.isUnsubscribed()) {
          subscriber.onError(
              new InstallationException("Package not installed with error code: " + returnCode));
        }
      }
    }
  };

  if (isSystem(context)) {
    try {
      Method installPackage = packageManager.getClass()
          .getMethod("installPackage", Uri.class, IPackageInstallObserver.class, int.class,
              String.class);
      Object[] params = new Object[] { packageUri, silentObserver, INSTALL_REPLACE_EXISTING, "" };
      installPackage.invoke(packageManager, params);
    } catch (Exception e) {
      if (!subscriber.isUnsubscribed()) {
        subscriber.onError(new InstallationException(e));
      }
    }
  } else {
    if (!subscriber.isUnsubscribed()) {
      subscriber.onError(new InstallationException("Aptoide does not hold system privilege!"));
    }
  }
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, mContext.getUserId());
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, mContext.getUserId());
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, mContext.getUserId());
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, mContext.getUserId());
}
 
@Override
public void installPackage(Uri packageURI, IPackageInstallObserver observer, int flags,
                           String installerPackageName) {
    installCommon(packageURI, new LegacyPackageInstallObserver(observer), flags,
            installerPackageName, mContext.getUserId());
}
 
 类所在包
 同包方法