package com.zenglb.framework.activity.demo; import android.content.DialogInterface; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.http.SslError; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.webkit.JsPromptResult; import android.webkit.SslErrorHandler; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import com.zenglb.baselib.base.BaseActivity; import com.zenglb.baselib.jsbridge.JSBridge; import com.zenglb.framework.R; import com.zenglb.framework.activity.java8test.myFunc; import com.zenglb.framework.http.core.HttpCall; import com.zenglb.framework.http.core.HttpCallBack; import com.zenglb.framework.http.core.HttpResponse; import com.zenglb.framework.http.result.ModulesResult; import retrofit2.Call; /** * BaseActivity is bigger * */ public class DemoActivity extends BaseActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setToolBarTitle("MainActivity"); //也可以直接在manifest 中设置好 getToolbar().setOnMenuItemClickListener(onMenuItemClick); // 1.接口默认方法,api<24 就不能使用? Log.d("接口默认方法","测试:" + new myFunc().defaultMethod()); // 2.函数式接口 } @Override protected int setLayoutId() { return R.layout.activity_main; } @Override protected void initViews() { mWebView = (WebView) findViewById(com.zenglb.commonlib.R.id.webview); setWebViewClient(); setWebChromeClient(); mWebView.setBackgroundColor(Color.TRANSPARENT); mWebView.loadUrl("https://www.baidu.com/"); String test="测试不是一个final变量的访问域"; mWebView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("final 变量","final 变量测试"+test); } }); Runnable x = new Runnable() { @Override public void run() { Log.e("final 变量","final 变量测试"+test); } }; } private void setWebViewClient() { mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.e("dd",url); return true; } @Override public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { final AlertDialog.Builder builder = new AlertDialog.Builder(mContext); String message = "SSL证书错误"; switch (error.getPrimaryError()) { case SslError.SSL_UNTRUSTED: message = "不是可信任的证书颁发机构。"; break; case SslError.SSL_EXPIRED: message = "证书已过期。"; break; case SslError.SSL_IDMISMATCH: message = "证书的主机名不匹配。"; break; case SslError.SSL_NOTYETVALID: message = "证书还没有生效。"; break; } message += " 你想要继续吗?"; builder.setTitle("SSL证书错误"); builder.setMessage(message); builder.setPositiveButton("continue", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.proceed(); } }); builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.cancel(); } }); final AlertDialog dialog = builder.create(); dialog.show(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } }); } private void setWebChromeClient() { mWebView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { String callBackData = JSBridge.callJavaNative(view, message); result.confirm(callBackData); return true; } @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); getToolbar().setTitle(title); } @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100) { mWebView.setBackgroundColor(Color.TRANSPARENT); } super.onProgressChanged(view, newProgress); } }); } /** * Test @Query and result is json array, not json object * <p> * Call<HttpResponse< jsonArray >> ,not Call<HttpResponse< jsonObj >> */ private void getMessages() { // Call<HttpResponse<List<Messages>>> getMsgsCall = HttpCall.getApiService().getMessages(0, 20); // getMsgsCall.enqueue(new HttpCallBack<List<Messages>>(null) { // @Override // public void onSuccess(List<Messages> listHttpResponse) { // ((TextView) findViewById(R.id.message_txt)).setText(listHttpResponse.toString()); // } // @Override // public void onFailure(int code, String messageStr) { // super.onFailure(code, messageStr); // ((TextView) findViewById(R.id.message_txt)).setText(code + "@@checkMobileCall@@" + messageStr); // } // // }); } /** * test get http */ private void requestModules() { Call<HttpResponse<ModulesResult>> getModulesCall = HttpCall.getApiService().getModules(); getModulesCall.enqueue(new HttpCallBack<ModulesResult>(this) { @Override public void onSuccess(ModulesResult getModulesCallResponse) { // ((TextView) findViewById(R.id.message_txt)).setText(getModulesCallResponse.toString()); } @Override public void onFailure(int code, String failedText) { super.onFailure(code, failedText); } }); } private Toolbar.OnMenuItemClickListener onMenuItemClick = new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { String msg = ""; switch (menuItem.getItemId()) { case R.id.action_share: msg += "Click share"; break; case R.id.action_settings: msg += "Click setting"; break; } if (!TextUtils.isEmpty(msg)) { Toast.makeText(DemoActivity.this, msg, Toast.LENGTH_SHORT).show(); } return true; } }; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_demo, menu); return true; } }