Android webView中无法显示Twitter主页

来源: 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
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值