web-dev-qa-db-ja.com

アプリケーションをアンインストールする暗黙の意図?

アプリケーションの設定からデフォルトの「アプリのアンインストール」アクティビティをインテントに呼び出させることで、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);

しかし、構文は間違っています。これを呼び出すためにさまざまな方法を試してみましたが、ちょっと行き詰まっています。これを呼び出す方法がわからない。ご協力いただきありがとうございます。

24
benbeel

まず第一に、ACTION_UNINSTALL_PACKAGEはAndroid-14(つまりアイスクリームサンドイッチ、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プラットフォームのすべてのバージョンでこれを実行できるようにしたい場合は、@ goto10のように、インテントをIntent.ACTION_UNINSTALL_PACKAGEからIntent.ACTION_DELETEに変更するだけです。

52
Kurtis Nusbaum

代わりにACTION_DELETEを試してください。それが この例 が示唆することです。

編集:私はこれを自分でテストしたところ、うまくいきました。

19
goto10

Api Demos では、パッケージ自体だけでなく、アクティビティへの完全なパスを提供しているようです。 helloactivityアクティビティがそのプロジェクトのマニフェストで宣言されていないため、これは奇妙に思われます。たぶんそれは単にパッケージパスです...

ただし、追加のEXTRA_RETURN_RESULT to trueをインテントに入れ、アクティビティの結果を開始して結果コードを確認します。データインテントにコード/追加フィールドが返され、エラーの内容が示されます(そのドキュメントをご覧ください) )

0
Jong