Android WebView显示纯文本
我有一个WebView,我使用Android WebView显示纯文本,android,html,webview,Android,Html,Webview,我有一个WebView,我使用WebView.loadUrl(“http://myurl.com“,页面在android上显示正确4.X,但在尝试2.X时,更具体地说,2.3.5会显示与此类似的纯文本 可能有什么问题,我该如何解决?谢谢 我的完整代码: public class FragmentPolicy extends SherlockFragment implements Refreshable { private WebView webView; private Bundle webVi
WebView.loadUrl(“http://myurl.com“
,页面在android上显示正确4.X,但在尝试2.X时,更具体地说,2.3.5会显示与此类似的纯文本
可能有什么问题,我该如何解决?谢谢
我的完整代码:
public class FragmentPolicy extends SherlockFragment implements Refreshable {
private WebView webView;
private Bundle webViewBundle;
private UpdateReceiver updateReceiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
updateReceiver = new UpdateReceiver();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.fragment_policy, container, false);
webView = (WebView) ll.findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("mailto:")){
MailTo mt = MailTo.parse(url);
Intent i = newEmailIntent(getSherlockActivity(), mt.getTo(), mt.getSubject(), mt.getBody(), mt.getCc());
startActivity(i);
view.reload();
return true;
} else {
view.loadUrl(url);
}
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
webView.stopLoading();
webView.clearView();
Log.w("test", "Could not get policy: " + description + " Errror code: " + errorCode + ". Url: " + failingUrl);
}
});
loadPolicy();
return ll;
}
private void loadPolicy(){
if (webViewBundle == null) {
Map<String, String> headers = new HashMap<String, String>();
//does not work with webview
headers.put("Content-Type", "text/html; charset=utf-8");
headers.put("Accept", "text/html");
webView.loadUrl(Utils.getBaseAPIAddr()+"getpolicyhtml", headers);
//webView.loadData(URLEncoder.encode(result).replaceAll("\\+", " "), "text/html", Encoding.UTF_8.toString());
} else {
webView.restoreState(webViewBundle);
}
}
private Intent newEmailIntent(Context context, String address, String subject, String body, String cc) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {address});
intent.putExtra(Intent.EXTRA_TEXT, body);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_CC, cc);
intent.setType("message/rfc822");
return intent;
}
@Override
public void onPause() {
super.onPause();
webViewBundle = new Bundle();
webView.saveState(webViewBundle);
}
@Override
public void onResume(){
super.onResume();
LocalBroadcastManager.getInstance(getSherlockActivity()).registerReceiver(updateReceiver, new IntentFilter("update"));
}
@Override
public void onStop(){
super.onStop();
if(updateReceiver != null){
LocalBroadcastManager.getInstance(getSherlockActivity()).unregisterReceiver(updateReceiver);
}
}
@Override
public void refresh(){
loadPolicy();
}
public class UpdateReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
loadPolicy();
}
}
}
公共类碎片策略扩展SherlockFragment实现可刷新{
私有网络视图;
私有包webViewBundle;
私有更新接收者更新接收者;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
updateReceiver=新的updateReceiver();
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
LinearLayout ll=(LinearLayout)充气器。充气(R.layout.fragment_策略,容器,false);
webView=(webView)ll.findviewbyd(R.id.webView);
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
if(url.startsWith(“mailto:”){
MailTo mt=MailTo.parse(url);
Intent i=newEmailIntent(getSherlockActivity()、mt.getTo()、mt.getSubject()、mt.getBody()、mt.getCc());
星触觉(i);
view.reload();
返回true;
}否则{
view.loadUrl(url);
}
返回true;
}
@凌驾
public void onReceivedError(WebView视图、int错误代码、字符串描述、字符串失败URL){
webView.stopLoading();
webView.clearView();
Log.w(“测试”,“无法获取策略:+description+”错误代码:+errorCode+”。Url:+failingUrl);
}
});
loadPolicy();
返回ll;
}
私有void loadPolicy(){
如果(webViewBundle==null){
Map headers=newhashmap();
//不适用于webview
headers.put(“内容类型”,“text/html;charset=utf-8”);
headers.put(“接受”、“文本/html”);
loadUrl(Utils.getBaseAPIAddr()+“getpolicyhtml”,标题);
//loadData(URLEncoder.encode(result).replaceAll(“\\+”,”),“text/html”,Encoding.UTF_8.toString());
}否则{
webView.restoreState(webViewBundle);
}
}
私有意图newEmailIntent(上下文上下文、字符串地址、字符串主题、字符串正文、字符串抄送){
意向意向=新意向(意向.行动\发送);
intent.putExtra(intent.EXTRA_EMAIL,新字符串[]{address});
intent.putExtra(intent.EXTRA_文本,正文);
intent.putExtra(intent.EXTRA_SUBJECT,SUBJECT);
intent.putExtra(intent.EXTRA_CC,CC);
intent.setType(“message/rfc822”);
返回意图;
}
@凌驾
公共无效暂停(){
super.onPause();
webViewBundle=新Bundle();
保存状态(webViewBundle);
}
@凌驾
恢复时公开作废(){
super.onResume();
LocalBroadcastManager.getInstance(getSherlockActivity()).registerReceiver(updateReceiver,new IntentFilter(“更新”);
}
@凌驾
公共void onStop(){
super.onStop();
if(updateReceiver!=null){
LocalBroadcastManager.getInstance(getSherlockActivity()).unregisterReceiver(updateReceiver);
}
}
@凌驾
公共无效刷新(){
loadPolicy();
}
公共类UpdateReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
loadPolicy();
}
}
}
我尝试过的事情*手动复制并粘贴HTML到assets文件夹中,然后加载保存的HTML,将其保存到assets文件夹中效果良好。但是为什么我不能从网上下载呢?这样做吗
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
web.setWebViewClient(new HelloWebViewClient());
然后用web视图设置webview客户端,如下所示
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
web.setWebViewClient(new HelloWebViewClient());
你也可以上传代码吗?添加了代码和我尝试过的东西。这只是两行代码,我指的是完整的文件或更多的代码,我们不能通过看到上面两行来假设你的代码的其他行。添加。添加的代码在Android 4.X上运行良好,但在Android 2.3.5等旧设备上,页面显示为纯文本,显示所有HTML标记等,与主要问题中的图像类似。可能情况类似: