0

外部 SD カードにファイルをコピーできません。エラーは表示されず、実際には成功が示されますが、ファイルはSDカードにありません。コードは次のとおりです。

window.resolveLocalFileSystemURI(fileURI, step1,fail);

function step1(tmp_file)
{
       file = tmp_file;
       window.resolveLocalFileSystemURI("file:///mnt/extsd", step2,fail); //resolve destinaion
}

function step2(destination)
{
        file.moveTo(destination,"example.jpg",move_success, move_fail);
}

そのため、最後に move_success を呼び出します。

注:パスを「file:///mnt/extsd」から内部SDカードパス「file:///mnt/sdcard」に変更すると機能します

マニフェストの権限

<uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.RECEIVE_SMS" />
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
        <uses-permission android:name="android.permission.READ_CONTACTS" />
        <uses-permission android:name="android.permission.WRITE_CONTACTS" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
4

1 に答える 1

0

デフォルトとして定義するのではなく、パスを作成する必要があります。すべてのデバイスで sdcard が「sdcard」と呼ばれるわけではないためです。あなたはそれを行うことができます:

File sdcard = Environment.getExternalStorageDirectory();
String path = "file://"+sdcard.getAbsolutePath();

次に、変数を使用できます

window.resolveLocalFileSystemURI(path, step2,fail); //resolve destinaio

または、次の方法を使用してファイルをコピーできます。

public void copy(File src, File dst) throws IOException {
    try {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);

        // Transfer bytes from in to out
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    } catch (IOException io) {
        Toast.makeText(this, "Error: " + io, Toast.LENGTH_LONG).show();
    }
}

ファイルをコピーし、次にファイルを削除することができます。

または、別の方法として、ファイルのプロパティ renameTo() を使用できます。次に例を示します。

File sdcard = Environment.getExternalStorageDirectory();
File example= new File(sdcard.getAbsolutePath()+"/example.txt");
File newpath= new File(sdcard.getAbsolutePath()+"/examplefolder/example.txt");
example.renameTo(newpath);//this will move the file to the new path
于 2013-02-18T13:57:07.127 に答える