我试图让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);
但语法错误。已经尝试了许多不同的方式来调用它,并且有点卡住了。不知道怎么称呼这个。谢谢你的帮助。
答案 0 :(得分:50)
首先,请注意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.ACTION_UNINSTALL_PACKAGE
更改为Intent.ACTION_DELETE
,例如@ goto10。
答案 1 :(得分:19)
请尝试ACTION_DELETE。这就是this example所暗示的。
编辑:我自己测试了这个并且效果很好。
答案 2 :(得分:0)
在Api Demos中,看起来他们正在提供激活的完整路径,而不仅仅是包本身。这看起来很奇怪,因为helloactivity
活动未在该项目的清单中声明。所以也许它只是包路径......
但是,在你的意图中将额外EXTRA_RETURN_RESULT
设置为true
,然后启动结果活动并检查结果代码,也许它会在数据意图中返回一个代码/额外字段,说明什么是错误(在文档中阅读)