应用的安装方式:adb install或者下载安装
过程分析请参考老罗的blog,这里记录一下第三方应用程序安装apk的过程。
安装的过程主要是调用PackageInstaller这个App,源代码的位置在package/app/PackageInstaller
AndroidManifest.xml如下,<?xml version=”1.0″ encoding=”utf-8″?>
package=”com.android.packageinstaller”>
android:allowBackup=”false”
android:theme=”@android:style/Theme.DeviceDefault.DialogWhenLarge.NoActionBar”>
android:configChanges=”orientation|keyboardHidden|screenSize”
android:excludeFromRecents=”true”>
android:configChanges=”orientation|keyboardHidden|screenSize”>
android:configChanges=”orientation|keyboardHidden|screenSize”
android:excludeFromRecents=”true”
android:theme=”@android:style/Theme.DeviceDefault.Dialog.NoActionBar”>
android:configChanges=”orientation|keyboardHidden|screenSize”>
安装和卸载APP主要用到了PackageInstallerActivity和UninstallActivity。
安装一个应用程序的过程如下:String fileName = Environment.getExternalStorageDirectory() + “/myApp.apk”;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), “application/vnd.android.package-archive”);
startActivity(intent);
卸载一个应用程序的过程如下:Uri packageURI = Uri.parse(“package:com.android.myapp”);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
默认是不支持非市场安装的,这里可判断一下:int result = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.INSTALL_NON_MARKET_APPS, 0);
if (result == 0) {
// show some dialog here
// …
// and may be show application settings dialog manually
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);
startActivity(intent);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35236.html