2017-05-11 20 views
1

デバイスでwebviewが利用可能かどうかを確認する方法はありますか?android - webviewが利用可能かどうかを確認するにはどうすればいいですか?

背景: マニフェストに<uses-feature android:name="android.software.webview"/>を追加すると、Google Playでサポートされるデバイスの数が12,000以上6,000未満のデバイスから減少します。だから私はこの機能にandroid:required="false"を追加しました。ケースのWebViewで利用できるウェブサイトはそれ以外の場合は、デフォルトのブラウザで起動アプリ内に表示されるべきである。

String mUrl = "http://www.example.com"; 
if (*** WHAT TO PUT HERE? ***) { 
    WebView webview = (WebView) findViewById(R.id.webView); 
    if (Build.VERSION.SDK_INT >= 24) { 
     webview.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
       view.loadUrl(request.toString()); 
       return false; 
      } 
     }); 
    } else { 
     webview.setWebViewClient(new WebViewClient() { 
      @SuppressWarnings("deprecation") 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return false; 
      } 
     }); 
    } 
    webview.loadUrl(mUrl); 
} else { 
    Uri uri = Uri.parse(mUrl); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
    startActivity(intent); 
} 

編集(物事を明確にする):<uses-permission android:name="android.permission.INTERNET" />がある(と常にされていた)マニフェストの一部。サポートされているデバイスのドロップを引き起こすのは<uses-feature android:name="android.software.webview" />の追加だけです。

誰かがここで同じ問題を抱えてあります:https://issuetracker.google.com/issues/37035282 ので、それはあなたが必要なマニフェストにはない、それはインターネット接続 https://developer.android.com/reference/android/webkit/WebView.html 何常に利用可能です

答えて

2

が次のように、あなたは、デバイスの機能の互換性を確認することができます。

getPackageManager().hasSystemFeature("android.software.webview") 

このメソッドはtrueまたはfalseを返します。

Google Playのフィルタリングについてのその他の情報: Google Playは、マニフェストに宣言された<uses-feature>要素に基づいてサポートされているデバイスのみをフィルタリングします。 <uses-permission>の要素は、機能を暗示しない限り、Google Playのフィルタリングに影響しません。 android.permission.INTERNETは何の特徴も意味しません。機能を示唆するアクセス許可は、次のとおりです。 https://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions

1

WebViewのは、Android API 1に持ってきた(残念ながら答えていません)インターネットの許可:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

この権限はすでにマニフェストに含まれています。 webviewが常に利用可能な場合、サポートされているデバイスの数はなぜ減少しますか? – klabauter

1

詳細はhttps://source.android.com/compatibility/android-cdd.pdfです。

WebView互換性のセクションによると、android.software.webview機能は、デバイスまたはoemがandroid.webkit.WebView APIの完全な実装を提供する必要があることを示しています。実際には、ほとんどのデバイスがWebkitで必要とされるすべてのAPIを完全に実装していないため、プレイストアのデバイス数が減少しました。

ウェブコンテンツに特定のhtml5機能が必要な場合は、こちらのhttp://mobilehtml5.org/アプリをターゲットにしている場合はkitkat、さらにはロリポップ+を安全にしてください。

あなたのウェブコンテンツが本当にウェブキットのすべてのAPIを必要としない限り、android.software.webview機能を宣言する必要はありません。 @vsatkhは、必ずしも必要に応じて、この機能を宣言する必要がないことを指摘し

関連する問題