#############################################

本文为极度寒冰原创,转载请注明出处 #############################################
在android浏览器中,我们都知道可以设置屏蔽image,即选择image是否加载。 同样的道理,那既然在webkit中提供了webaudio的接口,那我们也可以实现这个功能。 具体实现如下: Package/app/Browser中的修改如下:
diff --git a/res/values/strings.xml b/res/values/strings.xmlindex 41e2fd9..7389f34 100644--- a/res/values/strings.xml+++ b/res/values/strings.xml@@ -338,6 +338,10 @@     Allow multiple tabs per app          Load images+    +    Load audio+    Play audio on web pages+              Display images on web pages      diff --git a/res/xml/bandwidth_preferences.xml b/res/xml/bandwidth_preferences.xmlindex 1762b80..ae00881 100644--- a/res/xml/bandwidth_preferences.xml+++ b/res/xml/bandwidth_preferences.xml@@ -37,7 +37,13 @@         android:defaultValue="true"         android:title="@string/pref_content_load_images"         android:summary="@string/pref_content_load_images_summary" />-++    +     

在framework中的修改如下:
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.javaindex aa68904..da2c61e 100644--- a/core/java/android/webkit/WebSettings.java+++ b/core/java/android/webkit/WebSettings.java@@ -848,6 +848,12 @@ public abstract class WebSettings {         throw new MustOverrideException();     } +    // -- add by chao +    public synchronized void setLoadsAudioAutomatically(boolean flag) {+        throw new MustOverrideException();+    }++    // add by chao     /**      * Gets whether the WebView loads image resources. This includes      * images embedded using the data URI scheme.*/@@ -859,6 +865,12 @@ public abstract class WebSettings {         throw new MustOverrideException();     } +    // -- add by chao+    public synchronized boolean getLoadsAudioAutomatically() {+        throw new MustOverrideException();+    }+    // add by chao --+     /**      * Sets whether the WebView should not load image resources from the      * network (resources accessed via http and https URI schemes).  Note*/diff --git a/core/java/android/webkit/WebSettingsClassic.java b/core/java/android/webkit/WebSettingsClassic.javaindex 73968a7..0614c5a 100644--- a/core/java/android/webkit/WebSettingsClassic.java+++ b/core/java/android/webkit/WebSettingsClassic.java@@ -62,6 +62,7 @@ import android.os.Message; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.util.EventLog;+import android.util.Log; import android.os.SystemProperties; import java.util.Locale; @@ -116,6 +117,9 @@ public class WebSettingsClassic extends WebSettings {     private int             mDefaultFixedFontSize = 13;     private int             mPageCacheCapacity = 0;     private boolean         mLoadsImagesAutomatically = true;+    // -- add by chao+    private boolean         mLoadsAudioAutomatically = true;+    // add by chao --     private boolean         mBlockNetworkImage = false;     private boolean         mBlockNetworkLoads;     private boolean         mJavaScriptEnabled = false;@@ -1142,6 +1146,16 @@ public class WebSettingsClassic extends WebSettings {         }     } +    // -- add by chao+    @Override+    public synchronized void setLoadsAudioAutomatically(boolean flag) {+        if (mLoadsAudioAutomatically != flag) {+            Log.d("chao","setLoadsAudioAutomatically flag = " + flag);+            mLoadsAudioAutomatically = flag;+            postSync();+        }+    }+    // add by chao --     /**      * @see android.webkit.WebSettings#getLoadsImagesAutomatically()      */@@ -1149,6 +1163,13 @@ public class WebSettingsClassic extends WebSettings {     public synchronized boolean getLoadsImagesAutomatically() {         return mLoadsImagesAutomatically;     }+  +    // -- add by chao+    @Override+    public synchronized boolean getLoadsAudioAutomatically() {+        return mLoadsAudioAutomatically;+    }+    // add by chao      /**      * @see android.webkit.WebSettings#setBlockNetworkImage(boolean)

