0%

Android开发 PackageManager.installPackage安装成功没有回调的解决

通过调用隐藏Api,PackageManager.installPackage(Uri packageURI, IPackageInstallObserver observer, int flags, String installerPackageName); 可以实现静默安装应用,根据参数说明observer是在安装完成后(成功或失败)回调的,第一次我在调用installPackage的Activity里实现IPackageInstallObserver接口,再把它当作IPackageInstallObserver传给installPackage方法,奇怪的是,不管安装成功或失败,都没有回调IPackageInstallObserver的packageInstalled,也没找到这部分的源代码(在源代码里只看到一个aidl文件).网上看到一篇文章,传入的参数是IPackageInstallObserver.Stub,一个实现IPackageInstallObserver接口的抽象类。改成IPackageInstallObserver.Stub,确实收到了回调。暂时不知道为什么直接实现IPackageInstallObserver不行,但是IPackageInstallObserver.Stub继承了android.os.Binder,而IPackageInstallObserver也有一个抽象的asBinder方法,估计是需要先在asBinder里做些处理,没看到源代码,不好判断。