unknown 7 жил өмнө
parent
commit
83ab4ed501
100 өөрчлөгдсөн 2544 нэмэгдсэн , 121 устгасан
  1. 8 10
      android/app/app.iml
  2. 13 2
      android/app/build.gradle
  3. BIN
      android/app/jyApp.jks
  4. BIN
      android/app/libs/SocialSDK_QQ_Simplify.jar
  5. BIN
      android/app/libs/SocialSDK_WeChat_Simplify.jar
  6. BIN
      android/app/libs/mobileshieldsdk.jar
  7. BIN
      android/app/libs/umeng_shareboard_widget.jar
  8. BIN
      android/app/libs/umeng_social_api.jar
  9. BIN
      android/app/libs/umeng_social_net.jar
  10. BIN
      android/app/libs/umeng_social_shareboard.jar
  11. BIN
      android/app/libs/umeng_social_tool.jar
  12. BIN
      android/app/release/app-release.apk
  13. 58 1
      android/app/src/main/AndroidManifest.xml
  14. BIN
      android/app/src/main/ic_launcher-web.png
  15. 31 0
      android/app/src/main/java/com/topsoft/jianyu/App.java
  16. 93 0
      android/app/src/main/java/com/topsoft/jianyu/ExternalWebPage.java
  17. 0 28
      android/app/src/main/java/com/topsoft/jianyu/JavaObject.java
  18. 200 0
      android/app/src/main/java/com/topsoft/jianyu/JyObj.java
  19. 151 39
      android/app/src/main/java/com/topsoft/jianyu/MainActivity.java
  20. 122 0
      android/app/src/main/java/com/topsoft/jianyu/MyReceiver.java
  21. 36 0
      android/app/src/main/java/com/topsoft/jianyu/SQLite/DBHelper.java
  22. 364 0
      android/app/src/main/java/com/topsoft/jianyu/SQLite/DbBase.java
  23. 143 0
      android/app/src/main/java/com/topsoft/jianyu/SQLite/JyMessage.java
  24. 4 3
      android/app/src/main/java/com/topsoft/jianyu/WelcomePage.java
  25. 218 0
      android/app/src/main/java/com/topsoft/jianyu/appUpdate/UpdateVersionController.java
  26. 133 0
      android/app/src/main/java/com/topsoft/jianyu/listener/CustomLoginListerner.java
  27. 56 0
      android/app/src/main/java/com/topsoft/jianyu/listener/CustomRemoveLoginListerner.java
  28. 60 0
      android/app/src/main/java/com/topsoft/jianyu/listener/CustomShareListener.java
  29. 147 0
      android/app/src/main/java/com/topsoft/jianyu/util/AppUtil.java
  30. 53 0
      android/app/src/main/java/com/topsoft/jianyu/util/LoadingUtils.java
  31. 0 37
      android/app/src/main/java/com/topsoft/jianyu/util/StatusBar.java
  32. 42 0
      android/app/src/main/java/com/topsoft/jianyu/util/StringUtil.java
  33. 9 0
      android/app/src/main/java/com/topsoft/jianyu/wxapi/WXEntryActivity.java
  34. 0 0
      android/app/src/main/res/drawable-v24/ic_launcher_foreground1.xml
  35. 6 0
      android/app/src/main/res/drawable/button_back.xml
  36. BIN
      android/app/src/main/res/drawable/custom_progress_dialog_3_bg.9.png
  37. BIN
      android/app/src/main/res/drawable/share_thumb_img.png
  38. BIN
      android/app/src/main/res/drawable/umeng_socialize_back_icon.png
  39. 11 0
      android/app/src/main/res/drawable/umeng_socialize_btn_bg.xml
  40. BIN
      android/app/src/main/res/drawable/umeng_socialize_copy.png
  41. BIN
      android/app/src/main/res/drawable/umeng_socialize_copyurl.png
  42. BIN
      android/app/src/main/res/drawable/umeng_socialize_delete.png
  43. 11 0
      android/app/src/main/res/drawable/umeng_socialize_edit_bg.xml
  44. BIN
      android/app/src/main/res/drawable/umeng_socialize_fav.png
  45. BIN
      android/app/src/main/res/drawable/umeng_socialize_menu_default.png
  46. BIN
      android/app/src/main/res/drawable/umeng_socialize_more.png
  47. BIN
      android/app/src/main/res/drawable/umeng_socialize_qq.png
  48. BIN
      android/app/src/main/res/drawable/umeng_socialize_qzone.png
  49. BIN
      android/app/src/main/res/drawable/umeng_socialize_share_music.png
  50. BIN
      android/app/src/main/res/drawable/umeng_socialize_share_video.png
  51. BIN
      android/app/src/main/res/drawable/umeng_socialize_share_web.png
  52. BIN
      android/app/src/main/res/drawable/umeng_socialize_wechat.png
  53. BIN
      android/app/src/main/res/drawable/umeng_socialize_wxcircle.png
  54. 120 0
      android/app/src/main/res/layout-sw550dp-large/umeng_socialize_oauth_dialog.xml
  55. 6 1
      android/app/src/main/res/layout/activity_main.xml
  56. 47 0
      android/app/src/main/res/layout/activity_updater.xml
  57. 32 0
      android/app/src/main/res/layout/external_web.xml
  58. 42 0
      android/app/src/main/res/layout/simple_loading_view.xml
  59. 25 0
      android/app/src/main/res/layout/socialize_share_menu_item.xml
  60. 121 0
      android/app/src/main/res/layout/umeng_socialize_oauth_dialog.xml
  61. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher.png
  62. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
  63. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  64. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher.png
  65. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
  66. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  67. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  68. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
  69. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  70. BIN
      android/app/src/main/res/mipmap-xhdpi/umeng_socialize_fav.png
  71. BIN
      android/app/src/main/res/mipmap-xhdpi/umeng_socialize_qq.png
  72. BIN
      android/app/src/main/res/mipmap-xhdpi/umeng_socialize_qzone.png
  73. BIN
      android/app/src/main/res/mipmap-xhdpi/umeng_socialize_wechat.png
  74. BIN
      android/app/src/main/res/mipmap-xhdpi/umeng_socialize_wxcircle.png
  75. BIN
      android/app/src/main/res/mipmap-xhdpi/welcome_page_background.jpg
  76. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  77. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
  78. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  79. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  80. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
  81. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  82. 2 0
      android/app/src/main/res/values/colors.xml
  83. 3 0
      android/app/src/main/res/values/strings.xml
  84. 15 0
      android/app/src/main/res/values/styles.xml
  85. 18 0
      android/app/src/main/res/values/umeng_socialize_colors.xml
  86. 58 0
      android/app/src/main/res/values/umeng_socialize_strings.xml
  87. 82 0
      android/app/src/main/res/values/umeng_socialize_style.xml
  88. 4 0
      android/app/src/main/res/xml/file_paths.xml
  89. 0 0
      android/build/android-profile/profile-2018-01-10-16-48-53-717.json
  90. BIN
      android/build/android-profile/profile-2018-01-10-16-48-53-717.rawproto
  91. 0 0
      android/build/android-profile/profile-2018-01-10-16-49-12-325.json
  92. BIN
      android/build/android-profile/profile-2018-01-10-16-49-12-325.rawproto
  93. 0 0
      android/build/android-profile/profile-2018-01-10-16-56-17-894.json
  94. BIN
      android/build/android-profile/profile-2018-01-10-16-56-17-894.rawproto
  95. 0 0
      android/build/android-profile/profile-2018-01-10-16-58-06-195.json
  96. BIN
      android/build/android-profile/profile-2018-01-10-16-58-06-195.rawproto
  97. 0 0
      android/build/android-profile/profile-2018-01-10-17-00-07-100.json
  98. BIN
      android/build/android-profile/profile-2018-01-10-17-00-07-100.rawproto
  99. 0 0
      android/build/android-profile/profile-2018-01-15-08-41-23-744.json
  100. BIN
      android/build/android-profile/profile-2018-01-15-08-41-23-744.rawproto

+ 8 - 10
android/app/app.iml

@@ -86,26 +86,16 @@
       <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
       <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/reload-dex" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
@@ -115,7 +105,9 @@
     </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="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" />
@@ -127,21 +119,27 @@
     <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" 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" 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="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" 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="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" />

+ 13 - 2
android/app/build.gradle

