0

アクティビティとファイル名で getFilesDir() を使用して、ファイルを保存/読み取ることができることを知っています。ただし、ウィジェット内から getFilesDir() を呼び出そうとすると、エラーが発生します。ウィジェットとアクティビティの両方から同じテキスト ファイルにアクセスできるようにしたいと考えています。

それを達成する最も簡単な方法は何ですか?

4

2 に答える 2

2

getFilesDir()どこからでも使用できるので、アプリケーションContextからファイルを保存/読み取りできます。

編集:

アプリケーションからクラスを拡張し、そのコンテキストを使用する必要があります。

public class App extends Application{

    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this;
    }

    public static Context getContext(){
        return mContext;
    }
}

次に、manifestアプリで、タグnameのプロパティをそのクラスの名前で設定します。次に例を示します。Application

android:name="App"

注:Appは、Applicationを拡張するクラスの名前です。

これで、そのコンテキストを使用してsave\readを実行できます。

App.getContext().getFilesDir();
于 2013-03-23T17:40:07.223 に答える
1

この目的でAssetManagerを使用できます。簡単な例を次に示します。

AssetManager assetManager = getAssets(); 
String[] files = assetManager.list("Files");
InputStream input = assetManager.open("helloworld.txt");
int size = input.available();
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
String text = new String(buffer);

更新:申し訳ありませんが、ウィジェットで使用するためにこれが必要だったことを忘れました。あなたはこの答えからこのコードを試すことができます:

InputStream is = mContext.getAssets().open(someFile);
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

警告:このコードをそのまま使用しないでください。エラーやエッジケースをキャッチする適切なコードを使用する必要があります。

于 2013-03-23T17:40:29.270 に答える