2017-04-26 14 views
0

本当にそれを感謝します。 URLが読み込まれたら、少し下にスクロールし、オレンジ色のボタンをクリックしてみてください。「オタク」と言うと、2つの異なるデバイスに2つの異なる動作があります。 Nexus 5Xでは、同じWebviewで目的地を読み込みますが、Galaxy Nexus API 22(Android 5.1.1)ではデフォルトのアンドロイドブラウザで目的地を開きます。私は自分の問題を伝えることができたと思う。解決策を探してみましたが見つかりませんでした。助けてください!!!!!!!!!!!!!!!!私のアンドロイドのWebViewは「ネクサス5XのAPI 25」でのWebView内のページをロードしますが、「ギャラクシーネクサスのAPI 22(アンドロイド5.1.1)」でのんではない負荷

package in.ac.cus.webview; 

import android.annotation.TargetApi; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.webkit.WebResourceRequest; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 

public class MainActivity extends AppCompatActivity { 

private WebView myWebView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //Webview initial setup procedure 
    myWebView = (WebView) findViewById(R.id.webview); 
    WebSettings websettings = myWebView.getSettings(); 
    websettings.setJavaScriptEnabled(true); 
    myWebView.loadUrl("http://library.cus.ac.in"); 
    myWebView.setWebViewClient(new WebViewClient()); 
} 

private class WebViewClient extends android.webkit.WebViewClient { 
    @SuppressWarnings("deprecation") 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
    } 
    @TargetApi(Build.VERSION_CODES.N) 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     view.loadUrl(request.getUrl().toString()); 
     return true; 
    } 
} 

}

+1

もちろんです。あなたは 'startActivity(intent);とは何と思いますか? – njzk2

+0

私は実際にアンドロイドの新人/ママですので、私は問題を見つけることができません。しかし、2つの異なるデバイスに2つの異なる動作が存在するのはなぜですか? 1つは同じwebviewで開き、もう1つはデフォルトのブラウザで開きます。すべてのリンクがすべてのアンドロイドデバイスで同じwebview内で開きます。助けてください/お母さん – user3304659

+0

以下の質問をよくお読みくださいhttp://stackoverflow.com/questions/42241452/ – sivaprakash

答えて

0

public boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)方法はアンドロイドNを対象としている、ウィッヒはなぜthasあなたは、ウェブを処理するために、システムに求めているあなたの他のshouldOverrideUrlLoading方法で7.xxから 、あります電話機のブラウザが開きます。両方の方法で同じことを行う必要があります。指定されたurlをwebViewにロードします。

private class WebViewClient extends android.webkit.WebViewClient { 
    @SuppressWarnings("deprecation") 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
    @TargetApi(Build.VERSION_CODES.N) 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     view.loadUrl(request.getUrl().toString()); 
     return true; 
    } 
} 
+0

Sir/mamたとえ私が@TargetApi(Build.VERSION_CODES.N)行を削除しても、私は同じ結果を得ています。 – user3304659

+0

ありがとうございました。私はそれを解決したと思う。メソッドpublic boolean shouldOverrideUrlLoading(WebView view、String url)を削除し、メソッドpublic boolean shouldOverrideUrlLoading(WebView view、WebResourceRequest request)を実装しただけで、おそらく私の解決策になりました。あなたの迅速な対応をもう一度ありがとうございます。 – user3304659

+0

最終的には、他のメソッドを実装し、古いバージョンのWebViewClientの動作を確認する必要があります。新しいメソッドがうまく動作するかどうかはわかりません。 –

関連する問題