ファイルを作成してSDカードに保存するアプリケーションを作成しました。ユーザーがAndroidデバイスでアンインストールを実行したときにすべてのファイルを削除するために、フォルダをアプリケーションにバインドする方法はありますか?
6 に答える
2009年以来、いくつかの開発があったようです:)。
ドキュメントから:
API レベル 8 以上を使用している場合は、 を使用
getExternalCacheDir()
して、キャッシュ ファイルを保存する外部ストレージ ディレクトリを表すファイルを開きます。ユーザーがアプリケーションをアンインストールすると、これらのファイルは自動的に削除されます。ただし、アプリケーションの存続期間中は、これらのキャッシュ ファイルを管理し、不要なキャッシュ ファイルを削除して、ファイル スペースを確保する必要があります。API レベル 7 以下を使用している場合は、 を使用
getExternalStorageDirectory()
して外部ストレージのルートを表すファイルを開き、次のディレクトリにキャッシュ データを書き込みます。/Android/data//cache/ は、「com.example.android.app」などの Java スタイルのパッケージ名です。
アプリケーションがアンインストールされていることを (カーネルを変更せずに) 知る方法はありません。で作成されたすべてのファイルは、data/data/your.app.package
アプリケーションのアンインストール時に自動的に削除されます。
SDカードから何も消去されていないと思います。簡単なテストを実行して、それを見つけることができます。
別のアプローチとして、このアプリケーションがインストールされているかどうかを確認する別のアプリケーションを用意することもできます。そうでない場合は、クリーンアップ作業を行うことができます。
を使用している場合でも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になり、そこでクリーンアップを実行できます。
これは質問に直接答えることはできず、ユーザーのデバイスに未使用のデータを残すのは良いことではありませんが、アプリが削除されているときにクリーンアップを試みる代わりになる可能性があると思います。これは賢明ですが不可能に思えます。
それ以来、適切な解決策Context.getExternalFilesDir()があるようです:
アプリケーションが所有する永続ファイルを配置できる外部ファイルシステム (Environment.getExternalStorageDirectory() のどこかにある) 上のディレクトリへの絶対パスを返します。これらのファイルはアプリケーション専用であり、通常はメディアとしてユーザーに表示されません。
アプリケーションのアンインストール時にこれらのファイルが削除されるという点で、これは getFilesDir() に似ています。
大きなデータを保存する場合は、次のようなファイルパス名で外部ストレージに保存します
Environment.getExternalStorageDirectory().toString()+"/Android/data/packageName"
パッケージ名はアプリのパッケージ名です。例: com.think.abc