Pārlūkot izejas kodu

Merge branch 'master' of http://192.168.3.207:10080/qmx/jyapp

lixianglan 7 gadi atpakaļ
vecāks
revīzija
d0e369e75f

+ 11 - 10
android/app/app.iml

@@ -91,6 +91,7 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
@@ -106,12 +107,12 @@
     </content>
     <orderEntry type="jdk" jdkName="Android API 26 Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\umeng_social_tool.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\SocialSDK_QQ_Simplify.jar:unspecified@jar" level="project" />
     <orderEntry type="library" name="com.android.support:support-media-compat-26.1.0" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\SocialSDK_WeChat_Simplify.jar:unspecified@jar" level="project" />
     <orderEntry type="library" name="com.android.support:recyclerview-v7-26.1.0" level="project" />
     <orderEntry type="library" scope="TEST" name="junit:junit:4.12@jar" level="project" />
     <orderEntry type="library" name="android.arch.lifecycle:common:1.0.0@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\jcore-android-1.1.9.jar:unspecified@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="com.android.support.test.espresso:espresso-core-3.0.1" level="project" />
     <orderEntry type="library" name="com.android.support:support-fragment-26.1.0" level="project" />
     <orderEntry type="library" scope="TEST" name="javax.inject:javax.inject:1@jar" level="project" />
@@ -120,31 +121,31 @@
     <orderEntry type="library" name="android.arch.lifecycle:runtime-1.0.0" level="project" />
     <orderEntry type="library" name="com.android.support:appcompat-v7-26.1.0" level="project" />
     <orderEntry type="library" name="com.android.support:support-annotations:26.1.0@jar" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\umeng_social_shareboard.jar:unspecified@jar" level="project" />
     <orderEntry type="library" name="com.android.support.constraint:constraint-layout-solver:1.0.2@jar" level="project" />
     <orderEntry type="library" name="com.android.support:support-core-utils-26.1.0" level="project" />
     <orderEntry type="library" name="com.android.support.constraint:constraint-layout-1.0.2" level="project" />
     <orderEntry type="library" name="com.android.support:support-core-ui-26.1.0" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\jpush-android-3.1.1.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\umeng_social_net.jar:unspecified@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="com.android.support.test:runner-1.0.1" level="project" />
     <orderEntry type="library" scope="TEST" name="com.android.support.test:rules-1.0.1" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\umeng_social_net.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\mobileshieldsdk.jar:unspecified@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="com.android.support.test.espresso:espresso-idling-resource-3.0.1" level="project" />
     <orderEntry type="library" scope="TEST" name="org.hamcrest:hamcrest-core:1.3@jar" level="project" />
     <orderEntry type="library" name="com.android.support:support-compat-26.1.0" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\umeng_social_api.jar:unspecified@jar" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\umeng_shareboard_widget.jar:unspecified@jar" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\jcore-android-1.1.9.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\umeng_social_tool.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\umeng_social_api.jar:unspecified@jar" level="project" />
     <orderEntry type="library" name="android.arch.core:common:1.0.0@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="org.hamcrest:hamcrest-library:1.3@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\umeng_shareboard_widget.jar:unspecified@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\mobileshieldsdk.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\umeng_social_shareboard.jar:unspecified@jar" level="project" />
     <orderEntry type="library" name="com.android.support:support-v4-26.1.0" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\SocialSDK_QQ_Simplify.jar:unspecified@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="net.sf.kxml:kxml2:2.3.0@jar" level="project" />
     <orderEntry type="library" name="com.android.support:animated-vector-drawable-26.1.0" level="project" />
     <orderEntry type="library" name="com.android.support:design-26.1.0" level="project" />
     <orderEntry type="library" name="com.android.support:transition-26.1.0" level="project" />
-    <orderEntry type="library" name="__local_aars__:E.\jyapp\android\app\libs\jpush-android-3.1.1.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="__local_aars__:E.\fb\jyapp\android\app\libs\SocialSDK_WeChat_Simplify.jar:unspecified@jar" level="project" />
   </component>
 </module>

+ 1 - 1
android/app/build.gradle

