卸载应用程序的隐含意图?

时间:2011-10-23 19:09:08

标签: android android-intent uninstall

我试图让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);

但语法错误。已经尝试了许多不同的方式来调用它,并且有点卡住了。不知道怎么称呼这个。谢谢你的帮助。

3 个答案:

答案 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,然后启动结果活动并检查结果代码,也许它会在数据意图中返回一个代码/额外字段,说明什么是错误(在文档中阅读)