卸载应用程序的隐含意图?
Posted
技术标签:
【中文标题】卸载应用程序的隐含意图?【英文标题】:Implicit intent to uninstall application? 【发布时间】:2011-12-13 16:25:54 【问题描述】:我试图让 onclicklistener 调用意图来卸载应用程序,方法是让意图从应用程序设置中调用默认的“卸载应用程序”活动。我找到了here 我可以使用 ACTION_UNINSTALL_PACKAGE、com.packageXYXY 卸载应用程序,这似乎是我正在寻找的。 但是,我不确定如何调用它。我尝试了以下方法:
public void onClick(DialogInterface dialog, int which)
Uri packageURI = Uri.parse("package:com.packageName");
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
startActivity(uninstallIntent);
但语法错误。尝试了多种不同的调用方式,但我有点卡住了。不知道怎么称呼这个。感谢您的帮助。
【问题讨论】:
【参考方案1】:首先,请注意 ACTION_UNINSTALL_PACKAGE 仅适用于 android-14(即 Ice Cream Sandwich,Android 4.0)。也就是说,以下代码对我有用:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.view.View;
import android.net.Uri;
import android.content.Intent;
public class TestActivity extends Activity
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView view = (TextView)findViewById(R.id.test_view);
view.setOnClickListener(new View.OnClickListener()
public void onClick(View view)
Uri packageUri = Uri.parse("package:org.klnusbaum.test");
Intent uninstallIntent =
new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
startActivity(uninstallIntent);
);
如果您希望能够在所有版本的 android 平台上执行此操作,只需将 Intent 从 Intent.ACTION_UNINSTALL_PACKAGE
更改为 Intent.ACTION_DELETE
,就像 @goto10 所做的那样。
【讨论】:
谢谢。你知道打开卸载应用程序活动的意图吗? @goto10 是对的(我支持 goto10,感谢您的提示)。我已编辑我的答案以包含该信息。 “android.intent.action.DELETE”和“Intent.ACTION_DELETE”有什么区别? 如果你在清单文件<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
添加了权限就可以了
Android 9 及更高版本需要权限。否则不会出现卸载对话框。只需在清单文件中提及 改用 ACTION_DELETE。这就是this example 的建议。
编辑:我刚刚自己测试过,效果很好。
【讨论】:
this example
的链接已损坏。我正在参考这个问题***.com/questions/11062780/…【参考方案3】:
在Api Demos 中,看起来他们提供了活动的完整路径,而不仅仅是包本身。这看起来很奇怪,因为helloactivity
活动未在该项目的清单中声明。所以也许它只是包路径......
但是,在您的意图中将额外的EXTRA_RETURN_RESULT
设置为true
,然后启动结果活动并检查结果代码,也许它会在数据意图中返回一个代码/额外字段,说明错误是什么(请阅读相关文档)
【讨论】:
以上是关于卸载应用程序的隐含意图?的主要内容,如果未能解决你的问题,请参考以下文章