package com.example.webview_change_url;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import android.widget.Toast;
/**
-
@author user
*/
//@SuppressLint(“NewApi”)
public class MainActivity extends Activity {private boolean mIsSavePass;
private static String TAG=“MainActivity”;private String mac,url_res,allMac;
private String url1=“http://172.16.3.46:3000/d/hJM8KmCGz/smdzhuang-dai–kan-ban-p3-tian-zheng-zhuang-dai-ji-p1-p2?orgId=1”,
url3=“http://172.16.4.85:3000/playlists/play/vPVyxpMVk?kiosk=tv&autofitpanels”,
url2=“http://172.16.3.46:3000/playlists/play/8?kiosk=tv”;private TextView mytv;
private String ip=“”;private static int state = 1;//标记当前执行的url
private ScheduledExecutorService scheduledExecutorService;//用于创建线程池
private WebView mywebview;//用于在handle中webview切换url@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);//设置软键盘不遮挡内容--webview AndroidBug5497Workaround.assistActivity(this);
// 隐藏状态栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//获得控件
mytv=(TextView) findViewById(R.id.mytv);
WebView webView = (WebView) findViewById(R.id.wv_webview);
mywebview = webView;
//Android webView加载Html5页面,JS不能调用问题和click事件无效的解决方法
WebSettings s = webView.getSettings();
s.setBuiltInZoomControls(true); //进行控制缩放
// 让webview只显示一列,也就是自适应页面大小 不能左右滑动,但在使用中发现,只针对4.4以下有效
s.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
s.setUseWideViewPort(true); //让Webivew支持标签的viewport属性,前端html页面适配屏幕一般都会用到这个设置
s.setLoadWithOverviewMode(true); 缩放至屏幕的大小
s.setSavePassword(true); //是否保存密码
s.setSaveFormData(true); //设置WebView是否保存表单数据,默认true,保存数据
s.setJavaScriptEnabled(true); // enable navigator.geolocation 允许支持js
// webView.addJavascriptInterface(new AndroidAndJSInterface(),“Android”); //设置支持js调用java
s.setJavaScriptCanOpenWindowsAutomatically(true);//设置脚本是否允许自动打开弹窗,默认false,不允许
s.setGeolocationEnabled(true); //定位是否可用,默认为true
//可以在数据库中存储历史位置和Web初始权限
s.setGeolocationDatabasePath(“/data/data/org.itri.html5webview/databases/”); // enable Web Storage: localStorage, sessionStorage
s.setDomStorageEnabled(true); //启动webview的html5的本地存储功能,DOM存储API是否可用,默认false。
webView.requestFocus(); //把输入焦点放在调用这个方法的控件上
webView.setScrollBarStyle(0);
//重写alert(),避免js的alert()无效
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
result.confirm();
return true;
}
});
// 在Android4.0以后,会发现,只要是写在主线程(就是Activity)中的HTTP请求,运行时都会报错,这是因为Android在4.0以后为了防止
// 应用的ANR(Aplication Not Response)异常,Android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。
// if (android.os.Build.VERSION.SDK_INT > 9) {
// StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
// StrictMode.setThreadPolicy(policy);
// }
mytv.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
webView.loadUrl(url2);
//系统默认会通过手机浏览器打开网页;为了能够直接通过webview显示网页,则必须设置
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 该接口,主要是给webview提供时机,让其选择是否对URLloading进行拦截;
// 关于该接口的返回值,true–拦截webview加载url;false–允许webview加载url
view.loadUrl(url);
return false;
}
});
}
@Override
public void onStart(){
super.onStart();
//创建大小为1的固定线程池
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
//调用ScollImageTask任务,使得ScollImageTask() 从现在开始1分钟后,每2分钟切换一次
scheduledExecutorService.scheduleWithFixedDelay(new ScollImageTask(), 1, 2, TimeUnit.MINUTES);
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg)
{
if (state == 1) {
mywebview.loadUrl(url2);
Log.i(TAG, "mywebview.loadUrl(url2)......");
} else {
mywebview.loadUrl(url1);
Log.i(TAG, "mywebview.loadUrl(url1)......");
}
}
};
// ScollImageTask任务
private class ScollImageTask implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
if (state == 1) {
state = 2;
} else {
state = 1;
}
handler.obtainMessage().sendToTarget();
}
}
}
原文地址:https://blog.csdn.net/weixuan_/article/details/129547759
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_33602.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!