2012-01-30 16 views
0

私は(SDカードに)あるディレクトリから別のディレクトリにファイルを移動する移動/ SDカード内のファイルの名前を変更し

をしようとしている私は、ファイルのURIと、私はそれを移動しようとしている方法があります:

Uri selectedImage = imageReturnedIntent.getData(); // this the uri, something like content://media/external/images/media/635 

File sdcard = Environment.getExternalStorageDirectory(); 
File from = new File(sdcard, selectedImage); 
File to = new File(sdcard, "myNewDir/mynewfile.jpg"); 
from.renameTo(to); 

しかし、それは仕事をdoesntのない、どちらもそれは私にLogcatの誤差を与えるん...

編集:私は私のマニフェストFILに両方の権限を追加した

E:

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

「うまくいかない」と言うと、どういうことが起こりますか?また、WRITE_EXTERNAL_STORAGE権限を追加しましたか? –

+0

少し質問を更新しました。私はパーミッションを追加しました...何も起こりません、それは単にファイルを移動しませんし、それは私にそれについてのエラーを与えません。 –

答えて

3
// this the uri, something like content://media/external/images/media/635 

何あなたがやっていることはEnvironment.getExternalStorageDirectory()にこれを連結しようとしています。これは動作しません。 content://media/external/images/media/635は相対ファイルシステムパスでも絶対ファイルシステムパスでもありません。それはUriです。

あなたはUriによって表される画像上InputStreamを取得するためにContentResolverを使用して、ローカルファイルへUriから画像をコピーしたい場合は、あなたのターゲットにInputStreamからバイトをコピーするには、Java I/Oを使用しますファイル。

+1

あなたは正しいです。私はウリを絶対パスに変更し、必要に応じてすべてが機能しました。 –

関連する問題