public class AndroidJsBridge {
@android.webkit.JavascriptInterface
public void
getPhoto() {
}
}
public class WebActivity
extends BaseActivity {
private static final String
TAG = WebActivity.
class.getSimpleName()
;
private static final String
EXTEND_JS_OBJECT =
"android"
;
protected WebView
mWebView
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
;
}
protected void
initWeb(WebView webView) {
mWebView = webView
;
WebSettings webSettings = webView.getSettings()
;
webSettings.setUseWideViewPort(
true)
;
webSettings.setLoadWithOverviewMode(
true)
;
webSettings.setJavaScriptEnabled(
true)
;
webSettings.setCacheMode(WebSettings.
LOAD_DEFAULT)
;
//设置 缓存模式
webSettings.setDomStorageEnabled(
true)
;
webSettings.setDatabaseEnabled(
true)
;
webSettings.setAppCacheEnabled(
true)
;
webView.setWebViewClient(
new WebViewClient() {
@Override
public boolean
shouldOverrideUrlLoading(WebView view
, String url) {
view.loadUrl(url)
;
return true;
}
@Override
public void
onPageStarted(WebView view
, String url
, Bitmap favicon) {
}
@Override
public void
onPageFinished(WebView view
, String url) {
}
})
;
webView.setWebChromeClient(
new WebChromeClient() {
@Override
public void
onProgressChanged(WebView view
, int newProgress) {
}
@Override
public void
onConsoleMessage(String message
, int lineNumber
, String sourceID) {
Logger.
d(
TAG
, message +
" -- From line " + lineNumber +
" of " + sourceID)
;
}
@Override
public boolean
onConsoleMessage(ConsoleMessage cm) {
Logger.
d(
TAG
, cm.message() +
" -- From line " + cm.lineNumber() +
" of "
+ cm.sourceId())
;
return true;
}
})
;
}
protected void
loadUrl(String url) {
mWebView.loadUrl(url)
;
}
protected void
addJsMethod(AndroidJsBridge obj) {
mWebView.addJavascriptInterface(obj
,
EXTEND_JS_OBJECT)
;
}
@Override
protected void
onDestroy() {
mWebView.stopLoading()
;
mWebView.removeAllViews()
;
mWebView.destroy()
;
super.onDestroy()
;
}
}
public class WriteDailyActivity extends WebActivity {
private static final String
TAG = WriteDailyActivity.
class.getSimpleName()
;
@BindView(R.id.
iv_back)
ImageView
ivBack
;
@BindView(R.id.
tv_materail_title)
TextView
tvMaterailTitle
;
@BindView(R.id.
tv_appbar_right)
TextView
tvAppbarRight
;
private WebView
msWebview
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
;
setContentView(R.layout.
activity_write_daily)
;
ButterKnife.
bind(
this)
;
initview()
;
initdata()
;
}
private void
initview() {
tvAppbarRight.setVisibility(View.
VISIBLE)
;
tvAppbarRight.setText(
"完成")
;
tvMaterailTitle.setText(
"写日报")
;
msWebview = (WebView) findViewById(R.id.
webview)
;
}
private void
initdata() {
initWeb(
msWebview)
;
addJsMethod(
new ExtendJsObject())
;
loadUrl(url)
;
}
public void
onClick(View view) {
switch (view.getId()) {
finish()
;
break;
// 发布日报
getContent()
;
break;
}
}
// js调用这些方法
private class ExtendJsObject
extends AndroidJsBridge {
@JavascriptInterface
public int[]
jsGetTaskNum() {
//弹出popup 选择任务。 返回任务int【】数组给js
Log.
i(
TAG
,
"jsGetTaskNum: ")
;
Handler handler =
new Handler(getMainLooper())
;
handler.post(
new Runnable() {
@Override
public void
run() {
//弹出popup
}
})
;
return new int[]{
1
,
4
,
5}
;
}
@JavascriptInterface
public int
jsGetTime() {
//弹出时间选择器
Handler handler =
new Handler(getMainLooper())
;
handler.post(
new Runnable() {
@Override
public void
run() {
initTimePicker()
;
}
})
;
Log.
i(
TAG
,
"jsGetTime: ")
;
return
2222
;
}
@JavascriptInterface
public void
jsGetIntentUrl(
int type) {
Log.
i(
TAG
,
"jsGetIntentUrl: " + type)
;
if (type ==
1) {
//跳转至成果展示。
}
if (type ==
2) {
//跳转到代码连接。
}
}
@JavascriptInterface
public void
jsGetContent(String str) {
Log.
i(
TAG
,
"content: "+str)
;
}
}
//调用时间选择器
private void
initTimePicker() {
TimePickerView timePickerView
;
timePickerView =
new TimePickerView(
this, TimePickerView.Type.
YEAR_MONTH_DAY)
;
Calendar calendar = Calendar.
getInstance()
;
timePickerView.setRange(calendar.get(Calendar.
YEAR) -
50
, calendar.get(Calendar.
YEAR))
;
//要在setTime 之前才有效果哦
timePickerView.setTime(
new Date())
;
timePickerView.setCyclic(
false)
;
timePickerView.setCancelable(
true)
;
timePickerView.setOnTimeSelectListener(
new TimePickerView.OnTimeSelectListener() {
@Override
public void
onTimeSelect(Date date) {
Date dates =
new Date()
;
int years = dates.getYear() - date.getYear()
;
}
})
;
timePickerView.show()
;
}
private void
getContent(){
Handler handler =
new Handler(getMainLooper())
;
handler.post(
new Runnable() {
@Override
public void
run() {
msWebview.loadUrl(
"javascript:content()")
;
}
})
;
}