你的第一个选择是研究 Android 的原生。我建议按照您喜欢的方式修改该应用程序,或者只是提取所需的功能。
具体来说,如果你研究一下及其方法onClickListener
:
public void onClick(View v) {
if(v == mOk) {
// Start subactivity to actually install the application
Intent newIntent = new Intent();
...
newIntent.setClass(this, InstallAppProgress.class);
...
startActivity(newIntent);
finish();
} else if(v == mCancel) {
// Cancel and finish
finish();
}
}
然后你会注意到实际的安装程序位于班级。检查该类你会发现initView
是核心安装程序函数,它所做的最后一件事是调用PackageManager
's installPackage
功能:
public void initView() {
...
pm.installPackage(mPackageURI, observer, installFlags, installerPackageName);
}
下一步是检查,这是抽象类。你会找到installPackage(...)
在那里发挥作用。坏消息是它被标记为@hide。这意味着它不能直接可用(您将无法通过调用此方法进行编译)。
/**
* @hide
* ....
*/
public abstract void installPackage(Uri packageURI,
IPackageInstallObserver observer,
int flags,String installerPackageName);
但您将能够通过反射访问此方法。
如果您有兴趣如何PackageManager
's installPackage
功能已实现,看一下.
Summary
您需要通过以下方式获取包管理器对象Context
's getPackageManager()
。然后你会打电话installPackage
通过反射函数。