targetSdkVersion が 19 (Android 4.4 KitKat) 以上のとき、WebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) で WebView のインスタンスを作成すると次の例外が起きてクラッシュする。
java.lang.IllegalArgumentException: Private browsing is not supported in WebView.
at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:203)
at android.webkit.WebView.(WebView.java:508)
at android.webkit.WebView.(WebView.java:475)
この振る舞いは、クラスリファレンス WebView | Android Developers にも移行ガイド Migrating to WebView in Android 4.4 | Android Developers にも書かれていないので注意が必要。
public void init(final Map javaScriptInterfaces,
final boolean privateBrowsing) {
if (privateBrowsing) {
mFactory.startYourEngines(true);
final String msg = "Private browsing is not supported in WebView.";
if (mAppTargetSdkVersion >= Build.VERSION_CODES.KITKAT) {
throw new IllegalArgumentException(msg);
} else {
...
https://android.googlesource.com/platform/frameworks/webview/+/android-4.4_r1.1/chromium/java/com/android/webview/chromium/WebViewChromium.java より
WebView のコンストラクタから呼ばれる init メソッドの実装を見る限り、targetSdkVersion >= Build.VERSION_CODES.KITKAT
のときでもプライベートブラウジングを利用するのは不可能にみえる。
0 件のコメント:
コメントを投稿