Неявное намерение удалить приложение?
Я пытаюсь использовать вызов 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);
но синтаксис неверен. Попробовали несколько разных способов назвать это, и я застрял. Не уверен, как это назвать. Благодарим за помощь.
Ответы
Ответ 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.ACTION_UNINSTALL_PACKAGE
на Intent.ACTION_DELETE
, как это делает @goto10.
Ответ 2
Вместо этого попробуйте ACTION_DELETE. Это предлагает этот пример.
EDIT: Я просто испытал это сам, и он отлично работал.
Ответ 3
В Api Demos похоже, что они дают полный путь к активности, а не только сам пакет. Это кажется странным, потому что в манифесте этого проекта активность helloactivity
не объявляется. Возможно, это просто путь к пакету...
Однако добавьте дополнительные EXTRA_RETURN_RESULT
в true
в свои намерения, затем запустите действие для результата и проверьте код результата, возможно, он вернет поле кода/дополнительного поля в намерении данных, говоря, что такое ошибка ( Прочитайте в документации для этого)