extern中的修改如下:
diff --git a/Source/WebCore/page/Settings.cpp b/Source/WebCore/page/Settings.cppindex 79e38d1..6dfc878 100644--- a/Source/WebCore/page/Settings.cpp+++ b/Source/WebCore/page/Settings.cpp@@ -40,7 +40,7 @@ #include "ResourceHandle.h" #include "StorageMap.h" #include -+#include "AndroidLog.h" using namespace std;  namespace WebCore {@@ -917,6 +917,7 @@ void Settings::setShouldUseHighResolutionTimers(bool shouldUseHighResolutionTime  void Settings::setWebAudioEnabled(bool enabled) {+    ALOGE("setWebAudioEnable = %d  --chao\n", enabled);     m_webAudioEnabled = enabled; } diff --git a/Source/WebKit/android/jni/WebSettings.cpp b/Source/WebKit/android/jni/WebSettings.cppindex fe5ae0b..8348f6b 100644--- a/Source/WebKit/android/jni/WebSettings.cpp+++ b/Source/WebKit/android/jni/WebSettings.cpp@@ -61,6 +61,7 @@ #include  #include  +#include "AndroidLog.h" #include "ApplicationCacheStorage.h" #include "BitmapAllocatorAndroid.h" #include "CachedResourceLoader.h"@@ -127,6 +128,9 @@ struct FieldIds {         mDefaultFontSize = env->GetFieldID(clazz, "mDefaultFontSize", "I");         mDefaultFixedFontSize = env->GetFieldID(clazz, "mDefaultFixedFontSize", "I");         mLoadsImagesAutomatically = env->GetFieldID(clazz, "mLoadsImagesAutomatically", "Z");+// add by chao+        mLoadsAudioAutomatically = env->GetFieldID(clazz, "mLoadsAudioAutomatically", "Z");+// add by chao end #ifdef ANDROID_BLOCK_NETWORK_IMAGE         mBlockNetworkImage = env->GetFieldID(clazz, "mBlockNetworkImage", "Z"); #endif@@ -216,6 +220,9 @@ struct FieldIds {         ALOG_ASSERT(mDefaultFontSize, "Could not find field mDefaultFontSize");         ALOG_ASSERT(mDefaultFixedFontSize, "Could not find field mDefaultFixedFontSize");         ALOG_ASSERT(mLoadsImagesAutomatically, "Could not find field mLoadsImagesAutomatically");+// add by chao +        ALOG_ASSERT(mLoadsAudioAutomatically, "Could not find field mLoadsAudioAutomatically");+// add by chao -- #ifdef ANDROID_BLOCK_NETWORK_IMAGE         ALOG_ASSERT(mBlockNetworkImage, "Could not find field mBlockNetworkImage"); #endif@@ -277,6 +284,9 @@ struct FieldIds {     jfieldID mDefaultFontSize;     jfieldID mDefaultFixedFontSize;     jfieldID mLoadsImagesAutomatically;+// --add by chao+    jfieldID mLoadsAudioAutomatically;+// add by chao -- #ifdef ANDROID_BLOCK_NETWORK_IMAGE     jfieldID mBlockNetworkImage; #endif@@ -471,6 +481,11 @@ public:         if (flag)             cachedResourceLoader->setAutoLoadImages(true); +// -- add by chao+        flag = env->GetBooleanField(obj, gFieldIds->mLoadsAudioAutomatically);+        ALOGE("setWebAudioEnabled = %d  --chao \n", flag);+        s->setWebAudioEnabled(flag);+// add by chao -- #ifdef ANDROID_BLOCK_NETWORK_IMAGE         flag = env->GetBooleanField(obj, gFieldIds->mBlockNetworkImage);         s->setBlockNetworkImage(flag);

在browser的设置中,我们就可以看到并使用这个选项了。

更多相关文章

  1. android webview 缩放及换行
  2. android 使用JavaMail
  3. TextView 花里胡哨的用法 - SpannableStringBuilder
  4. 安卓开发----TextView控件属性列表
  5. Qt Android(安卓)QScreen 屏幕旋转功能
  6. EditText_XML属性
  7. Android(安卓)属性动画(Property Animation) 完全解析 (下)
  8. android美化ToggleButton
  9. Android(安卓)用HorizontalScrollView实现ListView的Item滑动删

随机推荐

  1. Android高仿微信之mvp实现(二)
  2. 【Xamarin.Android】探索android的底部导
  3. 简单轻松!通过USB数据线,让Android(安卓)St
  4. Android(安卓)自定义View实现炮弹射击小
  5. 牛逼的Android(安卓)UI--第18章 与用户交
  6. Android(安卓)超级轻量的版本更新库AppUp
  7. 【评论】阿里云os,到底是不是android OS
  8. android,内存优化详解 .
  9. Android为App签名(为apk签名)
  10. Android用AsyncTask来下载图片及用AsyncT