26

ファイルを作成してSDカードに保存するアプリケーションを作成しました。ユーザーがAndroidデバイスでアンインストールを実行したときにすべてのファイルを削除するために、フォルダをアプリケーションにバインドする方法はありますか?

4

6 に答える 6

23

2009年以来、いくつかの開発があったようです:)。

ドキュメントから:

API レベル 8 以上を使用している場合は、 を使用getExternalCacheDir()して、キャッシュ ファイルを保存する外部ストレージ ディレクトリを表すファイルを開きます。ユーザーがアプリケーションをアンインストールすると、これらのファイルは自動的に削除されます。ただし、アプリケーションの存続期間中は、これらのキャッシュ ファイルを管理し、不要なキャッシュ ファイルを削除して、ファイル スペースを確保する必要があります。

API レベル 7 以下を使用している場合は、 を使用getExternalStorageDirectory()して外部ストレージのルートを表すファイルを開き、次のディレクトリにキャッシュ データを書き込みます。

/Android/data//cache/ は、「com.example.android.app」などの Java スタイルのパッケージ名です。

于 2011-06-17T08:28:41.087 に答える
13

アプリケーションがアンインストールされていることを (カーネルを変更せずに) 知る方法はありません。で作成されたすべてのファイルは、data/data/your.app.packageアプリケーションのアンインストール時に自動的に削除されます。

SDカードから何も消去されていないと思います。簡単なテストを実行して、それを見つけることができます。

別のアプローチとして、このアプリケーションがインストールされているかどうかを確認する別のアプリケーションを用意することもできます。そうでない場合は、クリーンアップ作業を行うことができます。

于 2009-08-03T16:27:55.533 に答える
4

を使用している場合でもgetExternalCacheDir()、Androidドキュメントに記載されているように、少なくともLenovo A1では、アプリのパッケージ名であるキャッシュディレクトリが自動的に削除されないことがわかりました。少し単純かもしれませんが、再インストール中に以前のデータをクリーンアップすることをお勧めします。そこで、アプリがアンインストールされたのか、初めてインストールされたのかを確認できます。共有設定を使用して、値(おそらくブール値)を保存します。次のようになります。

SharedPreferences sharedPrefs = getSharedPreferences(INSTALL_PREFS, MODE_PRIVATE);
if(sharedPrefs.getBoolean("AppInstalled", false) == false){
    //DELETE APP DIRECTORY
    SharedPreferences.Editor editor = sharedPrefs.edit();
    editor.putBoolean("AppInstalled", true);
    editor.commit();
}

このように、アプリが実行されるたびに、アプリが初めて実行されるかどうかがチェックされます。アプリが削除されると、アプリの共有設定も削除されます。次に、次にインストールするときに、if(...)がtrueになり、そこでクリーンアップを実行できます。

これは質問に直接答えることはできず、ユーザーのデバイスに未使用のデータを残すのは良いことではありませんが、アプリが削除されているときにクリーンアップを試みる代わりになる可能性があると思います。これは賢明ですが不可能に思えます。

于 2012-09-06T13:46:40.377 に答える
3

それ以来、適切な解決策Context.getExternalFilesDir()があるようです:

アプリケーションが所有する永続ファイルを配置できる外部ファイルシステム (Environment.getExternalStorageDirectory() のどこかにある) 上のディレクトリへの絶対パスを返します。これらのファイルはアプリケーション専用であり、通常はメディアとしてユーザーに表示されません。

アプリケーションのアンインストール時にこれらのファイルが削除されるという点で、これは getFilesDir() に似ています。

于 2013-02-23T12:11:09.843 に答える
0

大きなデータを保存する場合は、次のようなファイルパス名で外部ストレージに保存します

Environment.getExternalStorageDirectory().toString()+"/Android/data/packageName"

パッケージ名はアプリのパッケージ名です。例: com.think.abc

于 2012-03-21T11:07:35.863 に答える