2017-05-28 22 views
0

私は、ユーザーがバックアップファイルを作成し、ファイルチューザでそれらを再インポートできるようにするアプリを開発中です。Android:ファイルをURIに変換する

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); 
intent.setType("application/*"); 
startActivityForResult(intent, Constants.FILE_CHOOSER); 

コード)(onActivityResultにURIを返します:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == Constants.FILE_CHOOSER) { 
     Uri uri = data.getData(); 
    } 

私はデータが含まれている私のアプリのローカルストレージ内のファイルを参照するFileを持っている私は、次のコードを使用してファイルをエクスポートします。私は単に、アプリケーションの内部ストレージからファイルを取り出し、ユーザーが選択したディレクトリに保存したいと思います。私はそれを働かせることはできません。返されたUriFileに変換するにはどうすれば簡単にデータを書き込むことができますか?

答えて

1

私は単にアプリの内部ストレージからファイルを取得して、ユーザーがディレクトリを選択しなかった

ユーザー

を選択したものは何でもディレクトリに保存したいと思います。ユーザーはドキュメントを作成しています。 Uriがそのドキュメントを指しています。

返されたUriをファイルに変換してデータをより簡単に書き込む方法を教えてください。

HTTPS URLをFileに変換するだけで、より簡単にデータを書き込むことができます。

ACTION_CREATE_DOCUMENTと返さUriで識別が作成した(空の)ドキュメントにOutputStreamを開くために使用ContentResolveropenOutputStream()。次に、標準のJava I/Oを使用して、ファイル内のバイト(FileInputStreamなど)をOutputStreamにコピーします。

+0

構文の例や見た目の良いリソースはありますか?私はAndroidの開発者ページに関する情報を見つけることができないようです。 – wdavies973

+0

@ wdavies973:何のために? 'ContentResolver'はJavaクラスです。通常は、あなたのアクティビティのような 'Context'に対して' getContentResolver() 'を呼び出すことによってインスタンスを取得します。 'openOutputStream()'は 'ContentResolver'のメソッドです。 'Uri'をパラメータとして渡します。あなたは 'OutputStream'を取得します。したがって、それは 'getContentResolver()。openOutputStream(data.getData())'です。 – CommonsWare

+0

ありがとう、それは私が必要なものです。あなたの助けに感謝。 – wdavies973

関連する問題