Webページにアクセスするために承認ヘッダーを使用していますが、WebviewClientを承認ヘッダーと共に使用してもCSSは表示されません。Android webviewカスタムヘッダーを使用してWebページにアクセスしようとしたときにcssとjavascriptがロードされない
public class TableViewTest extends AppCompatActivity {
WebView webView;
SharedPreferences pref;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table_view_test);
String url = "http://myurl";
pref = getSharedPreferences("app", Context.MODE_PRIVATE);
webView = (WebView) findViewById(R.id.webView1Id);
webView.setWebViewClient(wvc);
//webView.setVerticalScrollBarEnabled(true);
//webView.setHorizontalScrollBarEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setUseWideViewPort(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
//webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
webView.loadUrl("http://myurl");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
webView.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
webView.restoreState(savedInstanceState);
}
WebViewClient wvc = new WebViewClient() {
@SuppressWarnings("deprecation")
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
try {
final String acToken = pref.getString("token", "DEFAULT");
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(url).addHeader("Authorization", "Bearer " + acToken)
.build();
Response response = okHttpClient.newCall(request).execute();
return new WebResourceResponse(response.header("text/html", response.body().contentType().type()), // You can set something other as default content-type
response.header("content-encoding", "utf-8"), // Again, you can set another encoding as default
response.body().byteStream());
} catch (ClientProtocolException e) {
//return null to tell WebView we failed to fetch it WebView should try again.
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
};
}
私を助けてください。どんな助けもありがとうございます。
同じ問題に直面しています。あなたは解決策を見つけましたか? – Picci
@Picci私のWebサービスAPI開発者は、テーブル要素のそれぞれにスタイルクラスを作成することで問題を解決しました。子クラスを介したCSS照会はWebビューにロードされないためです。その後、[link](https://github.com/delight-im/Android-AdvancedWebView)に変更しました。これはすばらしい図書館です。ただし、Webビューのすべてのリンクでヘッダーを使用することはできません。それは最初の要求に制限されています。これに言及するあなたの努力に感謝します。 #HappyToHelp #HappyCoding –
@Picci実際に私のWebビューがテーブル形式をロードしていました –