質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

181閲覧

androidのwebviewでiframeで指定したhtmlファイルを読み込めない

sum_0x6d7573

総合スコア2

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2025/05/14 03:25

Android Studioでwebviewを使ってHTMLファイルをアプリ化しようとしているのですがwebviewでtest1.htmlを読み込み、test1.htmlから同じフォルダ内にあるtest2.htmlを<iframe>で読み込もうとしているのですが、test2.htmlを読み込むことができません

手持ちのAndroidスマホにtest1.htmlとtest2.htmlファイルをコピーしてtest1.htmlをchromeで開こうとすると同様のエラーが出るのでファイル名をうまく設定できていないのだと思いますが、どのようにファイルを指定すればよいのでしょうか

スマホ : Zenfone 11 Ultra

スマホアプリ :

kotlin

1 2 override fun onCreate(savedInstanceState: Bundle?) { 3 4 super.onCreate(savedInstanceState) 5 setContentView(R.layout.activity_main) 6 7 val webView: WebView = findViewById(R.id.webView) 8 9 webView.loadUrl("file:///android_asset/test1.html") 10 11 12 } 13

test1.html :

html

1<p>html view test</p> 2<iframe src="test2.html" id="HTMLViewer" width="auto" height="auto"></iframe> 3

作ったアプリのスクショ
イメージ説明

スマホのchromeからhtml開いたスクショ
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

公式の情報 Load in-app content に沿って、 assets フォルダを作成し html を配置、AssetLoader を WebView に設定します。
(他にビルド環境に androidx.webkit の利用の追加が必要ですが、通常は自動で追加されます。)

AndroidStudio エクスプローラ assets
(Android Studio Ladybug Feature Drop | 2024.2.2)

assets/test1.html

html

1<p>html view test</p> 2<iframe src="/assets/test2.html" id="HTMLViewer" width="auto" height="auto"></iframe>

assets/test2.html

html

1<p>this is test2.html</p>

MainActivity.kt

kotlin

1import android.net.Uri 2import android.os.Bundle 3import android.webkit.WebResourceRequest 4import android.webkit.WebResourceResponse 5import android.webkit.WebView 6import androidx.annotation.RequiresApi 7import androidx.appcompat.app.AppCompatActivity 8import androidx.webkit.WebViewAssetLoader 9import androidx.webkit.WebViewClientCompat 10 11class MainActivity : AppCompatActivity() { 12 override fun onCreate(savedInstanceState: Bundle?) { 13 super.onCreate(savedInstanceState) 14 setContentView(R.layout.activity_main) 15 16 val webView: WebView = findViewById(R.id.webView) 17 18 val assetLoader = WebViewAssetLoader.Builder() 19 .addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this)) 20 //.addPathHandler("/res/", WebViewAssetLoader.ResourcesPathHandler(this)) 21 .build() 22 webView.webViewClient = LocalContentWebViewClient(assetLoader) 23 24 webView.loadUrl("https://appassets.androidplatform.net/assets/test1.html") 25 } 26 27 private class LocalContentWebViewClient(private val assetLoader: WebViewAssetLoader) : WebViewClientCompat() { 28 @RequiresApi(21) 29 override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest) : WebResourceResponse? { 30 return assetLoader.shouldInterceptRequest(request.url) 31 } 32 33 // To support API < 21. 34 override fun shouldInterceptRequest(view: WebView, url: String) : WebResourceResponse? { 35 return assetLoader.shouldInterceptRequest(Uri.parse(url)) 36 } 37 } 38}

実行
Androidエミュレータスクリーンショット

投稿2025/05/14 18:29

編集2025/05/14 18:39
jimbe

総合スコア13327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sum_0x6d7573

2025/05/15 13:32

うまくいきました 回答、ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問