Неявное намерение удалить приложение? - PullRequest
23 голосов
/ 23 октября 2011

Я пытаюсь, чтобы onclicklistener вызывал намерение удалить приложение из-за намерения вызвать действие по умолчанию "удалить приложение" из настроек приложений.Я обнаружил здесь , что я могу удалить приложение, используя 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 ]

50 голосов
/ 24 октября 2011

Прежде всего, обратите внимание, что 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.

19 голосов
/ 23 октября 2011

Попробуйте вместо ACTION_DELETE.Вот что предлагает этот пример .

РЕДАКТИРОВАТЬ: Я только что проверил это сам, и он отлично работал.

0 голосов
/ 23 октября 2011

В Api Demos похоже, что они указывают полный путь к активности, а не только сам пакет. Это кажется странным, потому что helloactivity активность не объявлена ​​в манифесте этого проекта. Так что, возможно, это просто путь к пакету ...

Однако, установите дополнительный EXTRA_RETURN_RESULT в true в своем намерении, затем запустите действие для результата и проверьте код результата, возможно, он вернет код / ​​дополнительное поле в намерении данных, сообщающее, в чем заключается ошибка ( Читайте в документации для этого)

...