在Android应用程序中,WebView是一个常用的控件,用于在应用程序中显示网页。在混淆代码时,需要注意WebView的混淆问题。以下是一些混淆WebView时需要注意的事项:
1.在proguard-rules.pro文件中添加以下代码,以避免WebView的混淆:
```proguard
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public android.webkit.WebResourceResponse *(android.webkit.WebView, java.lang.String, java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public android.webkit.WebResourceResponse *(android.webkit.WebView, android.webkit.WebResourceRequest);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebBackForwardList);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public boolean *(android.webkit.WebView, android.view.KeyEvent);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.net.http.SslError);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.ClientCertRequest);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.HttpAuthHandler, java.lang.String, java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public boolean *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.os.Bundle);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError, android.webkit.WebResourceResponse);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.os.Bundle);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.webkit.WebResourceError);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.webkit.WebResourceError, android.os.Bundle);
}
```
2.在WebViewClient实例中,需要保留onPageFinished()方法中的代码,以确保WebView正确加载图片。具体代码如下:
```java
@Override
public void onPageFinished(WebView view, String url) {
if(!webView.getSettings().getLoadsImagesAutomatically()) {
webView.getSettings().setLoadsImagesAutomatically(true);
}
}
```
3.在WebView初始化时,需要设置加载图片的选项。具体代码如下:
```java
public void init() {
if(Build.VERSION.SDK_INT >= 19) {
webView.getSettings().setLoadsImagesAutomatically(true);
} else {
webView.getSettings().setLoadsImagesAutomatically(false);
}
}
```