Если вас беспокоит нарушение StrictMode или оно приводит к сбою приложения, вы можете использовать StrictMode.allowThreadDisk*()
:
ThreadPolicy realPolicy = StrictMode.allowThreadDiskReads();
try {
web = new WebView(container.getContext());
} finally {
StrictMode.setThreadPolicy(realPolicy);
}
Но, к сожалению, разрешений на чтение недостаточно:
D/StrictMode: StrictMode policy violation; ~duration=546 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=245 violation=1
at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:732)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1755)
at android.webkit.WebViewDatabase.getInstance(WebViewDatabase.java:243)
at android.webkit.WebView.<init>(WebView.java:981)
at android.webkit.WebView.<init>(WebView.java:958)
at android.webkit.WebView.<init>(WebView.java:948)
at android.webkit.WebView.<init>(WebView.java:939)
at MyFragment.onCreateView(CategoryHelpFragment.java:41)
Итак, последний обходной путь:
ThreadPolicy realPolicy = StrictMode.allowThreadDiskWrites();
try { // in older versions of Android WebViewDatabase.getInstance creates/opens a DB and StrictMode complains
web = new WebView(container.getContext());
} finally {
StrictMode.setThreadPolicy(realPolicy);
}
Я использовал ручное WebView
создание, но вы можете просто поместить это вокруг setContentView
.