来源: http://android.auaudata.com/android16webviewtwitter.html

亲自测试通过

ANdroid1.6一下的用法值得学习

AndroidアプリでWebページを表示する場合、画面全体に表示してよいなら、標準のブラウザにインテント(Intent)を投げればよいのですが、画面の一部にWebページを表示したい場合、webViewを使用することになるはずです。

ここで問題が発生する場合があります。

いずれの時期には解決するかもしれませんが、2011年9月上旬時点、L-04Cにて、Twitterを表示させようとすると、リングのマークがずーとグルグル回った画面が表示され、それ以降、ページが表示されない不具合があります。

どうやらこの問題に対しては、ググると、

webView.getSettings().setDomStorageEnabled(true);

で解決するらしいのですが、Android1.6以降を対象とした場合には、このメソッドを使うことができません。

Android1.6の端末は少なくなってきているものの、まだまだ使われているので、よほどのことがない限り、1.6でも動作させたいと思っていました。

これの対処方法をずーと調べていました。

すると、こちらの記事で解決することになるのですが、

Backwards compatibility in Android

説明がないと分かりづらいので簡単に説明します。

キーワードは「後方互換性」です。

簡単に言うと、ソフトウェアを資産として活用できるようにするため、昔のバージョンで書いたコードは新しいバージョンでも動かせるよ!というのを「後方互換性がある」といいます。

解決策は、後方互換性を考慮してプログラムを書けばよい・・・です。

今回の場合、Android1.6でも構文エラーにならなくて、Android2.1以降の場合、

webView.getSettings().setDomStorageEnabled(true);

と同様の設定をしてあげればよいです。

最後にこれを実現するソースコードを掲載します。
(上記参考記事のページにはいくつもソースコードが掲載されていて、どれを使えばよいかが迷うので、実際に使えたものを掲載しておきます)


WebSettings webSettings = webView.getSettings();
try
{
// enable Dom Storage (API lvl 7)
Class[] setDomStorageEnabledSignature = new Class[] { boolean.class };
Method setDomStorageEnabled = webSettings.getClass()
.getMethod("setDomStorageEnabled", setDomStorageEnabledSignature);
setDomStorageEnabled.invoke(
webSettings, new Object[] { Boolean.valueOf(true) });
}
catch (NoSuchMethodException ex)
{
Log.i("YourLogTag", "Dom storage not available.");
}
catch (InvocationTargetException ex)
{
// oops something went wrong. Handle that here
}
catch (IllegalAccessException ex)
{
// oops something went wrong. Handle that here
}

更多相关文章

  1. Android(安卓)弹无虚发之第二弹:Android(安卓)ActionBar 的其它用
  2. android 中.9图片的用法 详解
  3. 《第一行代码——Android》封面诞生记
  4. Android(安卓)实现人脸检测
  5. Android多线程--HandlerThread用法
  6. Android的ViewPager,ViewPager配合Fragment的用法
  7. SlidingMenu 用法(二)
  8. VelocityTracker的用法
  9. android TabActivity用法

随机推荐

  1. Android上HDMI介绍(基于高通平台)-- Overla
  2. Android(安卓)Studio VS Eclipse (还在用E
  3. Android(安卓)AIDL实例解析
  4. [置顶] Android开发-分析ViewGroup、View
  5. Android(安卓)WebView和JS交互详细教程
  6. android开发之多线程实现方法概述
  7. FFmpeg 1.2 for Android(安卓)生成一个动
  8. Android(安卓)-- SurfaceFlinger 概要分
  9. Android之仿小米便签程序
  10. ffmpeg 移植到 android 并使用