@@ -7,7 +7,7 @@ android {
         minSdkVersion 23
         targetSdkVersion 26
         versionCode 1
-        versionName "1.0"
+        versionName "1.0.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
     buildTypes {
@@ -15,8 +15,19 @@ android {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
+        debug {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+    signingConfigs {
+        debug {
+            storeFile file('jyApp.jks')
+            storePassword "jytop@123"
+            keyAlias "key0"
+            keyPassword "jytop@123"
+        }
     }
-
     sourceSets {
         main {
             jniLibs.srcDirs = ['libs']

BIN
android/app/jyApp.jks


BIN
android/app/libs/SocialSDK_QQ_Simplify.jar


BIN
android/app/libs/SocialSDK_WeChat_Simplify.jar


BIN
android/app/libs/mobileshieldsdk.jar


BIN
android/app/libs/umeng_shareboard_widget.jar


BIN
android/app/libs/umeng_social_api.jar


BIN
android/app/libs/umeng_social_net.jar


BIN
android/app/libs/umeng_social_shareboard.jar


BIN
android/app/libs/umeng_social_tool.jar


BIN
android/app/release/app-release.apk


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

@@ -19,14 +19,27 @@
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
 
     <application
+        android:name=".App"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
+        <provider
+            android:name="android.support.v4.content.FileProvider"
+            android:authorities="com.topsoft.jianyu.fileprovider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/file_paths" />
+        </provider>
         <activity
             android:name=".WelcomePage"
             android:label="@string/app_name">
@@ -39,8 +52,35 @@
         <activity
             android:name=".MainActivity"
             android:label="@string/title_activity_main"></activity>
+        <activity android:name=".ExternalWebPage"></activity>
 
+        <!--分享qq的Activity-->
+        <activity
+            android:name="com.umeng.qq.tencent.AuthActivity"
+            android:launchMode="singleTask"
+            android:noHistory="true" >
 
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="tencent100424468" />
+            </intent-filter>
+        </activity>
+
+        <activity
+            android:name="com.umeng.qq.tencent.AssistActivity"
+            android:screenOrientation="portrait"
+            android:configChanges="orientation|keyboardHidden|screenSize"/>
+        <!--分享微信的Activity-->
+        <activity
+            android:name=".wxapi.WXEntryActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:exported="true"
+            android:screenOrientation="portrait"/>
+
+
+        <!--极光推送-->
         <activity
             android:name="cn.jpush.android.ui.PushActivity"
             android:configChanges="orientation|keyboardHidden"
@@ -54,6 +94,7 @@
             </intent-filter>
         </activity>
 
+
         <service
             android:name="cn.jpush.android.service.PushService"
             android:exported="false"
@@ -103,7 +144,19 @@
                 <data android:scheme="package" />
             </intent-filter>
         </receiver>
-
+        <receiver
+            android:name="com.topsoft.jianyu.MyReceiver"
+            android:exported="false"
+            android:enabled="true">
+            <intent-filter>
+                <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required  用户注册SDK的intent-->
+                <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required  用户接收SDK消息的intent-->
+                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required  用户接收SDK通知栏信息的intent-->
+                <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required  用户打开自定义通知栏的intent-->
+                <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->
+                <category android:name="com.topsoft.jianyu" />
+            </intent-filter>
+        </receiver>
         <!-- Required SDK核心功能-->
         <receiver
             android:name="cn.jpush.android.service.AlarmReceiver"
@@ -115,6 +168,10 @@
         <meta-data
             android:name="JPUSH_APPKEY"
             android:value="5efa1257867cf5d77d007ce6" />
+        <meta-data
+            android:name="UMENG_APPKEY"
+            android:value="5a685314b27b0a53710001fb" >
+        </meta-data>
     </application>
 
 </manifest>

BIN
android/app/src/main/ic_launcher-web.png


+ 31 - 0
android/app/src/main/java/com/topsoft/jianyu/App.java

@@ -0,0 +1,31 @@
+package com.topsoft.jianyu;
+
+import android.app.Application;
+
+import com.topsoft.jianyu.util.AppUtil;
+import com.umeng.socialize.Config;
+import com.umeng.socialize.PlatformConfig;
+
+import cn.jpush.android.api.JPushInterface;
+
+/**
+ * Created by wangkaiyue on 2018/1/25.
+ */
+
+public class App extends Application {
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        //是否开启友盟debug模式
+        Config.DEBUG = AppUtil.isApkInDebug(getApplicationContext());
+        //是否开启极光debug模式
+        JPushInterface.setDebugMode(AppUtil.isApkInDebug(getApplicationContext()));
+    }
+
+    //各个平台的配置,建议放在全局Application或者程序入口
+    {
+        PlatformConfig.setWeixin("wx0e6a5b18f4cfd10d", "bf12200554cb6edeb2be69d49dc11a3e");
+        PlatformConfig.setQQZone("1106703118", "MYFVJZhtygWy5hzh");
+    }
+}

+ 93 - 0
android/app/src/main/java/com/topsoft/jianyu/ExternalWebPage.java

@@ -0,0 +1,93 @@
+package com.topsoft.jianyu;
+
+import android.content.Context;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.ValueCallback;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.LinearLayout;
+
+import com.topsoft.jianyu.util.AppUtil;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by wangkaiyue on 2018/2/1.
+ */
+
+public class ExternalWebPage extends AppCompatActivity{
+
+    private WebView wv;
+    private Context ctx;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.external_web);
+        AppUtil.setAndroidNativeLightStatusBar(this,false,true);
+        ctx=this;
+        String url=getIntent().getStringExtra("url");
+        initWebview(url);
+        findViewById(R.id.back).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+    }
+    protected void initWebview(String url) {
+        LinearLayout mLayout = (LinearLayout) findViewById(R.id.webview);
+        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.setWebViewClient(new WebViewClient() {
+        });
+        wv.setWebChromeClient(new WebChromeClient() {
+            @Override
+            public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
+                super.onShowFileChooser(webView, filePathCallback, fileChooserParams);
+                return true;
+            }
+        });
+
+        WebSettings webSettings = wv.getSettings();
+        //设置支持javascript
+        webSettings.setJavaScriptEnabled(true);
+        webSettings.setDomStorageEnabled(true);
+        //允许JS弹窗
+        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+        webSettings.setSupportMultipleWindows(true);
+
+        webSettings.setUseWideViewPort(true);//屏幕自适应
+        webSettings.setLoadWithOverviewMode(true);// 缩放至屏幕的大小
+        webSettings.setLoadsImagesAutomatically(true);//是否加载图片
+        //可以访问文件
+        webSettings.setAllowFileAccess(true);
+        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("User-Agent", "Android");
+        wv.loadUrl(url, map);
+    }
+
+    @Override
+    protected void onDestroy() {
+        if (wv != null) {
+            wv.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
+            wv.clearHistory();
+            ((ViewGroup) wv.getParent()).removeView(wv);
+            wv.destroy();
+            wv = null;
+        }
+        super.onDestroy();
+    }
+}

+ 0 - 28
android/app/src/main/java/com/topsoft/jianyu/JavaObject.java

@@ -1,28 +0,0 @@
-package com.topsoft.jianyu;
-
-
-
-import android.content.Context;
-import android.webkit.JavascriptInterface;
-import android.webkit.WebView;
-
-
-
-public class JavaObject {
-
-    private static final String TAG = "JavaObject";
-
-    Context mContext;
-    WebView webView;
-
-
-    public JavaObject(Context mContext, WebView webView) {
-        this.mContext = mContext;
-        this.webView = webView;
-    }
-    @JavascriptInterface
-    public void a(){
-
-    }
-
-}

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

@@ -0,0 +1,200 @@
+package com.topsoft.jianyu;
+
+
+
+import android.app.Activity;
+import android.app.DownloadManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Environment;
+import android.support.v4.app.ActivityCompat;
+import android.util.Log;
+import android.webkit.JavascriptInterface;
+import android.webkit.WebView;
+
+import com.ccit.www.mobileshieldsdk.okutils.okhttp3.Call;
+import com.ccit.www.mobileshieldsdk.okutils.okhttputils.OkHttpUtils;
+import com.ccit.www.mobileshieldsdk.okutils.okhttputils.callback.FileCallBack;
+import com.topsoft.jianyu.SQLite.DBHelper;
+import com.topsoft.jianyu.SQLite.DbBase;
+import com.topsoft.jianyu.SQLite.JyMessage;
+import com.topsoft.jianyu.appUpdate.UpdateVersionController;
+import com.topsoft.jianyu.listener.CustomLoginListerner;
+import com.topsoft.jianyu.listener.CustomRemoveLoginListerner;
+import com.topsoft.jianyu.listener.CustomShareListener;
+import com.topsoft.jianyu.util.AppUtil;
+import com.umeng.socialize.ShareAction;
+import com.umeng.socialize.UMShareAPI;
+import com.umeng.socialize.UMShareListener;
+import com.umeng.socialize.bean.SHARE_MEDIA;
+import com.umeng.socialize.media.UMImage;
+import com.umeng.socialize.media.UMWeb;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+import static android.content.Context.MODE_PRIVATE;
+
+
+public class JyObj {
+
+    private static final String LOG_TAG = "JyObj";
+
+    Context mContext;
+    WebView webView;
+    MainActivity mainActivity;
+    SharedPreferences share=null;
+
+    public JyObj(Context mContext, WebView webView) {
+        this.mContext = mContext;
+        this.webView = webView;
+        this.mainActivity=(MainActivity)mContext;
+        share=mContext.getSharedPreferences("jy", MODE_PRIVATE);
+    }
+
+    //分享
+    @JavascriptInterface
+    public void share(String title,String content,String link){
+        final UMShareListener umShareListener=new CustomShareListener(mContext);
+        //申请分享所需要的权限
+        if(Build.VERSION.SDK_INT>=23){
+            String[] mPermissionList = new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE,android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.CALL_PHONE,android.Manifest.permission.READ_LOGS,android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE,android.Manifest.permission.SET_DEBUG_APP,android.Manifest.permission.SYSTEM_ALERT_WINDOW,android.Manifest.permission.GET_ACCOUNTS,android.Manifest.permission.WRITE_APN_SETTINGS};
+            ActivityCompat.requestPermissions(mainActivity,mPermissionList,123);
+        }
+        //弹出分享面板
+        UMWeb web = new UMWeb(link);
+        web.setTitle(title);//标题
+        UMImage thumb =  new UMImage(mContext, R.drawable.share_thumb_img);
+        web.setThumb(thumb);  //缩略图
+        web.setDescription(content);//描述
+        new ShareAction(mainActivity)
+                .withMedia(web)
+                .setDisplayList(SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN,SHARE_MEDIA.WEIXIN_CIRCLE)
+                .setCallback(umShareListener)
+                .open();
+
+    }
+
+    //用户登录
+    @JavascriptInterface
+    public void loginByWeixin(){
+        CustomLoginListerner authListener=new CustomLoginListerner(mContext,webView);
+        UMShareAPI.get(mContext).getPlatformInfo(mainActivity, SHARE_MEDIA.WEIXIN, authListener);
+    }
+
+    //保存用户登录标识
+    @JavascriptInterface
+    public void saveUserToken(String token){
+        SharedPreferences.Editor editor = share.edit();
+        editor.putString("token",token);
+        editor.commit();
+    }
+
+    //获取用户标识
+    @JavascriptInterface
+    public String getUserToken(){
+        return share.getString("token","");
+    }
+
+    //删除用户登录标识
+    @JavascriptInterface
+    public void removeUserToken(){
+        //清除授权
+        CustomRemoveLoginListerner removeLoginListerner=new CustomRemoveLoginListerner(mContext,webView);
+        UMShareAPI.get(mContext).deleteOauth(mainActivity,SHARE_MEDIA.WEIXIN,removeLoginListerner);
+        //清除共享存储区中的openid
+        share.edit().clear().commit();
+    }
+
+    //判断是否开启通知权限 0:没有 1:开启
+    @JavascriptInterface
+    public int checkNoticePermission(){
+        return AppUtil.isNotificationEnabled(mContext)?1:0;
+    }
+
+    //获取极光推送客户端id
+    @JavascriptInterface
+    public String getPushRid(){
+        return AppUtil.JPUSH_CLIENT_RGSID;
+    }
+
+    //更新状态
+    @JavascriptInterface
+    public void updateMessageState(String id,boolean state){
+        DbBase.getInstance(mContext).updateMessageState(Integer.parseInt(id),state);
+    }
+
+    //删除消息
+    @JavascriptInterface
+    public void deleteMessageById(String id){
+        if(DbBase.getInstance(mContext).deleteMessageById(Integer.parseInt(id))){
+            System.out.println("删除数据成功");
+        }else{
+            System.out.println("删除数据失败");
+        }
+    }
+
+    //获取单条消息
+    @JavascriptInterface
+    public String getMessage(String id){
+        System.out.println(DbBase.getInstance(mContext).findOneMessage(id));
+        return DbBase.getInstance(mContext).findOneMessage(id).toString();
+    }
+
+    //获取未读消息数量
+    @JavascriptInterface
+    public int getUnReadMessageCount(String openid){
+        return DbBase.getInstance(mContext).getUnReadCount(openid);
+    }
+
+    //全部标记为已读
+    @JavascriptInterface
+    public void updateAllUnReadMessage(String openid){
+        DbBase.getInstance(mContext).updateAllMegReaded(openid);
+    }
+
+    //获取通知信息列表 取前100条
+    @JavascriptInterface
+    public String getMessageList(String openid){
+        JSONArray list= DbBase.getInstance(mContext).getMessageList(openid);
+
+        return list.toString();
+    }
+
+    //打开外部链接
+    @JavascriptInterface
+    public void openExternalLink(String url){
+        if(!"".equals(url)){
+            Intent i=new Intent(mainActivity,ExternalWebPage.class);
+            i.putExtra("url",url);
+            mContext.startActivity(i);
+        }
+    }
+
+//==============================================================================================
+
+
+    @JavascriptInterface
+    public void lightStatusBar(String isLight){
+       /* if("1".equals(isLight)){
+            StatusBar.setAndroidNativeLightStatusBar(mainActivity,false);
+        }else{
+            StatusBar.setAndroidNativeLightStatusBar(mainActivity,true);
+        }*/
+    }
+
+
+    @JavascriptInterface
+    public void test(){
+
+    }
+}

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

@@ -1,25 +1,42 @@
 package com.topsoft.jianyu;
 
 
+
+import android.app.Notification;
 import android.content.Context;
 
+import android.content.Intent;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Message;
 import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.KeyEvent;
+import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.ValueCallback;
+import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 import android.widget.LinearLayout;
 import android.widget.Toast;
 
-import com.topsoft.jianyu.util.StatusBar;
+import com.topsoft.jianyu.SQLite.DBHelper;
+import com.topsoft.jianyu.appUpdate.UpdateVersionController;
+import com.topsoft.jianyu.util.AppUtil;
+import com.umeng.socialize.UMShareAPI;
+
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
 
+import cn.jpush.android.api.BasicPushNotificationBuilder;
 import cn.jpush.android.api.JPushInterface;
 
 
@@ -27,30 +44,61 @@ public class MainActivity extends AppCompatActivity {
 
     private WebView wv;
     private final String LOG_TAG = "JC_WebView";
-    private final String JianYun_App_Home_Url = "https://www.jianyu360.com/";
-
+    private Context ctx;
+    private String rgsid = "";
+    private Timer timer;
+    private String pushurl;
 
+    //qq分享需添加此项
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
-        StatusBar.setAndroidNativeLightStatusBar(this,true);
-        initWebview();
-
-        final Context ctx = this;
-        new Handler().postDelayed(new Runnable() {
-            public void run() {
-                JPushInterface.setDebugMode(true);
-                JPushInterface.init(ctx);
-                String rgsid = JPushInterface.getRegistrationID(ctx);
-                Log.d(LOG_TAG, "rgsid=" + rgsid);
-                String uid = JPushInterface.getUdid(ctx);
-                Log.d(LOG_TAG, "UID=" + uid);
-
-                Toast.makeText(ctx, "你的RID::"+rgsid+"极光推送时要用到,请绑定到剑鱼用户,每次启动更新", Toast.LENGTH_LONG).show();
+        AppUtil.setAndroidNativeLightStatusBar(this,true,true);
+        ctx = this;
+        //初始化WebView
+        pushurl=getIntent().getStringExtra("url");
+
+        //判断是否是点击推送打开的
+        if(pushurl==null||"".equals(pushurl)){
+            initWebview(AppUtil.AppUrl+"/jyapp/free/me");
+            //initWebview("http://192.168.100.68:8020/jyAppWeb/index.html");
+        }else{
+            initWebview(AppUtil.AppUrl+pushurl);
+        }
+
+        //初始化配置
+        initconfigure();
+
+        findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                setStyleBasic();
+                /*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");
+                while(cursor.moveToNext()){
+                    System.out.print("id="+cursor.getInt(cursor.getColumnIndex("id")));
+                    System.out.print("   title="+cursor.getString(cursor.getColumnIndex("title")));
+                    System.out.print("   content="+cursor.getString(cursor.getColumnIndex("content")));
+                    System.out.print("   link="+cursor.getString(cursor.getColumnIndex("link")));
+                    System.out.print("   category="+cursor.getString(cursor.getColumnIndex("category")));
+                    System.out.print("   readed="+cursor.getInt(cursor.getColumnIndex("readed")));
+                    System.out.print("   comeintime="+cursor.getInt(cursor.getColumnIndex("comeintime")));
+                    System.out.print("   openid="+cursor.getString(cursor.getColumnIndex("openid")));
+                    System.out.print("   descript="+cursor.getString(cursor.getColumnIndex("descript")));
+                    System.out.println("   extend="+cursor.getString(cursor.getColumnIndex("extend")));
+                }
+                System.out.println("查询完成"+cursor.getCount()+"条");
+                db.close();*/
             }
-        }, 2000);
+        });
 
     }
 
