使用APK

时间:2018-03-27 08:39:00

标签: java android

我需要从我自己的应用中触发某个应用的卸载。我唯一拥有的是应用apk,即使它不必与安装的应用程序版本相同。
卸载将由android当然处理。就像从给定的apk文件安装应用程序一样。

有没有办法如何组合一个意图让android打开负责任的系统服务,并要求用户卸载或类似的东西?

要卸载的应用程序可以更改,因此我无法使用常量程序包名称或类似名称。

有没有办法做到这一点?我知道你可以从apk中提取packagename,但它似乎很多工作,可能有点过分。

2 个答案:

答案 0 :(得分:1)

使用Intent.ACTION_DELETE意图

Intent intent = new Intent(Intent.ACTION_DELETE);
intent.setData(Uri.parse("package:com.example.mypackage"));
startActivity(intent);

您可以从上下文中获取自己的包名称;

getApplicationContext().getPackageName();

答案 1 :(得分:1)

如果要卸载应用程序,那么必须安装它吗?你可以获得所有已安装的应用程序及其软件包名称以及图标,路径,启动器活动等其他信息...并要求用户选择他们想要卸载的应用程序,以便您知道该软件包该应用的名称。

你可以像这样获得已安装的应用程序列表

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package :" + packageInfo.packageName);
    Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
    Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 
}

无法从APK

卸载应用

修改

PackageManager类中查看此方法:

public PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags)

对于阅读包档案很有用。不确定这是否是你想要的。