最近研究了一下静默安装和卸载apk,我只做了一个简单的静默安装与卸载

具体的研究可以参照我学习的网址在文章最后

下面是我自己的参照别人的文章试出来的代码可以用的。

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);		String f = Environment.getExternalStorageDirectory().getPath();
		f = f + "/apk/aa.apk";
		System.out.println(f);
		installApk(this, f);		String pn = getapkpackagename(f);
		uninstallApk(this, pn);
	}	// 获取apk文件的信息
	private String getapkpackagename(String f) {
		String filePath = f;
		PackageManager packageManager = getPackageManager();
		PackageInfo packageInfo = packageManager.getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES);		System.out.println(packageInfo.toString());
		return packageInfo.packageName;
	}	// 卸载apk
	public static void uninstallApk(Context context, String packageName) {
		Uri uri = Uri.parse("package:" + packageName);
		Intent intent = new Intent(Intent.ACTION_DELETE, uri);		context.startActivity(intent);
	}
	// 安装apk
	public static void installApk(Context context, String fileName) {		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		intent.setDataAndType(Uri.parse("file://" + fileName), "application/vnd.android.package-archive");
		context.startActivity(intent);
	}

 

还有添加一下权限

<!-- 安装、卸载相关权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
    <!-- 安装、卸载相关权限 -->

我自己测试发现安装和卸载都可以用。