@@ -7,7 +7,7 @@ android {
         minSdkVersion 23
         targetSdkVersion 26
         versionCode 1
-        versionName "1.0.5"
+        versionName "1.0.1"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
     buildTypes {

+ 3 - 1
android/app/src/main/AndroidManifest.xml

@@ -49,7 +49,9 @@
         </activity>
         <activity
             android:name=".MainActivity"
-            android:label="@string/title_activity_main"></activity>
+            android:label="@string/title_activity_main"
+            android:windowSoftInputMode="adjustResize"
+            android:launchMode="singleTop"></activity>
         <activity android:name=".ExternalWebPage"></activity>
 
         <!--分享qq的Activity-->

+ 1 - 1
android/app/src/main/java/com/topsoft/jianyu/JyObj.java

@@ -56,7 +56,7 @@ public class JyObj {
             ActivityCompat.requestPermissions(mainActivity,mPermissionList,123);
         }
         //弹出分享面板
-        UMWeb web = new UMWeb(AppUtil.AppUrl+link);
+        UMWeb web = new UMWeb(link);
         web.setTitle(title);//标题
         UMImage thumb =  new UMImage(mContext, R.drawable.share_thumb_img);
         web.setThumb(thumb);  //缩略图

+ 59 - 39
android/app/src/main/java/com/topsoft/jianyu/MainActivity.java

@@ -1,7 +1,6 @@
 package com.topsoft.jianyu;
 
 
-
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -19,10 +18,10 @@ import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
-import android.widget.LinearLayout;
 
 
 import com.topsoft.jianyu.appUpdate.UpdateVersionController;
+import com.topsoft.jianyu.listener.KeyBoardListener;
 import com.topsoft.jianyu.util.AppUtil;
 import com.umeng.socialize.UMShareAPI;
 
@@ -38,12 +37,12 @@ import cn.jpush.android.api.JPushInterface;
 
 public class MainActivity extends AppCompatActivity {
 
-    private WebView wv;
-    private final String LOG_TAG = "JC_WebView";
-    private Context ctx;
-    private String rgsid = "";
-    private Timer timer;
-    private String pushurl;
+    private static WebView wv;
+    private static final String LOG_TAG = "JC_WebView";
+    private static Context ctx;
+    private static String rgsid = "";
+    private static Timer timer;
+    private static String pushurl;
 
     //qq分享需添加此项
     @Override
@@ -56,22 +55,14 @@ public class MainActivity extends AppCompatActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
-        AppUtil.setAndroidNativeLightStatusBar(this,true,true);
         ctx = this;
         //初始化WebView
-        pushurl=getIntent().getStringExtra("url");
-
-        //判断是否是点击推送打开的
-        if(pushurl==null||"".equals(pushurl)){
-            SharedPreferences sp = getSharedPreferences("jy", Context.MODE_PRIVATE);
-            String token = sp.getString("token", "");
-            if("".equals(token)){
-                initWebview(AppUtil.AppUrl+"/jyapp/free/login");
-            }else{
-                initWebview(AppUtil.AppUrl+"/jyapp/free/login?sign="+token+"&url="+URLEncoder.encode("/jyapp/jylab/mainSearch"));
-            }
+        SharedPreferences sp = getSharedPreferences("jy", Context.MODE_PRIVATE);
+        String token = sp.getString("token", "");
+        if("".equals(token)){
+            initWebview(AppUtil.AppUrl+"/jyapp/free/login");
         }else{
-            initWebview(AppUtil.AppUrl+pushurl);
+            initWebview(AppUtil.AppUrl+"/jyapp/free/login?sign="+token+"&url="+URLEncoder.encode("/jyapp/jylab/mainSearch"));
         }
 
         //初始化配置
@@ -81,10 +72,11 @@ public class MainActivity extends AppCompatActivity {
         Boolean b=mPowerManager.isIgnoringBatteryOptimizations(ctx.getPackageName());
         Toast.makeText(ctx,b+"加入程序白名单",Toast.LENGTH_SHORT).show();*/
 
-        /*findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
+        /*
+        findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                //查询本地数据库所有信息
+                //查询本地数据库所有信息Z
                 DBHelper dbHelper = new DBHelper(ctx,"jy_db",null,1);
                 SQLiteDatabase db =dbHelper.getWritableDatabase();
                 Cursor cursor = db.query("jy_message", new String[]{"id","title","content","link","category","openid","readed","comeintime","descript","extend"}, "", new String[]{}, null, null, "comeintime desc");
@@ -131,11 +123,7 @@ public class MainActivity extends AppCompatActivity {
 
     //初始化Webview
     protected void initWebview(String url) {
-        LinearLayout mLayout = (LinearLayout) findViewById(R.id.webview_layout);
-        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
-        wv = new WebView(this);
-        wv.setLayoutParams(params);
-        mLayout.addView(wv);
+        wv=findViewById(R.id.webView);
         wv.setWebViewClient(new WebViewClient() {
         });
         wv.setWebChromeClient(new WebChromeClient() {
@@ -148,7 +136,13 @@ public class MainActivity extends AppCompatActivity {
             public void onProgressChanged(WebView view, int newProgress) {
                 //通过点击提示进入改页面 返回键需要改变
                 if(newProgress==100&&!(pushurl==null||"".equals(pushurl))){
-                    wv.loadUrl("javascript:afterOpenPushMessage()");
+                    wv.post(new Runnable() {
+                        @Override
+                        public void run() {
+                            int result=wv.canGoBack()?1:0;
+                            wv.loadUrl("javascript:afterOpenPushMessage("+result+")");
+                        }
+                    });
                     pushurl=null;
                 }
             }
@@ -178,12 +172,14 @@ public class MainActivity extends AppCompatActivity {
     //初始化其他配置设置
     private void initconfigure(){
         UMShareAPI.get(this);
-        mHandler.obtainMessage(1).sendToTarget();
-        mHandler.obtainMessage(2).sendToTarget();
+        AppUtil.setAndroidNativeLightStatusBar(this,true,true);//全屏显示
+        KeyBoardListener.getInstance(this).init(ctx);//键盘显示监听事件
+        mHandler.obtainMessage(1).sendToTarget();//初始化极光推送
+        mHandler.obtainMessage(2).sendToTarget();//检测更新
 
     }
 
-    private Handler mHandler = new Handler() {
+    public static Handler mHandler = new Handler() {
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case 1:
@@ -194,8 +190,7 @@ public class MainActivity extends AppCompatActivity {
                     timer.schedule(new TimerTask() {
                         @Override
                         public void run() {
-                            rgsid=JPushInterface.getRegistrationID(getApplicationContext());
-                            Log.d(LOG_TAG, "------rgsid=");
+                            rgsid=JPushInterface.getRegistrationID(ctx);
                             if(!"".equals(rgsid)){
                                 Log.d(LOG_TAG, "最终------rgsid=" + rgsid);
                                 AppUtil.JPUSH_CLIENT_RGSID=rgsid;
@@ -203,15 +198,40 @@ public class MainActivity extends AppCompatActivity {
                             }
                         }
                     }, 0, 500);
-
-                    //样式
-
                     break;
                 case 2:
                     //监测更新
-                    UpdateVersionController.getInstance(MainActivity.this).appUpdateCheck();
+                    UpdateVersionController.getInstance(ctx).appUpdateCheck();
+                    break;
+                case 3:
+                    //点击通知消息,更新页面url
+                    Bundle bundle = msg.getData();
+                    pushurl=bundle.getString("url", "");
+                    if(!"".equals(pushurl)){
+                        System.out.println("pushurl"+pushurl);
+                        wv.loadUrl(AppUtil.AppUrl+pushurl);
+                    }else{
+                        SharedPreferences sp = ctx.getSharedPreferences("jy", Context.MODE_PRIVATE);
+                        String token = sp.getString("token", "");
+                        if("".equals(token)){
+                            wv.loadUrl(AppUtil.AppUrl+"/jyapp/free/login");
+                        }else{
+                            wv.loadUrl(AppUtil.AppUrl+"/jyapp/free/login?sign="+token+"&url="+URLEncoder.encode("/jyapp/jylab/mainSearch"));
+                        }
+                    }
+                    Intent start = new Intent(ctx,MainActivity.class);
+                    start.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+                    ctx.startActivity(start);
+                    break;
+                case 4:
+                    //增加未读消息小红点提醒
+                    wv.post(new Runnable() {
+                        @Override
+                        public void run() {
+                            wv.loadUrl("javascript:afterReceiveNewMsg();");
+                        }
+                    });
                     break;
-
             }
         }
     };

+ 16 - 9
android/app/src/main/java/com/topsoft/jianyu/MyReceiver.java

@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Message;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -31,8 +32,7 @@ public class MyReceiver extends BroadcastReceiver {
 
 	@Override
 	public void onReceive(Context context, Intent intent) {
-
-		if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
+		 if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
 			try {
 				Bundle bundle = intent.getExtras();
 				String title,content,openid,type,descript,extend,url,pushTime;
@@ -53,6 +53,10 @@ public class MyReceiver extends BroadcastReceiver {
 					JyMessage oneMsg=new JyMessage(title,content,url,type,0,(int)(System.currentTimeMillis()/1000),openid,descript,extend,pushTime);
 					if(DbBase.getInstance(context).insertMessage(oneMsg)){
 						System.out.println("插入推送消息成功");
+						//未读消息小红点提醒
+						Message message = Message.obtain();
+						message.what = 4;
+						MainActivity.mHandler.sendMessage(message);
 					}else{
 						System.out.println("插入推送消息失败");
 					}
@@ -62,15 +66,14 @@ public class MyReceiver extends BroadcastReceiver {
 			}
 
 		} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
+
 			Bundle bundle=intent.getExtras();
-			//printBundle(bundle);
+			printBundle(bundle);
 			try{
 				JSONObject obj=new JSONObject(bundle.getString(EXTRA_EXTRA));
 				JSONObject litObj=new JSONObject(obj.getString("info"));
 				String url=litObj.has("url")?litObj.getString("url"):"";
 				String pushTime=litObj.has("pushTime")?litObj.getString("pushTime"):"";
-				String type=obj.getString("type");
-				Intent i = new Intent(context, MainActivity.class);
 
 				//修改信息为已读信息
 				if("".equals(pushTime)){
@@ -79,7 +82,7 @@ public class MyReceiver extends BroadcastReceiver {
 				}else{
 					//根据pushTime设置已读
 					DbBase.getInstance(context).updateMessageStateByPushTime(pushTime);
-
+					String type=obj.has("type")?obj.getString("type"):"";
 					//更改url 根据推送事件获取信息id
 					Integer integer=DbBase.getInstance(context).getIDbypushTime(pushTime);
 					if(integer>0){
@@ -87,9 +90,13 @@ public class MyReceiver extends BroadcastReceiver {
 					}
 				}
 
-				i.putExtra("url",url);
-				i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
-				context.startActivity(i);
+				Message message = Message.obtain();
+				message.what = 3;
+				Bundle b= new Bundle();
+				b.putString("url", url);
+				message.setData(b);
+				MainActivity.mHandler.sendMessage(message);
+
 			}catch (Exception e){
 				Log.e(LOG_TAG,"改变信息已读出错"+e.getMessage());
 			}

+ 99 - 0
android/app/src/main/java/com/topsoft/jianyu/listener/KeyBoardListener.java

@@ -0,0 +1,99 @@
+package com.topsoft.jianyu.listener;
+
+/**
+ * 解决webView键盘遮挡问题的类
+ */
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Rect;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.webkit.WebView;
+import android.widget.FrameLayout;
+
+import com.topsoft.jianyu.R;
+import com.topsoft.jianyu.util.AppUtil;
+
+public class KeyBoardListener {
+    private Activity activity;
+
+
+    private View mChildOfContent;
+    private int usableHeightPrevious;
+    private FrameLayout.LayoutParams frameLayoutParams;
+    private WebView wv;
+    private Context context;
+
+    private static KeyBoardListener keyBoardListener;
+
+
+    public static KeyBoardListener getInstance(Activity activity) {
+        if(keyBoardListener==null){
+            keyBoardListener=new KeyBoardListener(activity);
+        }
+        return keyBoardListener;
+    }
+
+
+    public KeyBoardListener(Activity activity) {
+        super();
+        this.activity = activity;
+    }
+
+
+    public void init(Context context) {
+        this.context=context;
+        FrameLayout content = (FrameLayout) activity
+                .findViewById(android.R.id.content);
+        wv=activity.findViewById(R.id.webView);
+        mChildOfContent = content.getChildAt(0);
+        mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+            public void onGlobalLayout() {
+                possiblyResizeChildOfContent();
+            }
+        });
+        frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
+
+    }
+
+
+    private void possiblyResizeChildOfContent() {
+        int usableHeightNow = computeUsableHeight();
+
+        if (usableHeightNow != usableHeightPrevious) {
+            int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
+            int heightDifference = usableHeightSansKeyboard - usableHeightNow;
+
+            if (heightDifference > (usableHeightSansKeyboard / 4)) {
+                // 键盘显示
+               frameLayoutParams.height = usableHeightSansKeyboard-heightDifference+ AppUtil.getStatusBarHight(context);
+               wv.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        wv.loadUrl("javascript:afterKeyboardShow();");
+                    }
+                });
+            } else {
+                // 键盘隐藏
+                frameLayoutParams.height = usableHeightSansKeyboard-AppUtil.getVirtualBarHeigh(context);
+                wv.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        wv.loadUrl("javascript:afterKeyboardHide();");
+                    }
+                });
+            }
+            mChildOfContent.requestLayout();
+            usableHeightPrevious = usableHeightNow;
+        }
+    }
+
+
+    private int computeUsableHeight() {
+        Rect r = new Rect();
+        mChildOfContent.getWindowVisibleDisplayFrame(r);
+        return (r.bottom - r.top);
+    }
+
+}

