1

SDカードにファイルがあります。通常、「officesuite」で開いて変更すると、変更を保存できます。次のようにアプリで開くと、「officesuite」に表示されますが、変更を保存できず、アクティビティに戻ることはありません。何かアイデアはありますか?
これが私のコードです:

import java.io.File;
import java.net.URI;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.webkit.MimeTypeMap;

public class OfficesuiteSaveAsActivity extends Activity {
    private String fileDir;
    private File file;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedlnstanceState) {
        super.onCreate(savedlnstanceState);
        setContentView(R.layout.main);
        String sdCardDir = Environment.getExternalStorageDirectory()
                .getAbsolutePath();
        String fileName = "TestofficeSuite.docx";
        fileDir = sdCardDir + File.separator + fileName;
        file = new File(fileDir);
        displayFile(file.toURI());
    }

    public void displayFile(URI uriString) {
        Uri data = Uri.parse(uriString.toString());
        Intent newlntent1 = new Intent();
        newlntent1.setAction(Intent.ACTION_VIEW);
        MimeTypeMap mtm = MimeTypeMap.getSingleton();
        newlntent1.setDataAndType(data, mtm.getMimeTypeFromExtension("docx"));
        startActivity(newlntent1);
    }
}
4

1 に答える 1

1

SD カード内のファイルの「Uri.parse(file.toURI().toString())」と「Uri.fromFile()」の値を確認します: 「Uri.parse(file.toURI().toString())」 「file:/mnt/ ...」のように始まり、「Uri.fromFile()」は「file:///mnt/ ...」のように始まります!コードを変更すると、正常に動作します。

public class OfficesuiteSaveAsActivity extends Activity {
    private String fileDir;
    private File file;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedlnstanceState) {
        super.onCreate(savedlnstanceState);
        setContentView(R.layout.main);
        String sdCardDir = Environment.getExternalStorageDirectory()
                .getAbsolutePath();
        String fileName = "TestofficeSuite.docx";
        fileDir = sdCardDir + File.separator + fileName;
        file = new File(fileDir);
        displayFile(file);
    }

    public void displayFile(File file) {
        Uri data = Uri.fromFile(file);
        Intent newlntent1 = new Intent();
        newlntent1.setAction(Intent.ACTION_VIEW);
        MimeTypeMap mtm = MimeTypeMap.getSingleton();
        newlntent1.setDataAndType(data, mtm.getMimeTypeFromExtension("docx"));
        startActivity(newlntent1);
    }
}
于 2012-01-03T05:00:49.327 に答える