1

(SOの他の同様の質問で確認しました)

HTMLエディタを作成しようとしています。編集テキストがあり、そこに入力された HTML コードをブラウザーで開きたいと考えています。これを行うには、編集テキスト コンテンツを .html ファイルにコピーしてから開きます。

String filename = "temp.html";
File file = new File(getActivity().getFilesDir(), filename);
FileOutputStream outputStream;
    try {
    outputStream = getActivity().openFileOutput(filename,
            Context.MODE_PRIVATE);
    outputStream.write(editText.getText().toString().getBytes());
    outputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromFile(file));
startActivity(intent);

<uses-permission android:name="android.permission.INTERNET" />マニフェストに追加しました。しかし、[開く] をクリックした後、表示される [アプリを使用した完全なアクション]オプションは、Adobe Reader と UTorrent リモートです。ブラウザは表示されていません。携帯電話には Opera とストック ブラウザがあります。コードの何が問題になっていますか? カスタム書体を使用しました

ノート:

  • アプリに WebView は必要ありません。ブラウザのみで開きたい。
  • このコードはフラグメントにあるため、「getActivity()」です。

編集:

File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/temp");
        dir.mkdirs();
        File file = new File(dir, "temp.html");
        FileOutputStream outputStream;
        try {
            outputStream = new FileOutputStream(file);
            outputStream.write(et.getText().toString().getBytes());
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();
        }

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromFile(file));
        startActivity(intent);

ファイルを外部ディレクトリに書き込むようにコードを変更しました。問題が解決しない。

4

2 に答える 2

1

コードの何が問題になっていますか?

まず、ファイルは内部ストレージ上のプライベート ファイルであるため、サード パーティのアプリからはアクセスできません。

第二に、ブラウザー アプリは値をサポートする必要はなくfile:// Uri、値さえもサポートする必要はありませんcontent:// Uri(それを使用してプライベート ファイルをサード パーティのアプリに公開する場合)。

ローカル HTML を表示する場合は、WebViewウィジェットを使用します。または、利用可能な Web ブラウザー アプリの一覧を繰り返し、サポートfile://またはcontent:// Uriスキームを実行するアプリが見つかるまで繰り返し、ユーザーにそのブラウザーのインストールを促します。

于 2013-08-25T17:04:58.120 に答える