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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

1837閲覧

Androidで他のアプリからアプリ内のWebViewで特定のURLのページを直接開きたい

Kiyohiko

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/07/12 02:35

編集2022/01/12 10:55

前提・実現したいこと

以前は出来ていたことが、端末のバージョンによって出来なくなってしまい、文献等で調べているのですが、答えが見つからないため、どなたかおわかりの方がいれば、ご教示しただればと思います。

正しい動作:他のアプリから特定のURLを指定して開くと、開発しているアプリ内のWebViewでその特定のURLを開いた状態にする

正しい動作をする端末バージョン
Android 7.1.1
Chrome 61.0.3163.98

間違った動作:他のアプリから特定のURLを指定して開いても、WebViewでその特定のURLを開かず、本来、アプリでロードされるトップページが開いてしまう

意図しない動作をする端末のバージョン
Android 7.1.2
Chrome 64.0.3282.137

発生している問題・エラーメッセージ

これが原因として関係しているかどうかはわかりませんが、下記のエラーがログに出ていました。

E/chromium: [ERROR:gl_context_virtual.cc(39)] Trying to make virtual context current without decoder.

該当のソースコード

WebViewClient の shouldOverrideUrlLoading の中で、特定のURLの指定があった場合は、view.loadUrl でロード先を変更していました

Java

1@Override 2public boolean shouldOverrideUrlLoading(WebView view, String url) { 3 4 //リンク/他のアプリからの起動時用 5 Uri openingUri = get_openingUri(); 6 String openingUriString = openingUri.toString(); 7 String openingMode=get_openingMode(); 8 9 //アプリがリンクから起動した際の処理 10 if (!openingUriString.equals("") && openingMode.equals("link") ) { 11 navigate_openingUri(view, openingUri); 12 init_openingUri(); 13 return false; 14 } 15 16 //他のアプリから起動した場合の処理 17 if (openingMode.equals("otherApp") && openingUriString.length() > 0) { 18 String base_http_url = getString(R.string.base_http_url); 19 String games_view_url = base_http_url + 20 getString(R.string.games_view_action) + openingUriString; 21 view.loadUrl(games_view_url); 22 init_openingUri(); 23 return true; 24 } 25 return false; 26} 27 28//アプリがリンクから起動されていたら呼ばれる。uriから、目的のページに移動する。 29private void navigate_openingUri(WebView view, Uri openingUri) { 30 List<String> paths = openingUri.getPathSegments(); 31 String controller = paths.get(0); 32 String action = paths.get(1); 33 if (controller.equals("games") && action.equals("view")) { 34 String gameID = paths.get(2); 35 navigate_openingUri_gamesView(view, gameID); 36 } 37 init_openingUri(); 38} 39 40//起動したリンクのURLが特定のページの場合。 41private void navigate_openingUri_gamesView(WebView view, String gameID) { 42 String gameViewUrl = base_url + "games/view/" + gameID; 43 view.loadUrl(gameViewUrl); 44}

試したこと

開発環境のSDKのバージョンに合わせてshouldOverrideUrlLoadingを下記のように変更してやってみましたが、それでも動作は変わりませんでした。

Java

1public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 2 String url = null; 3 url = request.getUrl().toString(); 4 5 // これより下は先程示したソースコードと同様です。 6 7}

補足情報(FW/ツールのバージョンなど)

現在の開発環境のバージョン
compileSdkVersion 25
buildToolsVersion '27.0.3'

以前の開発環境のバージョン
compileSdkVersion 23
buildToolsVersion "23.0.2"

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

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

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

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

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

kakajika

2018/07/12 13:38

メソッド内にログ出力のコードを埋め込んでみてはどうでしょうか? メソッドが呼ばれてすらいないのかどうかを確認したほうがいいと思います。
Kiyohiko

2018/07/12 13:45

ご指摘ありがとうございます。ログ出力については、随所に入れていたのですが、見にくいと思い、ここに貼り付けた後に削除しました。元々、動いていたものなので、呼び出されていないということはありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問