+ 32 - 0
android/app/src/main/java/com/topsoft/jianyu/util/AppUtil.java

@@ -8,6 +8,8 @@ import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.graphics.Color;
 import android.os.Build;
+import android.util.DisplayMetrics;
+import android.view.Display;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
@@ -23,8 +25,10 @@ import java.lang.reflect.Method;
 public class AppUtil {
 
     public static String JPUSH_CLIENT_RGSID;//记录极光推送客户端id
+
     //public static String AppUrl="http://webwcj.qmx.top";
     public static String AppUrl="http://w2blmjy.qmx.top";
+    //public static String AppUrl="https://www.jianyu360.com/";
     /**
      * 判断当前应用是否是debug状态
      */
@@ -146,4 +150,32 @@ public class AppUtil {
         return pi;
     }
 
+    //获取虚拟功能键高度
+    public static int getVirtualBarHeigh(Context context) {
+        int vh = 0;
+        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+        Display display = windowManager.getDefaultDisplay();
+        DisplayMetrics dm = new DisplayMetrics();
+        try {
+            @SuppressWarnings("rawtypes")
+            Class c = Class.forName("android.view.Display");
+            @SuppressWarnings("unchecked")
+            Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
+            method.invoke(display, dm);
+            vh = dm.heightPixels - windowManager.getDefaultDisplay().getHeight();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return vh;
+    }
+
+    //获取状态栏高度
+    public static int getStatusBarHight(Context context){
+        int statusBarHeight = 0;
+        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
+        if (resourceId > 0) {
+            statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
+        }
+        return statusBarHeight;
+    }
 }

+ 13 - 8
android/app/src/main/java/com/topsoft/jianyu/util/StringUtil.java

@@ -2,7 +2,6 @@ package com.topsoft.jianyu.util;
 
 import android.util.Log;
 
-import java.math.BigInteger;
 import java.security.MessageDigest;
 
 /**
@@ -14,18 +13,24 @@ public class StringUtil {
     //md5加密
     public static String getMD5(String str) {
         try {
-            // 生成一个MD5加密计算摘要
             MessageDigest md = MessageDigest.getInstance("MD5");
-            // 计算md5函数
-            md.update(str.getBytes());
-            // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
-            // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
-            return new BigInteger(1, md.digest()).toString(16);
+            byte[] bytes = md.digest(str.getBytes("utf-8"));
+            return toHex(bytes);
         } catch (Exception e) {
             Log.e(TAG,e.getMessage());
-            return null;
+            return "";
         }
     }
+    private static String toHex(byte[] bytes) {
+
+        final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
+        StringBuilder ret = new StringBuilder(bytes.length * 2);
+        for (int i=0; i<bytes.length; i++) {
+            ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
+            ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
+        }
+        return ret.toString();
+    }
 
     //base64加密
     public static String getBase64(String str) {

+ 6 - 1
android/app/src/main/res/layout/activity_main.xml

@@ -14,7 +14,12 @@
         android:layout_height="match_parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintTop_toTopOf="parent"
-        android:orientation="vertical"></LinearLayout>
+        android:orientation="vertical">
+        <WebView
+            android:id="@+id/webView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"></WebView>
+    </LinearLayout>
        <!--<Button
         android:id="@+id/test"
         android:layout_width="100dp"

+ 1 - 1
android/app/src/main/res/values/styles.xml

@@ -1,6 +1,6 @@
 <resources>
 
-    <!-- Base application theme. -->
+    <!-- Base application theme. Theme.AppCompat.Light.NoActionBar-->
     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>