4

私のアプリは、使用時にアプリが使用するストレージにいくつかのファイルを書き込みます(構成など)。この構成は時間に依存し、必要に応じてアプリに置き換えられます。

現在、Environment.getExternalStorageDirectory()を使用してこれをSDカードに書き込んでいます。ただし、これはユーザーがファイルブラウザを使用した場合に表示され、削除される可能性があります。

アプリケーション自体以外でファイルの削除を防ぐことはできますか?

Environment.getDataDirectory()を使用してみましたが、そこに書き込む権限がありません。他の方法はありますか?

4

4 に答える 4

2

はい。SDカードのように公共の場所に保存する代わりに、次のようにアプリケーションのプライベートスペース(内部ストレージ)にファイルを書き込みます。

FileOutputStream fos = openFileOutput("myfile.dat", Context.MODE_PRIVATE);
fos.write( WebnetTools.serializeObject( sec ) );
fos.close();

詳細については、ドキュメントを参照してください。スペースが限られているため、SDカードと同等ではないことに注意してください。

于 2012-11-26T10:18:51.480 に答える
0

SDカードへの書き込みが必須でない場合は、電話の内部ストレージに書き込みを行って、データをアプリケーションに対してプライベートにすることができます。

于 2012-11-26T10:19:24.097 に答える
0

androidマニフェストでandroid:sharedUserIdを使用しましたが、アプリの内部メモリに書き込むことができるようになりました。

私の唯一の目的はテキストファイルを書くことであるため(共有などは含まれません)、これを実装するのが最も簡単であることがわかりました。

于 2012-12-03T08:56:24.573 に答える
-1

これを試して :

File folder = context.getDir("images", Context.MODE_WORLD_WRITEABLE);
        File img = new File(folder, "img_"+widget_id+"_"+position+".png");
        try{
            FileOutputStream out = new FileOutputStream(img);
            b.compress(Bitmap.CompressFormat.PNG, 100, out);
            b.recycle();
            internal_img = img.getPath();
        }catch(Exception e){
            e.printStackTrace();
        }

getDir 内部メモリにフォルダーを作成すると、内部に必要なすべてを書き込むことができるため、SD カードでの削除を防ぐ方法はありません。また、SDカードがアンマウントされている場合、ファイルの読み取り/書き込みはできません

于 2012-11-26T10:12:58.470 に答える