路径:
packages\apps\PackageInstaller\src\com\android\packageinstaller\PackageInstallerActivity.java
函数中:
private void startInstallConfirm()
模拟点确认:
if (mScrollView == null) {
// There is nothing to scroll view, so the ok button is immediately
// set to install.
mOk.setText(R.string.install);
mOkCanInstall = true;
mOk.performClick();
} else {
mScrollView.setFullScrollAction(new Runnable() {
@Override
public void run() {
mOk.setText(R.string.install);
mOkCanInstall = true;
mOk.performClick();
}
});
}
路径:
packages\apps\PackageInstaller\src\com\android\packageinstaller\InstallAppProgress.java
位置:
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case INSTALL_COMPLETE:
加上:
mLaunchButton.performClick();
附近部分代码:
if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) {
mLaunchButton.setVisibility(View.VISIBLE);
centerTextDrawable.setLevel(0);
centerTextLabel = R.string.install_done;
// Enable or disable launch button
mLaunchIntent = getPackageManager().getLaunchIntentForPackage(
mAppInfo.packageName);
boolean enabled = false;
if(mLaunchIntent != null) {
List<ResolveInfo> list = getPackageManager().
queryIntentActivities(mLaunchIntent, 0);
if (list != null && list.size() > 0) {
enabled = true;
}
}
if (enabled) {
mLaunchButton.setOnClickListener(InstallAppProgress.this);
} else {
mLaunchButton.setEnabled(false);
}
mLaunchButton.performClick();
} else if (msg.arg1 == PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE){
showDialogInner(DLG_OUT_OF_SPACE);
return;
}
本文深入探讨了Android系统中应用安装的确认与进度处理过程。详细分析了PackageInstallerActivity类中的startInstallConfirm方法如何模拟点击确认安装,以及InstallAppProgress类如何处理安装完成后的消息,包括启动按钮的点击事件与应用安装成功的后续操作。
870

被折叠的 条评论
为什么被折叠?