@@ -64,44 +112,108 @@ public class MainActivity extends AppCompatActivity {
         return super.onKeyDown(keyCode, event);
     }
 
-    protected void initWebview() {
+    @Override
+    protected void onDestroy() {
+        if (wv != null) {
+            wv.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
+            wv.clearHistory();
+            ((ViewGroup) wv.getParent()).removeView(wv);
+            wv.destroy();
+            wv = null;
+        }
+        super.onDestroy();
+    }
+
+    //初始化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.setWebViewClient(new WebViewClient() {
+        });
+        wv.setWebChromeClient(new WebChromeClient() {
             @Override
-            public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                view.loadUrl(url);
+            public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
+                super.onShowFileChooser(webView, filePathCallback, fileChooserParams);
                 return true;
             }
+            @Override
+            public void onProgressChanged(WebView view, int newProgress) {
+                //通过点击提示进入改页面 返回键需要改变
+                if(newProgress==100&&!(pushurl==null||"".equals(pushurl))){
+                    wv.loadUrl("javascript:afterOpenPushMessage()");
+                    pushurl=null;
+                }
+            }
         });
+
         WebSettings webSettings = wv.getSettings();
-        webSettings.setJavaScriptEnabled(true);//设置支持javascript
-        webSettings.setUseWideViewPort(true);
+        //设置支持javascript
+        webSettings.setJavaScriptEnabled(true);
+        webSettings.setDomStorageEnabled(true);
+        //允许JS弹窗
+        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+        webSettings.setSupportMultipleWindows(true);
 
-        webSettings.setLoadWithOverviewMode(true);
-        webSettings.setLoadsImagesAutomatically(true);
-        webSettings.setAllowFileAccess(true); //可以访问文件
+        webSettings.setUseWideViewPort(true);//屏幕自适应
+        webSettings.setLoadWithOverviewMode(true);// 缩放至屏幕的大小
+        webSettings.setLoadsImagesAutomatically(true);//是否加载图片
+        //可以访问文件
+        webSettings.setAllowFileAccess(true);
         webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
 
         Map<String, String> map = new HashMap<String, String>();
         map.put("User-Agent", "Android");
-        wv.loadUrl(JianYun_App_Home_Url, map);
-        wv.addJavascriptInterface(new JavaObject(this, wv), "myObj");
+        wv.loadUrl(url, map);
+        wv.addJavascriptInterface(new JyObj(this, wv), "JyObj");
     }
 
-    @Override
-    protected void onDestroy() {
-        if (wv != null) {
-            wv.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
-            wv.clearHistory();
-            ((ViewGroup) wv.getParent()).removeView(wv);
-            wv.destroy();
-            wv = null;
-        }
-        super.onDestroy();
+    //初始化其他配置设置
+    private void initconfigure(){
+        UMShareAPI.get(this);
+        mHandler.obtainMessage(1).sendToTarget();
+        mHandler.obtainMessage(2).sendToTarget();
+
+    }
+    private void setStyleBasic() {
+        BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(MainActivity.this);
+        builder.statusBarDrawable = R.mipmap.ic_launcher;
+        builder.notificationFlags = Notification.FLAG_AUTO_CANCEL;  //设置为点击后自动消失
+        builder.notificationDefaults = Notification.DEFAULT_SOUND;  //设置为铃声( Notification.DEFAULT_SOUND)或者震动( Notification.DEFAULT_VIBRATE)
+        JPushInterface.setPushNotificationBuilder(1, builder);
     }
+    private Handler mHandler = new Handler() {
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case 1:
+                    //初始化极光推送
+                    JPushInterface.init(ctx);
+                    //获取rgsid,第一次安装app,初始化时,不能及时获取到,定时获取
+                    timer= new Timer();
+                    timer.schedule(new TimerTask() {
+                        @Override
+                        public void run() {
+                            rgsid=JPushInterface.getRegistrationID(getApplicationContext());
+                            Log.d(LOG_TAG, "------rgsid=");
+                            if(!"".equals(rgsid)){
+                                Log.d(LOG_TAG, "最终------rgsid=" + rgsid);
+                                AppUtil.JPUSH_CLIENT_RGSID=rgsid;
+                                timer.cancel();
+                            }
+                        }
+                    }, 0, 500);
+
+                    //样式
+
+                    break;
+                case 2:
+                    //监测更新
+                    UpdateVersionController.getInstance(MainActivity.this).appUpdateCheck();
+                    break;
+
+            }
+        }
+    };
 }

+ 122 - 0
android/app/src/main/java/com/topsoft/jianyu/MyReceiver.java

@@ -0,0 +1,122 @@
+package com.topsoft.jianyu;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.topsoft.jianyu.SQLite.DbBase;
+import com.topsoft.jianyu.SQLite.JyMessage;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
+
+import cn.jpush.android.api.JPushInterface;
+
+import static cn.jpush.android.api.JPushInterface.EXTRA_EXTRA;
+
+/**
+ * 自定义接收器
+ *
+ * 如果不定义这个 Receiver,则:
+ * 1) 默认用户会打开主界面
+ * 2) 接收不到自定义消息
+ */
+public class MyReceiver extends BroadcastReceiver {
+	private static final String LOG_TAG = "MyReceiver";
+
+	@Override
+	public void onReceive(Context context, Intent intent) {
+
+		if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
+			try {
+				Bundle bundle = intent.getExtras();
+				String title,content,openid,type,descript,extend,url;
+				String list_str=bundle.getString(EXTRA_EXTRA);
+				printBundle(bundle);
+				if(!"".equals(list_str)&&list_str!=null){
+					JSONObject obj=new JSONObject(list_str);
+					JSONObject litObj=new JSONObject(obj.getString("info"));
+					type=obj.has("type")?obj.getString("type"):"";
+					openid=litObj.has("openid")?litObj.getString("openid"):"";
+					url=litObj.has("url")?litObj.getString("url"):"";
+					content=litObj.has("content")?litObj.getString("content"):"";
+					title=litObj.has("title")?litObj.getString("title"):"";
+					descript=litObj.has("descript")?litObj.getString("descript"):"";
+					extend=litObj.has("extend")?litObj.getJSONObject("extend")+"":"";
+
+					//存入数据库
+					JyMessage oneMsg=new JyMessage(title,content,url,type,0,(int)(System.currentTimeMillis()/1000),openid,descript,extend);
+					if(DbBase.getInstance(context).insertMessage(oneMsg)){
+						System.out.println("插入推送消息成功");
+					}else{
+						System.out.println("插入推送消息失败");
+					}
+				}
+			} catch (Exception e){
+				Log.e(LOG_TAG,"接受信息出错"+e.getMessage());
+			}
+
+		} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
+			Bundle bundle=intent.getExtras();
+			try{
+				JSONObject obj=new JSONObject(bundle.getString(EXTRA_EXTRA));
+				JSONObject litObj=new JSONObject(obj.getString("info"));
+				String url=litObj.getString("url");
+				DbBase.getInstance(context).updateMessageState(url);
+				Intent i = new Intent(context, MainActivity.class);
+				i.putExtra("url",url);
+				i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
+				context.startActivity(i);
+			}catch (Exception e){
+				Log.e(LOG_TAG,"改变信息已读出错"+e.getMessage());
+			}
+
+		}
+
+
+	}
+
+	// 打印所有的 intent extra 数据
+	private static String printBundle(Bundle bundle) {
+		StringBuilder sb = new StringBuilder();
+		for (String key : bundle.keySet()) {
+			System.out.println(key+"--->"+bundle.get(key));
+		}
+
+		for (String key : bundle.keySet()) {
+			if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
+				sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));
+			}else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){
+				sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));
+			} else if (key.equals(EXTRA_EXTRA)) {
+				if (TextUtils.isEmpty(bundle.getString(EXTRA_EXTRA))) {
+					System.out.println("This message has no Extra data");
+					continue;
+				}
+
+				try {
+					JSONObject json = new JSONObject(bundle.getString(EXTRA_EXTRA));
+					Iterator<String> it =  json.keys();
+
+					while (it.hasNext()) {
+						String myKey = it.next();
+						sb.append("\nkey:" + key + ", value: [" +
+								myKey + " - " +json.optString(myKey) + "]");
+					}
+				} catch (JSONException e) {
+					System.out.println("Get message extra JSON error!");
+				}
+
+			} else {
+				sb.append("\nkey:" + key + ", value:" + bundle.getString(key));
+			}
+		}
+		return sb.toString();
+	}
+}

+ 36 - 0
android/app/src/main/java/com/topsoft/jianyu/SQLite/DBHelper.java

@@ -0,0 +1,36 @@
+package com.topsoft.jianyu.SQLite;
+
+/**
+ * Created by wangkaiyue on 2018/1/26.
+ */
+
+
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteDatabase.CursorFactory;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.util.Log;
+
+public class DBHelper extends SQLiteOpenHelper {
+
+    private static final String TAG = "TestSQLite";
+    public static final int VERSION = 1;
+
+    //必须要有构造函数
+    public DBHelper(Context context, String name, CursorFactory factory,int version) {
+        super(context, name, factory, version);
+    }
+
+    // 当第一次创建数据库的时候,调用该方法
+    public void onCreate(SQLiteDatabase db) {
+        String sql="create table jy_message (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT,content TEXT,link TEXT,category TEXT,openid TEXT NOT NULL,readed INTEGER,comeintime INTEGER,descript TEXT,extend TEXT)";
+        Log.i(TAG, "首次创建数据库");
+        db.execSQL(sql);
+    }
+
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        //输出更新数据库的日志信息
+        Log.i(TAG, "update Database------------->");
+    }
+}

