0

パスを使用して、ビデオなどのアプリデータの一部を外部キャッシュディレクトリに保存しています

android.os.Environment.getExternalStorageDirectory(),"/Android/data/"+getPackag‌​eName()+"/cache/"

私の予想される結果は、アプリをアンインストールすると、この指定されたパスからデータが削除されることです。これは、エミュレーターを使用して行うとうまく機能します。アプリのデータは、アプリのアンインストール時に SD カードから削除されます。ただし、実際のデバイス (Samsung Galaxy S など) でコードを実行すると、アンインストール時にアプリ データが削除されません。考えられる理由と、これを克服する方法を教えてください。

重複スレッドの解決策も見つけようとしましたが、それは役に立ちませんでした。

4

1 に答える 1

4

API レベル 7 以下を使用している場合はgetExternalStorageDirectory()、を使用して、外部ストレージのルートを表すファイルを開きます。次に、次のディレクトリにデータを書き込む必要があります。

/Android/data/<package_name>/files/

<package_name>、Java スタイルのパッケージ名です ( "com.example.android.app". ユーザーのデバイスがAPI レベル 8 以上を実行していて、アプリケーションをアンインストールすると、このディレクトリとそのすべてのコンテンツが削除されます。

詳細については、この記事を確認してください。

編集:

これを確認してください/Android/data/com.example.testdir/files/scanned.txt。以下のコードを使用して1つのファイルを作成しただけです:

package com.example.testdir;

import java.io.File;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void clickBtn(View v) {
        if (v.getId() == R.id.button1) {

            File sdcard = new File(Environment.getExternalStorageDirectory()
                    + "/Android/data/com.example.testdir/files/");

            if (!sdcard.exists())
                sdcard.mkdirs();

            File file = new File(sdcard, "scanned.txt");

            if (!file.exists()) {
                try {
                    file.createNewFile();
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
            }
        }
    }
}

そして、私はこの許可も追加しました

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<package_name>私の場合、フォルダ名がcom.example.testdirfromのフォルダ名を削除しますsdcard/android/data/com.example.testdir

于 2013-04-04T06:23:21.747 に答える