+ 364 - 0
android/app/src/main/java/com/topsoft/jianyu/SQLite/DbBase.java

@@ -0,0 +1,364 @@
+package com.topsoft.jianyu.SQLite;
+
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.util.Log;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static android.content.Context.MODE_PRIVATE;
+
+/**
+ * Created by wangkaiyue on 2018/1/26.
+ */
+
+public class DbBase {
+
+    private final String DB_NAME="jy_db";
+    private final String MASSAHE_TABLE_NAME="jy_message";
+    static SharedPreferences share=null;
+
+
+    private static DbBase dbBase;
+    private static Context context;
+
+    private final String LOG_TAG = "JC_WebView";
+
+    public DbBase(Context context){
+        this.context=context;
+    }
+    public static DbBase getInstance(Context ctx){
+        context=ctx;
+        if (dbBase==null){
+            dbBase=new DbBase(ctx);
+        }
+        share=context.getSharedPreferences("jy", MODE_PRIVATE);
+        return dbBase;
+    }
+
+    //插入一条信息
+    public boolean insertMessage(JyMessage message){
+        boolean result = true;
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getWritableDatabase();
+        try{
+
+            db.beginTransaction();
+            ContentValues cv= message.getMsaagesContentValues();
+
+            if(db.insert(MASSAHE_TABLE_NAME, null, cv)<0){
+                result=false;
+            }
+            if (result) {
+                db.setTransactionSuccessful();
+            }
+        }catch (Exception e) {
+            Log.e(LOG_TAG,e.getMessage());
+            return false;
+        } finally {
+            try {
+                if (null != db) {
+                    db.endTransaction();
+                    db.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    //取单条通知消息
+    public JSONObject findOneMessage(String id){
+        JSONObject msg=new JSONObject();
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getReadableDatabase();
+        try{
+            //参数1:表名
+            //参数2:要想显示的列
+            //参数3:where子句
+            //参数4:where子句对应的条件值
+            //参数5:分组方式
+            //参数6:having条件
+            //参数7:排序方式
+            Cursor cursor = db.query(MASSAHE_TABLE_NAME, new String[]{"id","title","content","link","category","openid","readed","comeintime","descript","extend"}, "id=?", new String[]{id}, null, null, null);
+            while(cursor.moveToNext()){
+                msg.put("id",cursor.getInt(cursor.getColumnIndex("id"))+"");
+                msg.put("title",cursor.getString(cursor.getColumnIndex("title")));
+                msg.put("content",cursor.getString(cursor.getColumnIndex("content")));
+                msg.put("link",cursor.getString(cursor.getColumnIndex("link")));
+                msg.put("category",cursor.getString(cursor.getColumnIndex("category")));
+                msg.put("readed",cursor.getInt(cursor.getColumnIndex("readed"))+"");
+                msg.put("comeintime",cursor.getInt(cursor.getColumnIndex("comeintime"))+"");
+                msg.put("openid",cursor.getString(cursor.getColumnIndex("openid")));
+                msg.put("descript",cursor.getString(cursor.getColumnIndex("descript")));
+                msg.put("extend",cursor.getString(cursor.getColumnIndex("extend")));
+            }
+        }catch (Exception e){
+            Log.e(LOG_TAG,e.getMessage());
+            return null;
+        }finally {
+            if (null != db) {
+                db.close();
+            }
+        }
+        return msg;
+    }
+
+    //更新消息状态
+    public boolean updateMessageState(Integer id,boolean state) {
+        boolean result = true;
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getWritableDatabase();
+        try {
+            db.beginTransaction();
+            ContentValues cv = new ContentValues();
+            if(state){
+                cv.put("readed", 1);
+            }else{
+                cv.put("readed", 0);
+            }
+            String whereClause = "id=?";
+            String[] whereArgs = {id.toString()};
+            //参数1 是要更新的表名
+            //参数2 是一个ContentValeus对象
+            //参数3 是where子句
+            if(db.update(MASSAHE_TABLE_NAME, cv, whereClause, whereArgs)<0){
+                result=false;
+            }
+            if (result) {
+                db.setTransactionSuccessful();
+            }
+        } catch (Exception e) {
+            Log.e(LOG_TAG,e.getMessage());
+            return false;
+        } finally {
+            try {
+                if (null != db) {
+                    db.endTransaction();
+                    db.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    public boolean updateMessageState(String url) {
+        boolean result = true;
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getWritableDatabase();
+        try {
+            db.beginTransaction();
+            ContentValues cv = new ContentValues();
+            cv.put("readed", 1);
+
+            String whereClause = "link=?";
+            String[] whereArgs = {url};
+            //参数1 是要更新的表名
+            //参数2 是一个ContentValeus对象
+            //参数3 是where子句
+            if(db.update(MASSAHE_TABLE_NAME, cv, whereClause, whereArgs)<0){
+                result=false;
+            }
+            if (result) {
+                db.setTransactionSuccessful();
+            }
+        } catch (Exception e) {
+            Log.e(LOG_TAG,e.getMessage());
+            return false;
+        } finally {
+            try {
+                if (null != db) {
+                    db.endTransaction();
+                    db.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    //删除一条信息
+    public boolean deleteMessageById(Integer id){
+        boolean result = true;
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getReadableDatabase();
+        try {
+            db.beginTransaction();
+            String whereClauses = "id=?";
+            String [] whereArgs = {id.toString()};
+            if(db.delete(MASSAHE_TABLE_NAME, whereClauses, whereArgs)<0){
+                result = false;
+            }
+            if (result) {
+                db.setTransactionSuccessful();
+            }
+        } catch (Exception e) {
+            Log.e(LOG_TAG,e.getMessage());
+            return false;
+        } finally {
+            try {
+                if (null != db) {
+                    db.endTransaction();
+                    db.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    //批量插入
+    public boolean insertMessageList(List<JyMessage> list){
+        boolean result = true;
+        if (null == list || list.size() <= 0) {
+            return true;
+        }
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getWritableDatabase();
+        try {
+            String openid = share.getString("openid", "");
+            if("".equals(openid)){
+                return false;   //openid为空
+            }
+            db.beginTransaction();
+            for (JyMessage msg : list) {
+                ContentValues values = msg.getMsaagesContentValues();
+                values.put("openid",openid);
+                if (db.insert(MASSAHE_TABLE_NAME, null, values) < 0) {
+                    result = false;
+                    break;
+                }
+            }
+            if (result) {
+                db.setTransactionSuccessful();
+            }
+        } catch (Exception e) {
+            Log.e(LOG_TAG,e.getMessage());
+            return false;
+        } finally {
+            try {
+                if (null != db) {
+                    db.endTransaction();
+                    db.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    //按通知接收时间倒排,取前100条(或者做分页处理)。
+    public JSONArray getMessageList(String openid){
+        //List<Map<String,String>> list=new ArrayList<Map<String,String>>();
+        JSONArray list=new JSONArray();
+        JSONObject msg=null;
+        DBHelper dbHelper = new DBHelper(context,"jy_db",null,1);
+        SQLiteDatabase db =dbHelper.getWritableDatabase();
+        try{
+            Cursor cursor = db.query("jy_message", new String[]{"id","title","content","link","category","openid","readed","comeintime","descript","extend"}, "openid=?", new String[]{openid}, null, null, "comeintime desc");
+            int count=0;
+            while(cursor.moveToNext()&&count<100){
+                count++;
+                msg=new JSONObject();
+                msg.put("id",cursor.getInt(cursor.getColumnIndex("id"))+"");
+                msg.put("title",cursor.getString(cursor.getColumnIndex("title")));
+                msg.put("content",cursor.getString(cursor.getColumnIndex("content")));
+                msg.put("link",cursor.getString(cursor.getColumnIndex("link")));
+                msg.put("category",cursor.getString(cursor.getColumnIndex("category")));
+                msg.put("openid",cursor.getString(cursor.getColumnIndex("openid")));
+                msg.put("readed",cursor.getInt(cursor.getColumnIndex("readed"))+"");
+                msg.put("comeintime",cursor.getInt(cursor.getColumnIndex("comeintime"))+"");
+                msg.put("descript",cursor.getString(cursor.getColumnIndex("descript")));
+                msg.put("extend",cursor.getString(cursor.getColumnIndex("extend")));
+                list.put(msg);
+            }
+            return  list;
+        }catch (Exception e){
+            Log.e(LOG_TAG,e.getMessage());
+        }finally{
+            try {
+                if (null != db) {
+                    db.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    //获取未读消息数量
+    public int getUnReadCount(String openid){
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getReadableDatabase();
+        try{
+            //参数1:表名
+            //参数2:要想显示的列
+            //参数3:where子句
+            //参数4:where子句对应的条件值
+            //参数5:分组方式
+            //参数6:having条件
+            //参数7:排序方式
+            Cursor cursor = db.query(MASSAHE_TABLE_NAME, new String[]{"id","title","content","link","category","openid","readed","comeintime","descript","extend"}, "openid=? and readed=?", new String[]{openid,"0"}, null, null, null);
+            return cursor.getCount();
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if (null != db) {
+                db.close();
+            }
+        }
+        return -1;
+    }
+
+    //所有信息设置为已读
+    public int updateAllMegReaded(String openid){
+        int num=0;
+        DBHelper dbHelper = new DBHelper(context,DB_NAME,null,1);
+        SQLiteDatabase db =dbHelper.getWritableDatabase();
+        try {
+            db.beginTransaction();
+            ContentValues cv = new ContentValues();
+            cv.put("readed", 1);
+
+            String whereClause = "openid=?";
+            String[] whereArgs = {openid};
+            //参数1 是要更新的表名
+            //参数2 是一个ContentValeus对象
+            //参数3 是where子句
+            num=db.update(MASSAHE_TABLE_NAME, cv, whereClause, whereArgs);
+            if (num>0) {
+                db.setTransactionSuccessful();
+            }
+        } catch (Exception e) {
+            Log.e(LOG_TAG,e.getMessage());
+            return num;
+        } finally {
+            try {
+                if (null != db) {
+                    db.endTransaction();
+                    db.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return num;
+    }
+}

+ 143 - 0
android/app/src/main/java/com/topsoft/jianyu/SQLite/JyMessage.java

@@ -0,0 +1,143 @@
+package com.topsoft.jianyu.SQLite;
+
+import android.content.ContentValues;
+
+
+/**
+ * Created by wangkaiyue on 2018/1/26.
+ */
+
+public class JyMessage {
+    private Integer id;     //标识
+    private String title;   //标题
+    private String content; //内容
+    private String link;    //链接
+    private String category;    //分类
+    private Integer readed; //是否已读  0:未读  1:已读
+    private Integer comeintime;  //接受时间
+    private String openid;  //用户标识
+    private String descript; //描述
+    private String extend;  //扩展字段
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public Integer getReaded() {
+        return readed;
+    }
+
+    public void setReaded(Integer readed) {
+        this.readed = readed;
+    }
+
+    public Integer getComeintime() {
+        return comeintime;
+    }
+
+    public void setComeintime(Integer comeintime) {
+        this.comeintime = comeintime;
+    }
+
+    public String getOpenid() {
+        return openid;
+    }
+
+    public void setOpenid(String openid) {
+        this.openid = openid;
+    }
+
+    public String getDescript() {
+        return descript;
+    }
+
+    public void setDescript(String descript) {
+        this.descript = descript;
+    }
+
+    public String getExtend() {
+        return extend;
+    }
+
+    public void setExtend(String extend) {
+        this.extend = extend;
+    }
+
+    public JyMessage(){}
+
+    /**
+     * 推送信息
+     * @param title 标题
+     * @param content   内容
+     * @param link  链接
+     * @param category  分类
+     * @param readed    是否已读
+     * @param comeintime    创建事件
+     * @param openid    用户标识
+     * @param descript    描述
+     * @param extend    扩展字段
+     */
+    public JyMessage(String title, String content, String link, String category, Integer readed, Integer comeintime, String openid,String descript,String extend) {
+        this.title = title;
+        this.content = content;
+        this.link = link;
+        this.category = category;
+        this.readed = readed;
+        this.comeintime = comeintime;
+        this.openid = openid;
+        this.descript=descript;
+        this.extend=extend;
+    }
+
+    public ContentValues getMsaagesContentValues(){
+        ContentValues cv = new ContentValues();
+        cv.put("id", id);
+        cv.put("title", title);
+        cv.put("content",content);
+        cv.put("link", link);
+        cv.put("category",category);
+        cv.put("readed", readed);
+        cv.put("comeintime", comeintime);
+        cv.put("descript",descript);
+        if(!"".equals(openid)&&openid!=null){
+            cv.put("openid",openid);
+        }
+        return cv;
+    }
+}

+ 4 - 3
android/app/src/main/java/com/topsoft/jianyu/WelcomePage.java

@@ -6,7 +6,7 @@ import android.os.Handler;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
 
-import com.topsoft.jianyu.util.StatusBar;
+import com.topsoft.jianyu.util.AppUtil;
 
 
 /**
@@ -14,20 +14,21 @@ import com.topsoft.jianyu.util.StatusBar;
  */
 
 public class WelcomePage extends AppCompatActivity {
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.welcome_page);
-        StatusBar.setAndroidNativeLightStatusBar(this,true);
+        AppUtil.setAndroidNativeLightStatusBar(this,true,true);
         toMainActivity();
     }
-    //检测更新
 
     //跳转Mainactivity
     private void toMainActivity(){
         new Handler().postDelayed(new Runnable() {
             public void run() {
                 startActivity(new Intent(WelcomePage.this,MainActivity.class));
+                finish();
             }
         }, 2000);
     }

+ 218 - 0
android/app/src/main/java/com/topsoft/jianyu/appUpdate/UpdateVersionController.java

@@ -0,0 +1,218 @@
+package com.topsoft.jianyu.appUpdate;
+
+import android.app.Dialog;
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Environment;
+import android.support.v4.content.FileProvider;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.ccit.www.mobileshieldsdk.okutils.okhttp3.Call;
+import com.ccit.www.mobileshieldsdk.okutils.okhttputils.OkHttpUtils;
+import com.ccit.www.mobileshieldsdk.okutils.okhttputils.callback.FileCallBack;
+import com.ccit.www.mobileshieldsdk.okutils.okhttputils.callback.StringCallback;
+import com.topsoft.jianyu.R;
+import com.topsoft.jianyu.util.AppUtil;
+import com.topsoft.jianyu.util.LoadingUtils;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by wanghuidong on 2017/11/1.
+ */
+
+public class UpdateVersionController {
+
+
+    private String AppUpdateUrl=AppUtil.AppUrl+"/jyapp/free/checkUpdate";
+
+    private Context context;
+    private static final String TAG = "UpdateVersionController";
+    private String destFileDir = Environment.getExternalStorageDirectory().getPath() + "/temp";
+
+    //下载进度条
+    private ProgressDialog pd;
+    private Button cancelBtn;
+
+    public static UpdateVersionController getInstance(Context context) {
+        return new UpdateVersionController(context);
+    }
+
+    public UpdateVersionController(Context context) {
+        this.context = context;
+    }
+
+
+    //检测更新
+    public void appUpdateCheck() {
+        final Dialog dialog = LoadingUtils.createLoadingDialog(context, "正在连接服务器检查信息...");
+        OkHttpUtils.post().url(AppUpdateUrl).build().execute(new StringCallback() {
+            @Override
+            public void onError(Call call, Exception e, int i) {
+                LoadingUtils.closeDialog(dialog);
+                Toast.makeText(context, "服务器信息获取失败请检查网络或者重新设置连接信息!", Toast.LENGTH_SHORT).show();
+                Log.e(TAG, "检查更新出错:" + AppUpdateUrl);
+            }
+
+            @Override
+            public void onResponse(String s, int j) {
+                LoadingUtils.closeDialog(dialog);
+                String result = new String(s);
+                Log.e(TAG, "获取版本号接口返回值:" + result);
+                JSONObject jsonObject = null;
+                try {
+                    jsonObject = new JSONObject(result);
+                    Log.e(TAG, "获取到服务端更新版本号:" + jsonObject.getString("version"));
+
+                    if (jsonObject.has("version")){
+                        String AppVersion=AppUtil.getVersionName(context);
+                        String curVersion=jsonObject.getString("version");
+                        if (!AppVersion.equals(curVersion)){
+                            //需要更新,弹出显示更新对话框
+                            String dialgText="检测到新版本"+curVersion+"(当前版本:"+AppVersion+")";
+                            Boolean mustupdate=jsonObject.getBoolean("mustupdate");
+                            String updateUrl=jsonObject.getString("apkurl");
+                            showUpdataDialog(mustupdate,dialgText,updateUrl);
+                        }
+                    }
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    //弹出更新提示框
+    public void showUpdataDialog(final Boolean mustUpdate, final String dialogText,final String updateUrl) {
+
+        final Dialog dialog = new Dialog(context);
+        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
+        dialog.setContentView(R.layout.activity_updater);
+        dialog.setCanceledOnTouchOutside(false);
+        dialog.setCancelable(false);
+        dialog.setTitle("版本更新");
+        ((TextView) dialog.findViewById(R.id.content)).setText(dialogText);
+        cancelBtn = (Button) dialog.findViewById(R.id.cancel);
+        String cancelText=mustUpdate?"退出":"暂不更新";
+
+        cancelBtn.setText(cancelText);
+        //cancelBtn.setVisibility(mustUpdate? View.GONE : View.VISIBLE);
+        // 取消更新
+        cancelBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if(mustUpdate){
+                    System.exit(0);
+                }else{
+                    dialog.dismiss();
+                }
+            }
+        });
+        // 确认更新
+        dialog.findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dialog.dismiss();
+                Log.e("下载链接",updateUrl);
+                downLoadApk(updateUrl);
+            }
+        });
+        dialog.show();
+    }
+
+    //下载进度条
+    private void downLoadApk(final String updateUrl) {
+        // 进度条对话框
+        pd = new ProgressDialog(context);
+        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+        pd.setMessage("下载中...");
+        pd.setCanceledOnTouchOutside(false);
+        pd.setCancelable(false);
+        // 监听返回键--防止下载的时候点击返回
+        pd.setOnKeyListener(new DialogInterface.OnKeyListener() {
+            @Override
+            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
+                if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
+                    Toast.makeText(context, "正在下载请稍后", Toast.LENGTH_SHORT).show();
+                    return true;
+                } else {
+                    return false;
+                }
+            }
+        });
+        // Sdcard不可用
+        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+            Toast.makeText(context, "SD卡不可用~", Toast.LENGTH_SHORT).show();
+        } else {
+            pd.show();
+            File sdDir = new File(destFileDir);
+            if (!sdDir.exists()) {
+                sdDir.mkdirs();
+            }
+
+            //http://192.168.3.207:8081/res/zsgs_001_V1.3.6.apk
+            final String tmpFileName=updateUrl.substring(updateUrl.lastIndexOf("/") + 1);
+            OkHttpUtils.post().url(destFileDir).build().execute(new FileCallBack(destFileDir,tmpFileName) {
+                @Override
+                public void onError(Call call, Exception e, int i) {
+                    Toast.makeText(context, "文件下载失败了~", Toast.LENGTH_SHORT).show();
+                    Log.e(TAG,""+e.getMessage());
+                    pd.dismiss();
+                }
+
+                @Override
+                public void onResponse(File file, int i) {
+                    pd.dismiss(); // 结束掉进度条对话框
+                    installApk(file);
+                }
+
+                @Override
+                public void inProgress(float progress, long total, int id) {
+                    super.inProgress(progress, total, id);
+                    int count =(int) (100 * progress);
+                    pd.setProgress(count);
+                }
+            });
+        }
+    }
+
+
+    //安装apk
+
+    protected void installApk(File file) {
+
+        Intent intent = new Intent();
+        // 执行动作
+        intent.setAction(Intent.ACTION_VIEW);
+        // 执行的数据类型
+        Uri uri = null;
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            uri = FileProvider.getUriForFile(context, "com.topsoft.jianyu.fileprovider", file);
+            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        } else {
+            uri = Uri.fromFile(file);
+        }
+        intent.setDataAndType(uri, "application/vnd.android.package-archive");
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        context.startActivity(intent);
+        System.exit(0);//关闭app
+    }
+
+}

+ 133 - 0
android/app/src/main/java/com/topsoft/jianyu/listener/CustomLoginListerner.java

@@ -0,0 +1,133 @@
+package com.topsoft.jianyu.listener;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.util.Log;
+import android.webkit.WebView;
+
+import com.ccit.www.mobileshieldsdk.gsonutil.JsonObject;
+import com.topsoft.jianyu.MainActivity;
+
+import com.topsoft.jianyu.util.LoadingUtils;
+import com.topsoft.jianyu.util.StringUtil;
+import com.umeng.socialize.UMAuthListener;
+import com.umeng.socialize.bean.SHARE_MEDIA;
+
+import static android.content.Context.MODE_PRIVATE;
+
+
+import java.lang.ref.WeakReference;
+import java.util.Map;
+
+/**
+ * Created by wangkaiyue on 2018/1/25.
+ */
+
+public class CustomLoginListerner implements UMAuthListener {
+
+    private final String LOG_TAG = "CustomLoginListerner";
+
+    private WeakReference<MainActivity> mActivity;
+    private Context context;
+    private Dialog dialog ;
+    private WebView webView;
+
+    String userToken;
+
+    SharedPreferences share=null;
+
+    public CustomLoginListerner(Context context, WebView webView){
+        this.context=context;
+        this.webView=webView;
+        mActivity = new WeakReference((Activity)context);
+        share=context.getSharedPreferences("jy", MODE_PRIVATE);
+    }
+
+    @Override
+    public void onStart(SHARE_MEDIA share_media) {
+        dialog= LoadingUtils.createLoadingDialog(context, "正在加载登录");
+    }
+
+    @Override
+    public void onComplete(SHARE_MEDIA share_media, int i,final Map<String, String> map) {
+        LoadingUtils.closeDialog(dialog);
+
+        String city=map.get("city");
+        String country=map.get("country");
+        String profile_image_url=map.get("profile_image_url");
+        String screen_name=map.get("screen_name");
+        String openid=map.get("openid");
+        String province=map.get("province");
+        String unionid=map.get("unionid");
+        String sex_data=map.get("gender");
+
+        int sex=0;
+        if("男".equals(sex_data)){
+            sex=1;
+        }else if("女".equals(sex_data)){
+            sex=2;
+        }
+        long createtime=System.currentTimeMillis()/1000;
+
+        String singdata="city="+city+"&country="+country+"&createtime="+createtime+"&headimgurl="+profile_image_url+"&nickname="+screen_name+"&openid="+openid+"&province="+province+"&sex="+sex+"&unionid="+unionid;
+        String sign= StringUtil.getMD5(singdata);
+
+        JsonObject userMsg=new JsonObject();
+        userMsg.addProperty("city",city);
+        userMsg.addProperty("country",country);
+        userMsg.addProperty("createtime",createtime);
+        userMsg.addProperty("headimgurl",profile_image_url);
+        userMsg.addProperty("nickname",screen_name);
+        userMsg.addProperty("openid",openid);
+        userMsg.addProperty("province",province);
+        userMsg.addProperty("sex",sex);
+        userMsg.addProperty("unionid",unionid);
+        userMsg.addProperty("sign",sign);
+
+
+
+        userToken=StringUtil.getBase64(userMsg.toString());
+        //System.out.println(userMsg.toString());
+        //System.out.println(userToken);
+
+        if(!"".equals(openid)&&openid!=null){
+            webView.post(new Runnable() {
+                @Override
+                public void run() {
+                    webView.loadUrl("javascript:loginByWeixinCallBack('"+userToken+"')");
+                }
+            });
+
+        }
+
+        /*//获取用户信息
+        String msg="";
+        System.out.println("============================用户信息====================================");
+
+        for (Map.Entry<String, String> entry : map.entrySet()) {
+            msg+="Key = " + entry.getKey() + ", Value = " + entry.getValue()+"\n";
+            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
+
+        }
+        System.out.println("============================用户信息结束====================================");
+        webView.post(new Runnable() {
+            @Override
+            public void run() {
+                webView.loadUrl("javascript:callBackAlertMethod('用户openid:"+map.get("openid")+"')");
+            }
+        });*/
+    }
+
+    @Override
+    public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
+        LoadingUtils.closeDialog(dialog);
+        Log.e(LOG_TAG,"登录出错:"+throwable.getMessage());
+    }
+
+    @Override
+    public void onCancel(SHARE_MEDIA share_media, int i) {
+        LoadingUtils.closeDialog(dialog);
+    }
+}

+ 56 - 0
android/app/src/main/java/com/topsoft/jianyu/listener/CustomRemoveLoginListerner.java

@@ -0,0 +1,56 @@
+package com.topsoft.jianyu.listener;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.util.Log;
+import android.webkit.WebView;
+
+import com.topsoft.jianyu.MainActivity;
+import com.topsoft.jianyu.util.LoadingUtils;
+import com.umeng.socialize.UMAuthListener;
+import com.umeng.socialize.bean.SHARE_MEDIA;
+
+import java.lang.ref.WeakReference;
+import java.util.Map;
+
+/**
+ * Created by wangkaiyue on 2018/1/25.
+ */
+
+public class CustomRemoveLoginListerner implements UMAuthListener {
+
+    private final String LOG_TAG = "CustomLoginListerner";
+
+    private WeakReference<MainActivity> mActivity;
+    private Context context;
+    private Dialog dialog ;
+    private WebView webView;
+
+    public CustomRemoveLoginListerner(Context context, WebView webView){
+        this.context=context;
+        this.webView=webView;
+        mActivity = new WeakReference((Activity)context);
+    }
+
+    @Override
+    public void onStart(SHARE_MEDIA share_media) {
+        dialog= LoadingUtils.createLoadingDialog(context, "正在加载登录");
+    }
+
+    @Override
+    public void onComplete(SHARE_MEDIA share_media, int i,final Map<String, String> map) {
+        LoadingUtils.closeDialog(dialog);
+    }
+
+    @Override
+    public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
+        LoadingUtils.closeDialog(dialog);
+        Log.e(LOG_TAG,"登录出错:"+throwable.getMessage());
+    }
+
+    @Override
+    public void onCancel(SHARE_MEDIA share_media, int i) {
+        LoadingUtils.closeDialog(dialog);
+    }
+}

+ 60 - 0
android/app/src/main/java/com/topsoft/jianyu/listener/CustomShareListener.java

@@ -0,0 +1,60 @@
+package com.topsoft.jianyu.listener;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+
+import com.topsoft.jianyu.MainActivity;
+import com.topsoft.jianyu.util.LoadingUtils;
+import com.umeng.socialize.UMShareListener;
+import com.umeng.socialize.bean.SHARE_MEDIA;
+import com.umeng.socialize.utils.Log;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * Created by wangkaiyue on 2018/1/25.
+ */
+
+public  class CustomShareListener implements UMShareListener {
+
+    private WeakReference<MainActivity> mActivity;
+    private Context context;
+    private Dialog dialog ;
+    public CustomShareListener(Context context) {
+        this.context=context;
+        mActivity = new WeakReference((Activity)context);
+    }
+
+    @Override
+    public void onStart(SHARE_MEDIA platform) {
+        if(!platform.equals(SHARE_MEDIA.WEIXIN)&&!platform.equals(SHARE_MEDIA.WEIXIN_CIRCLE)){ //微信自带有加载
+            dialog= LoadingUtils.createLoadingDialog(context, "正在加载分享");
+        }
+    }
+
+    @Override
+    public void onResult(SHARE_MEDIA platform) {
+        if(!platform.equals(SHARE_MEDIA.WEIXIN)&&!platform.equals(SHARE_MEDIA.WEIXIN_CIRCLE)){
+            LoadingUtils.closeDialog(dialog);
+        }
+    }
+
+    @Override
+    public void onError(SHARE_MEDIA platform, Throwable t) {
+        if(!platform.equals(SHARE_MEDIA.WEIXIN)&&!platform.equals(SHARE_MEDIA.WEIXIN_CIRCLE)){
+            LoadingUtils.closeDialog(dialog);
+        }
+        if (t != null) {
+            Log.d("throw", "throw:" + t.getMessage());
+        }
+    }
+
+    @Override
+    public void onCancel(SHARE_MEDIA platform) {
+        if(!platform.equals(SHARE_MEDIA.WEIXIN)&&!platform.equals(SHARE_MEDIA.WEIXIN_CIRCLE)){
+            LoadingUtils.closeDialog(dialog);
+        }
+    }
+}
+

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

@@ -0,0 +1,147 @@
+package com.topsoft.jianyu.util;
+
+import android.app.Activity;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Build;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * Created by wangkaiyue on 2018/1/25.
+ */
+
+public class AppUtil {
+
+    public static String JPUSH_CLIENT_RGSID;//记录极光推送客户端id
+    public static String AppUrl="http://webwcj.qmx.top";
+    /**
+     * 判断当前应用是否是debug状态
+     */
+    public static boolean isApkInDebug(Context context) {
+        try {
+            ApplicationInfo info = context.getApplicationInfo();
+            return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     *  设置为全屏模式 改变颜色
+     * @param activity 需要改变的activity
+     * @param dark    bar图标文字 颜色是否为深色
+     */
+    public static void setAndroidNativeLightStatusBar(Activity activity,boolean full, boolean dark) {
+        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
+            //全屏
+            Window window = activity.getWindow();
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+                window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+                window.setStatusBarColor(Color.TRANSPARENT);
+            }
+            //颜色
+            if (dark&&full) {
+                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN );
+            } else if(dark&&!full){
+                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+            } else if(!dark&&full){
+                window.getDecorView().setSystemUiVisibility(0|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
+            }else if(!dark&&!full){
+                window.getDecorView().setSystemUiVisibility(0);
+            }
+        }
+    }
+
+
+    /**
+     * 判断是否开启通知权限
+     * @param context
+     * @return
+     */
+    private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";
+    private static final String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
+    public static boolean isNotificationEnabled(Context context) {
+
+        AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+
+        ApplicationInfo appInfo = context.getApplicationInfo();
+
+        String pkg = context.getApplicationContext().getPackageName();
+
+        int uid = appInfo.uid;
+
+        Class appOpsClass = null; /* Context.APP_OPS_MANAGER */
+
+        try {
+
+            appOpsClass = Class.forName(AppOpsManager.class.getName());
+
+            Method checkOpNoThrowMethod = appOpsClass.getMethod(CHECK_OP_NO_THROW, Integer.TYPE, Integer.TYPE, String.class);
+
+            Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
+
+            int value = (int)opPostNotificationValue.get(Integer.class);
+
+            return ((int)checkOpNoThrowMethod.invoke(mAppOps,value, uid, pkg) == AppOpsManager.MODE_ALLOWED);
+
+        } catch (ClassNotFoundException e) {
+
+            e.printStackTrace();
+
+        } catch (NoSuchMethodException e) {
+
+            e.printStackTrace();
+
+        } catch (NoSuchFieldException e) {
+
+            e.printStackTrace();
+
+        } catch (InvocationTargetException e) {
+
+            e.printStackTrace();
+
+        } catch (IllegalAccessException e) {
+
+            e.printStackTrace();
+
+        }
+
+        return false;
+
+    }
+
+    //版本名
+    public static String getVersionName(Context context) {
+        return getPackageInfo(context).versionName;
+    }
+
+    //版本号
+    public static int getVersionCode(Context context) {
+        return getPackageInfo(context).versionCode;
+    }
+
+    private static PackageInfo getPackageInfo(Context context) {
+        PackageInfo pi = null;
+
+        try {
+            PackageManager pm = context.getPackageManager();
+            pi = pm.getPackageInfo(context.getPackageName(),
+                    PackageManager.GET_CONFIGURATIONS);
+            return pi;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return pi;
+    }
+}

+ 53 - 0
android/app/src/main/java/com/topsoft/jianyu/util/LoadingUtils.java

@@ -0,0 +1,53 @@
+package com.topsoft.jianyu.util;
+
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.topsoft.jianyu.R;
+
+
+/**
+ * Created by wanghuidong on 2017/12/25.
+ */
+
+public class LoadingUtils {
+    public static Dialog createLoadingDialog(Context context, String msg) {
+        LayoutInflater inflater = LayoutInflater.from(context);
+        View v = inflater.inflate(R.layout.simple_loading_view, null);// 得到加载view
+        RelativeLayout layout = (RelativeLayout) v
+                .findViewById(R.id.dialog_loading_view);// 加载布局
+        TextView tipTextView = (TextView) v.findViewById(R.id.simple_loading_view_text);// 提示文字
+        tipTextView.setText(msg);// 设置加载信息
+
+        Dialog loadingDialog = new Dialog(context, R.style.simple_progress_dialog_three_style);// 创建自定义样式dialog
+        loadingDialog.setCancelable(true); // 是否可以按“返回键”消失
+        loadingDialog.setCanceledOnTouchOutside(false); // 点击加载框以外的区域
+        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
+                LinearLayout.LayoutParams.WRAP_CONTENT,
+                LinearLayout.LayoutParams.WRAP_CONTENT));// 设置布局
+
+        loadingDialog.show();
+
+        return loadingDialog;
+    }
+
+    /**
+     * 关闭dialog
+     * <p>
+     * http://blog.csdn.net/qq_21376985
+     *
+     * @param mDialogUtils
+     */
+    public static void closeDialog(Dialog mDialogUtils) {
+        if (mDialogUtils != null && mDialogUtils.isShowing()) {
+            mDialogUtils.dismiss();
+        }
+    }
+
+}

+ 0 - 37
android/app/src/main/java/com/topsoft/jianyu/util/StatusBar.java

@@ -1,37 +0,0 @@
-package com.topsoft.jianyu.util;
-
-import android.app.Activity;
-import android.graphics.Color;
-import android.os.Build;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-
-/**
- * Created by wangkaiyue on 2018/1/24.
- */
-
-public class StatusBar {
-    /**
-     *  设置为全屏模式 改变颜色
-     * @param activity 需要改变的activity
-     * @param dark    bar图标文字 颜色是否为深色
-     */
-    public static void setAndroidNativeLightStatusBar(Activity activity, boolean dark) {
-        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
-            //全屏
-            Window window = activity.getWindow();
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-                window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
-                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
-                window.setStatusBarColor(Color.TRANSPARENT);
-            }
-            //颜色
-            if (dark) {
-                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN );
-            } else {
-                window.getDecorView().setSystemUiVisibility(0|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
-            }
-        }
-    }
-}

+ 42 - 0
android/app/src/main/java/com/topsoft/jianyu/util/StringUtil.java

@@ -0,0 +1,42 @@
+package com.topsoft.jianyu.util;
+
+import android.util.Log;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+
+/**
+ * Created by wangkaiyue on 2018/1/26.
+ */
+
+public class StringUtil {
+    private static final String TAG = "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);
+        } catch (Exception e) {
+            Log.e(TAG,e.getMessage());
+            return null;
+        }
+    }
+
+    //base64加密
+    public static String getBase64(String str) {
+        String result = "";
+        byte[] b=str.getBytes();
+        try{
+            result=new String(com.ccit.www.mobileshieldsdk.util.Base64.encode(b,2));
+        }catch (Exception e){
+            Log.e(TAG,e.getMessage());
+        }
+        return result;
+    }
+
+}

+ 9 - 0
android/app/src/main/java/com/topsoft/jianyu/wxapi/WXEntryActivity.java

@@ -0,0 +1,9 @@
+package com.topsoft.jianyu.wxapi;
+
+
+import com.umeng.weixin.callback.WXCallbackActivity;
+
+public class WXEntryActivity extends WXCallbackActivity {
+
+}
+

+ 0 - 0
android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml → android/app/src/main/res/drawable-v24/ic_launcher_foreground1.xml


+ 6 - 0
android/app/src/main/res/drawable/button_back.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/button_bak_background" />
+    <!--圆角矩形白色背景-->
+</shape>

BIN
android/app/src/main/res/drawable/custom_progress_dialog_3_bg.9.png


BIN
android/app/src/main/res/drawable/share_thumb_img.png


BIN
android/app/src/main/res/drawable/umeng_socialize_back_icon.png


+ 11 - 0
android/app/src/main/res/drawable/umeng_socialize_btn_bg.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape android:shape="rectangle"
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@android:color/transparent" />
+    <stroke android:width="1dp"
+        android:color="#ffffff"
+
+        />
+
+
+</shape>

BIN
android/app/src/main/res/drawable/umeng_socialize_copy.png


BIN
android/app/src/main/res/drawable/umeng_socialize_copyurl.png


BIN
android/app/src/main/res/drawable/umeng_socialize_delete.png


+ 11 - 0
android/app/src/main/res/drawable/umeng_socialize_edit_bg.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape android:shape="rectangle"
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@android:color/transparent" />
+    <stroke android:width="1dp"
+        android:color="#C3C6C9"
+
+        />
+
+
+</shape>

BIN
android/app/src/main/res/drawable/umeng_socialize_fav.png


BIN
android/app/src/main/res/drawable/umeng_socialize_menu_default.png


BIN
android/app/src/main/res/drawable/umeng_socialize_more.png


BIN
android/app/src/main/res/drawable/umeng_socialize_qq.png


BIN
android/app/src/main/res/drawable/umeng_socialize_qzone.png


BIN
android/app/src/main/res/drawable/umeng_socialize_share_music.png


BIN
android/app/src/main/res/drawable/umeng_socialize_share_video.png


BIN
android/app/src/main/res/drawable/umeng_socialize_share_web.png


BIN
android/app/src/main/res/drawable/umeng_socialize_wechat.png


BIN
android/app/src/main/res/drawable/umeng_socialize_wxcircle.png


+ 120 - 0
android/app/src/main/res/layout-sw550dp-large/umeng_socialize_oauth_dialog.xml

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:padding="5dp" >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:background="#0086DC"
+        android:id="@+id/umeng_socialize_titlebar"
+        android:layout_height="54dp">
+        <TextView
+            android:layout_width="wrap_content"
+            android:id="@+id/umeng_title"
+            android:textSize="18sp"
+            android:text=""
+            android:textColor="#ffffff"
+            android:layout_centerInParent="true"
+            android:layout_height="wrap_content" />
+
+        <RelativeLayout
+            android:layout_width="60dp"
+            android:id="@+id/umeng_back"
+
+            android:visibility="visible"
+            android:onClick="onCancel"
+            android:layout_height="match_parent">
+            <ImageButton
+
+                android:scaleType="center"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="15dp"
+                android:background="@drawable/umeng_socialize_back_icon"
+                android:layout_width="12dp"
+
+                android:layout_height="20dp" />
+        </RelativeLayout>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="分享"
+            android:layout_centerInParent="true"
+            android:layout_alignParentRight="true"
+            android:layout_marginRight="10dp"
+            android:id="@+id/umeng_share_btn"
+            android:padding="4dp"
+            android:background="@drawable/umeng_socialize_btn_bg"
+            android:textColor="#ffffff"
+            />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:id="@+id/umeng_socialize_follow"
+        android:layout_width="fill_parent"
+        android:layout_height="38dp"
+        android:layout_alignParentBottom="true"
+
+        android:visibility="visible" >
+
+        <CheckBox
+            android:id="@+id/umeng_socialize_follow_check"
+            android:layout_width="32dp"
+            android:layout_height="32dp"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="12dp"
+
+            android:checked="true" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="2dp"
+            android:layout_toRightOf="@id/umeng_socialize_follow_check"
+            android:textSize="14sp"
+            android:text="关注官方微博"
+            android:textColor="#949BA4" />
+    </RelativeLayout>
+
+    <!--<LinearLayout-->
+        <!--android:id="@+id/webView_container"-->
+        <!--android:layout_width="match_parent"-->
+        <!--android:layout_height="match_parent"-->
+        <!--android:layout_above="@id/umeng_socialize_follow"-->
+        <!--android:layout_below="@id/umeng_socialize_titlebar"-->
+        <!--android:orientation="horizontal"-->
+        <!--android:visibility="visible" />-->
+
+    <WebView
+    android:id="@+id/webView"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:background="#F2F5F6"
+
+    android:layout_above="@id/umeng_socialize_follow"
+    android:layout_below="@id/umeng_socialize_titlebar"
+    android:visibility="visible" />
+
+    <RelativeLayout
+        android:id="@+id/progress_bar_parent"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:layout_above="@id/umeng_socialize_follow"
+        android:layout_below="@id/umeng_socialize_titlebar"
+        android:background="#F2F5F6" >
+
+        <LinearLayout
+            android:layout_width="80dp"
+            android:layout_height="80dp"
+            android:layout_centerInParent="true"
+            android:orientation="horizontal" >
+
+            <ProgressBar
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                android:layout_margin="10dp" />
+        </LinearLayout>
+    </RelativeLayout>
+
+</RelativeLayout>

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

@@ -15,5 +15,10 @@
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         android:orientation="vertical"></LinearLayout>
-
+    <Button
+        android:id="@+id/test"
+        android:layout_width="100dp"
+        android:layout_height="40dp"
+        android:text="测试按钮"
+        />
 </android.support.constraint.ConstraintLayout>

+ 47 - 0
android/app/src/main/res/layout/activity_updater.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/white"
+    android:padding="16dp">
+
+    <android.support.v7.widget.AppCompatTextView
+        android:id="@+id/title"
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:gravity="center_vertical"
+        android:text="更新提示"
+        android:textColor="@color/updateTitle"
+        android:textSize="18sp" />
+
+    <android.support.v7.widget.AppCompatTextView
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textColor="@color/colorAccent"
+        android:layout_below="@+id/title" />
+
+    <Button
+        android:id="@+id/ok"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentRight="true"
+        android:layout_below="@id/content"
+        android:textColor="@color/updateTitle"
+        android:theme="@style/Theme.AppCompat.Light"
+        android:text="@string/app_updater_download_now" />
+
+    <Button
+        android:id="@+id/cancel"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignBaseline="@+id/ok"
+        android:layout_alignBottom="@+id/ok"
+        android:layout_toLeftOf="@+id/ok"
+        android:layout_toStartOf="@+id/ok"
+        android:textColor="@color/updateTitle"
+        android:theme="@style/Theme.AppCompat.Light"/>
+
+
+</RelativeLayout>

+ 32 - 0
android/app/src/main/res/layout/external_web.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.topsoft.jianyu.MainActivity">
+
+
+    <LinearLayout
+        android:id="@+id/webview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></LinearLayout>
+
+    <Button
+        android:id="@+id/back"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:layout_marginStart="25dp"
+        android:layout_marginTop="20dp"
+        android:layout_weight="1"
+        android:background="@drawable/button_back"
+        android:gravity="center"
+        android:text="返回"
+        android:textColor="#fff"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 42 - 0
android/app/src/main/res/layout/simple_loading_view.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/dialog_loading_view"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:background="@drawable/custom_progress_dialog_3_bg">
+
+    <View
+        android:layout_width="250dp"
+        android:layout_height="30dp"
+        android:layout_centerInParent="true" />
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:padding="5dp">
+
+        <ProgressBar
+            android:id="@+id/simple_loading_view_progressbar"
+            style="@android:style/Widget.Holo.ProgressBar"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true" />
+
+        <TextView
+            android:id="@+id/simple_loading_view_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="20dp"
+            android:layout_toRightOf="@+id/simple_loading_view_progressbar"
+            android:lineSpacingExtra="3.0dip"
+            android:text="正在加载数据..."
+            android:textColor="#ffffffff"
+            android:textSize="14sp" />
+
+    </RelativeLayout>
+
+</RelativeLayout>

+ 25 - 0
android/app/src/main/res/layout/socialize_share_menu_item.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <com.umeng.socialize.shareboard.SocializeImageView
+        android:id="@+id/socialize_image_view"
+        android:layout_width="50dp"
+        android:layout_height="50dp"
+        android:padding="5dp"
+        android:src="@drawable/umeng_socialize_menu_default" />
+
+    <TextView
+        android:id="@+id/socialize_text_view"
+        android:layout_width="63dp"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="6dp"
+        android:ellipsize="end"
+        android:singleLine="true"
+        android:text="未知"
+        android:textSize="12sp" />
+
+</LinearLayout>

+ 121 - 0
android/app/src/main/res/layout/umeng_socialize_oauth_dialog.xml

@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:background="#D4E0E5">
+
+
+    <RelativeLayout
+        android:id="@+id/umeng_socialize_titlebar"
+        android:layout_width="match_parent"
+        android:layout_height="54dp"
+        android:background="#0086DC">
+
+        <TextView
+            android:id="@+id/umeng_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:text=""
+            android:textColor="#ffffff"
+            android:textSize="18sp" />
+
+        <RelativeLayout
+            android:id="@+id/umeng_back"
+            android:layout_width="60dp"
+            android:layout_height="match_parent"
+
+            android:onClick="onCancel"
+            android:visibility="visible">
+
+            <ImageButton
+
+                android:layout_width="12dp"
+                android:layout_height="20dp"
+                android:layout_centerVertical="true"
+                android:background="@drawable/umeng_socialize_back_icon"
+                android:layout_marginLeft="15dp"
+                android:scaleType="center" />
+        </RelativeLayout>
+
+        <TextView
+            android:id="@+id/umeng_share_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerInParent="true"
+            android:layout_marginRight="10dp"
+            android:background="@drawable/umeng_socialize_btn_bg"
+            android:padding="4dp"
+            android:text="分享"
+            android:textColor="#ffffff" />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:id="@+id/umeng_socialize_follow"
+        android:layout_width="fill_parent"
+        android:layout_height="40dp"
+        android:layout_alignParentBottom="true"
+        android:background="#AAAAAA"
+        android:visibility="visible">
+
+        <CheckBox
+            android:id="@+id/umeng_socialize_follow_check"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="20dp"
+            android:checked="true"
+            android:visibility="gone" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="15dp"
+            android:layout_toRightOf="@id/umeng_socialize_follow_check"
+            android:text="关注官方微博"
+            android:textColor="#f8f8f8"
+            android:textSize="16sp"
+            android:visibility="gone" />
+    </RelativeLayout>
+
+    <!--<LinearLayout-->
+        <!--android:id="@+id/webView_container"-->
+        <!--android:layout_width="match_parent"-->
+        <!--android:layout_height="match_parent"-->
+        <!--android:layout_above="@id/umeng_socialize_follow"-->
+        <!--android:layout_below="@id/umeng_socialize_titlebar"-->
+        <!--android:orientation="horizontal"-->
+        <!--android:visibility="visible" />-->
+
+    <WebView
+        android:id="@+id/webView"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:background="#F2F5F6"
+        android:layout_above="@id/umeng_socialize_follow"
+        android:layout_below="@id/umeng_socialize_titlebar"
+        android:visibility="visible" />
+
+    <RelativeLayout
+        android:id="@+id/progress_bar_parent"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:layout_below="@id/umeng_socialize_titlebar"
+        android:background="#F2F5F6" >
+
+        <LinearLayout
+            android:layout_width="80dp"
+            android:layout_height="80dp"
+            android:layout_centerInParent="true"
+            android:orientation="horizontal">
+
+            <ProgressBar
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                android:layout_margin="10dp" />
+        </LinearLayout>
+    </RelativeLayout>
+
+</RelativeLayout>

BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-xhdpi/umeng_socialize_fav.png


BIN
android/app/src/main/res/mipmap-xhdpi/umeng_socialize_qq.png


BIN
android/app/src/main/res/mipmap-xhdpi/umeng_socialize_qzone.png


BIN
android/app/src/main/res/mipmap-xhdpi/umeng_socialize_wechat.png


BIN
android/app/src/main/res/mipmap-xhdpi/umeng_socialize_wxcircle.png


BIN
android/app/src/main/res/mipmap-xhdpi/welcome_page_background.jpg


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png


+ 2 - 0
android/app/src/main/res/values/colors.xml

@@ -3,4 +3,6 @@
     <color name="colorPrimary">#00000000</color>
     <color name="colorPrimaryDark">#00000000</color>
     <color name="colorAccent">#3F51B5</color>
+    <color name="updateTitle">#1f2021</color>
+    <color name="button_bak_background">#80232425</color>
 </resources>

+ 3 - 0
android/app/src/main/res/values/strings.xml

@@ -12,4 +12,7 @@
     <string name="title_home">主屏</string>
     <string name="title_dashboard">订阅</string>
     <string name="title_notifications">历史</string>
+
+    <string name="app_updater_download_now">下载安装</string>
+    <string name="app_updater_download_later">暂不更新</string>
 </resources>

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

@@ -19,4 +19,19 @@
         <!-- 背景透明 -->
     </style>
 
+    <style name="simple_progress_dialog_three_style" parent="@android:style/Theme.Dialog">
+        <item name="android:windowFrame">@null</item>
+        <!-- 边框 -->
+        <item name="android:windowIsFloating">true</item>
+        <!-- 是否浮现在activity之上 -->
+        <item name="android:backgroundDimEnabled">true</item>
+        <!-- 模糊 -->
+        <item name="android:windowIsTranslucent">true</item>
+        <!-- 半透明 -->
+        <item name="android:windowNoTitle">true</item>
+        <!-- 无标题 -->
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <!-- 背景透明 -->
+
+    </style>
 </resources>

+ 18 - 0
android/app/src/main/res/values/umeng_socialize_colors.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?><resources>
+    <color name="umeng_socialize_comments_bg">#F4F4F4</color>
+    <color name="umeng_socialize_color_group">#2c3035</color>
+	<color name="umeng_socialize_list_item_textcolor">#333333</color>
+	<color name="umeng_socialize_list_item_bgcolor">#FFFFFF</color>
+	<color name="umeng_socialize_divider">#E6E6E6</color>
+	<color name="umeng_socialize_text_time">#999999</color>
+	<color name="umeng_socialize_text_title">#464f61</color>
+	<color name="umeng_socialize_text_friends_list">#959696</color>
+	<color name="umeng_socialize_text_share_content">#666666</color>
+	<color name="umeng_socialize_ucenter_bg">#EEEEEE</color>
+	<color name="umeng_socialize_text_ucenter">#595959</color>
+	<color name="umeng_socialize_edit_bg">#C4C4C4</color>
+	<color name="umeng_socialize_grid_divider_line">#F8F8F8</color>
+	<color name="umeng_socialize_web_bg">#F4F4F4</color>
+	<color name="umeng_socialize_shareactivity">#D4E0E5</color>
+	<color name="umeng_socialize_shareactivitydefault">#ffffff</color>
+</resources>

+ 58 - 0
android/app/src/main/res/values/umeng_socialize_strings.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <dimen name="alphabet_size">12dip</dimen>
+    <dimen name="umeng_socialize_pad_window_height">350dip</dimen>
+    <dimen name="umeng_socialize_pad_window_width">580dip</dimen>
+    <!-- 平台名称 -->
+    <string name="umeng_socialize_text_tencent_key">腾讯微博</string>
+    <string name="umeng_socialize_text_wenxin_fav">微信收藏</string>
+    <string name="umeng_socialize_text_sina_key">微博</string>
+    <string name="umeng_socialize_text_qq_key">QQ</string>
+    <string name="umeng_socialize_text_qq_zone_key">QQ空间</string>
+    <string name="umeng_socialize_text_renren_key">人人网</string>
+    <string name="umeng_socialize_text_douban_key">豆瓣</string>
+    <string name="umeng_socialize_text_weixin_key">微信</string>
+    <string name="umeng_socialize_text_weixin_circle_key">微信朋友圈</string>
+    <string name="umeng_socialize_text_weixin_fav_key">微信收藏</string>
+    <string name="umeng_socialize_text_add_custom_platform">请配置用户平台</string>
+    <string name="umeng_example_home_btn_plus">社交分享</string>
+    <string name="umeng_socialize_text_waitting_share">分享中&#8230;</string>
+    <string name="umeng_socialize_content_hint">说点啥&#8230;</string>
+    <string name="umeng_socialize_cancel_btn_str">取消</string>
+    <string name="umeng_socialize_send_btn_str">发送</string>
+
+    <string name="umeng_socialize_female">女</string>
+    <string name="umeng_socialize_male">男</string>
+
+    <string name="umeng_socialize_share">分享</string>
+
+    <string name="umeng_socialize_mail">邮件</string>
+    <string name="umeng_socialize_sms">短信</string>
+    <string name="umeng_socialize_sina">新浪</string>
+    <string name="umeng_socialize_text_yixin_key">易信</string>
+    <string name="umeng_socialize_text_yixincircle_key">易信朋友圈</string>
+
+    <string name="umeng_socialize_text_laiwangdynamic_key">点点虫动态</string>
+    <string name="umeng_socialize_text_evernote_key">印象笔记</string>
+    <string name="umeng_socialize_text_ydnote_key">有道云笔记</string>
+    <string name="umeng_socialize_text_facebook_key">Facebook</string>
+    <string name="umeng_socialize_text_facebookmessager_key">Facebook Messager</string>
+    <string name="umeng_socialize_text_twitter_key">Twitter</string>
+    <string name="umeng_socialize_text_instagram_key">Instagram</string>
+    <string name="umeng_socialize_text_pinterest_key">Pinterest</string>
+    <string name="umeng_socialize_text_pocket_key">Pocket</string>
+    <string name="umeng_socialize_text_linkedin_key">Linkedin</string>
+    <string name="umeng_socialize_text_foursquare_key">Foursquare</string>
+    <string name="umeng_socialize_text_whatsapp_key">WhatsApp</string>
+    <string name="umeng_socialize_text_line_key">LINE</string>
+    <string name="umeng_socialize_text_flickr_key">Flickr</string>
+    <string name="umeng_socialize_text_tumblr_key">Tumblr</string>
+    <string name="umeng_socialize_text_alipay_key">支付宝</string>
+    <string name="umeng_socialize_text_kakao_key">KakaoTalk</string>
+    <string name="umeng_socialize_text_googleplus_key">GooglePlus</string>
+    <string name="umeng_socialize_text_more_key">更多</string>
+    <string name="umeng_socialize_text_dingding_key">钉钉</string>
+    <string name="umeng_socialize_text_vkontakte_key">VKontakte</string>
+    <string name="umeng_socialize_text_dropbox_key">DropBox</string>
+</resources>

+ 82 - 0
android/app/src/main/res/values/umeng_socialize_style.xml

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="ACPLDialog">
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowContentOverlay">@null</item>
+    </style>
+    <style name="umeng_socialize_action_bar_itemlayout">
+        <item name="android:layout_height">fill_parent</item>
+        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_weight">1</item>
+        <item name="android:paddingLeft">4dp</item>
+        <item name="android:paddingTop">4dp</item>
+        <item name="android:paddingRight">4dp</item>
+        <item name="android:gravity">center_vertical</item>
+    </style>
+
+    <style name="umeng_socialize_action_bar_item_im">
+        <item name="android:layout_width">25dp</item>
+        <item name="android:layout_height">25dp</item>
+        <item name="android:scaleType">fitCenter</item>
+        <item name="android:layout_centerVertical">true</item>
+    </style>
+
+    <style name="umeng_socialize_action_bar_item_tv">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">fill_parent</item>
+        <item name="android:layout_marginLeft">5dp</item>
+        <item name="android:text">999</item>
+        <item name="android:gravity">center</item>
+        <item name="android:textColor">#ffffff</item>
+        <item name="android:textSize">12sp</item>
+        <item name="android:textStyle">bold</item>
+    </style>
+
+
+    <style name="umeng_socialize_popup_dialog" parent="@android:style/Theme.Dialog">
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:background">@android:color/transparent</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:backgroundDimEnabled">true</item>
+        <item name="android:backgroundDimAmount">0.6</item>
+    </style>
+
+
+    <style name="Theme.UMDialog" parent="android:style/Theme.Dialog">
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+    </style>
+
+    <style name="Theme.UMDefault" parent="android:style/Theme.NoTitleBar"></style>
+
+    <style name="umeng_socialize_divider">
+        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_height">1dp</item>
+        <item name="android:background">@color/umeng_socialize_divider</item>
+    </style>
+
+    <style name="umeng_socialize_list_item">
+        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_height">55dp</item>
+        <item name="android:background">@color/umeng_socialize_list_item_bgcolor</item>
+        <item name="android:paddingBottom">5dp</item>
+        <item name="android:paddingTop">5dp</item>
+    </style>
+
+    <style name="umeng_socialize_edit_padding">
+        <item name="android:layout_width">fill_parent</item>
+        <item name="android:layout_height">fill_parent</item>
+        <item name="android:background">@color/umeng_socialize_list_item_bgcolor</item>
+        <item name="android:layout_marginLeft">6dp</item>
+        <item name="android:layout_marginRight">6dp</item>
+        <item name="android:layout_marginTop">6dp</item>
+        <item name="android:layout_marginBottom">6dp</item>
+    </style>
+
+
+</resources>

+ 4 - 0
android/app/src/main/res/xml/file_paths.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<paths>
+    <external-path name="name" path="/temp" /> <!--对应Environment.getExternalStorageDirectory()。-->
+</paths>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
android/build/android-profile/profile-2018-01-10-16-48-53-717.json


BIN
android/build/android-profile/profile-2018-01-10-16-48-53-717.rawproto


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
android/build/android-profile/profile-2018-01-10-16-49-12-325.json


BIN
android/build/android-profile/profile-2018-01-10-16-49-12-325.rawproto


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
android/build/android-profile/profile-2018-01-10-16-56-17-894.json


BIN
android/build/android-profile/profile-2018-01-10-16-56-17-894.rawproto


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
android/build/android-profile/profile-2018-01-10-16-58-06-195.json


BIN
android/build/android-profile/profile-2018-01-10-16-58-06-195.rawproto


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
android/build/android-profile/profile-2018-01-10-17-00-07-100.json


BIN
android/build/android-profile/profile-2018-01-10-17-00-07-100.rawproto


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
android/build/android-profile/profile-2018-01-15-08-41-23-744.json


BIN
android/build/android-profile/profile-2018-01-15-08-41-23-744.rawproto


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно