Browse Source

Merge branch 'develop' into 'fieature/Process.form_select_dict_script'

# Conflicts:
#   o2web/source/x_component_process_Xform/Attachment.js
蔡祥熠 5 years ago
parent
commit
129e344e8f
100 changed files with 79 additions and 18779 deletions
  1. 45 46
      o2android/app/build.gradle
  2. BIN
      o2android/app/libs/pgyer_sdk_2.2.2.jar
  3. 5 8
      o2android/app/proguard-rules.pro
  4. 15 95
      o2android/app/src/main/AndroidManifest.xml
  5. 1 1
      o2android/app/src/main/java/com/baidu/android/voicedemo/recognization/inputstream/MyMicrophoneInputStream.java
  6. 2 2
      o2android/app/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java
  7. 1 1
      o2android/app/src/main/java/com/bigkoo/convenientbanner/adapter/CBPageAdapter.java
  8. 1 1
      o2android/app/src/main/java/com/bigkoo/convenientbanner/listener/CBPageChangeListener.java
  9. 1 1
      o2android/app/src/main/java/com/bigkoo/convenientbanner/transformer/ScaleYTransformer.java
  10. 2 2
      o2android/app/src/main/java/com/bigkoo/convenientbanner/view/CBLoopViewPager.java
  11. 4 4
      o2android/app/src/main/java/io/flutter/facade/Flutter.java
  12. 2 2
      o2android/app/src/main/java/io/flutter/facade/FlutterFragment.java
  13. 0 62
      o2android/app/src/main/java/jiguang/chat/activity/AboutJChatActivity.java
  14. 0 165
      o2android/app/src/main/java/jiguang/chat/activity/BaseActivity.java
  15. 0 852
      o2android/app/src/main/java/jiguang/chat/activity/BrowserViewPagerActivity.java
  16. 0 1354
      o2android/app/src/main/java/jiguang/chat/activity/ChatActivity.java
  17. 0 389
      o2android/app/src/main/java/jiguang/chat/activity/ChatDetailActivity.java
  18. 0 166
      o2android/app/src/main/java/jiguang/chat/activity/ChooseAtMemberActivity.java
  19. 0 250
      o2android/app/src/main/java/jiguang/chat/activity/CommonScanActivity.java
  20. 0 265
      o2android/app/src/main/java/jiguang/chat/activity/CreateGroupActivity.java
  21. 0 154
      o2android/app/src/main/java/jiguang/chat/activity/DownLoadActivity.java
  22. 0 280
      o2android/app/src/main/java/jiguang/chat/activity/FeedbackActivity.java
  23. 0 204
      o2android/app/src/main/java/jiguang/chat/activity/FinishRegisterActivity.java
  24. 0 165
      o2android/app/src/main/java/jiguang/chat/activity/ForwardMsgActivity.java
  25. 0 250
      o2android/app/src/main/java/jiguang/chat/activity/FriendInfoActivity.java
  26. 0 150
      o2android/app/src/main/java/jiguang/chat/activity/FriendListActivity.java
  27. 0 78
      o2android/app/src/main/java/jiguang/chat/activity/FriendRecommendActivity.java
  28. 0 234
      o2android/app/src/main/java/jiguang/chat/activity/FriendSettingActivity.java
  29. 0 105
      o2android/app/src/main/java/jiguang/chat/activity/GroupActivity.java
  30. 0 92
      o2android/app/src/main/java/jiguang/chat/activity/GroupAvatarActivity.java
  31. 0 215
      o2android/app/src/main/java/jiguang/chat/activity/GroupGridViewActivity.java
  32. 0 226
      o2android/app/src/main/java/jiguang/chat/activity/GroupNotFriendActivity.java
  33. 0 330
      o2android/app/src/main/java/jiguang/chat/activity/LoginActivity.java
  34. 0 57
      o2android/app/src/main/java/jiguang/chat/activity/MainActivity.java
  35. 0 492
      o2android/app/src/main/java/jiguang/chat/activity/MembersInChatActivity.java
  36. 0 179
      o2android/app/src/main/java/jiguang/chat/activity/NickSignActivity.java
  37. 0 104
      o2android/app/src/main/java/jiguang/chat/activity/NotFriendSettingActivity.java
  38. 0 206
      o2android/app/src/main/java/jiguang/chat/activity/Person2CodeActivity.java
  39. 0 328
      o2android/app/src/main/java/jiguang/chat/activity/PersonalActivity.java
  40. 0 66
      o2android/app/src/main/java/jiguang/chat/activity/PlayVideoActivity.java
  41. 0 81
      o2android/app/src/main/java/jiguang/chat/activity/ResetPasswordActivity.java
  42. 0 27
      o2android/app/src/main/java/jiguang/chat/activity/ScanResultActivity.java
  43. 0 356
      o2android/app/src/main/java/jiguang/chat/activity/SearchAtMemberActivity.java
  44. 0 779
      o2android/app/src/main/java/jiguang/chat/activity/SearchContactsActivity.java
  45. 0 184
      o2android/app/src/main/java/jiguang/chat/activity/SearchForAddFriendActivity.java
  46. 0 354
      o2android/app/src/main/java/jiguang/chat/activity/SearchFriendBusinessActivity.java
  47. 0 196
      o2android/app/src/main/java/jiguang/chat/activity/SearchFriendDetailActivity.java
  48. 0 83
      o2android/app/src/main/java/jiguang/chat/activity/SearchFriendInfoActivity.java
  49. 0 335
      o2android/app/src/main/java/jiguang/chat/activity/SearchGroupActivity.java
  50. 0 406
      o2android/app/src/main/java/jiguang/chat/activity/SearchMoreFriendsActivity.java
  51. 0 345
      o2android/app/src/main/java/jiguang/chat/activity/SearchMoreGroupActivity.java
  52. 0 62
      o2android/app/src/main/java/jiguang/chat/activity/SelectFriendActivity.java
  53. 0 47
      o2android/app/src/main/java/jiguang/chat/activity/SendFileActivity.java
  54. 0 75
      o2android/app/src/main/java/jiguang/chat/activity/SetNoteNameActivity.java
  55. 0 146
      o2android/app/src/main/java/jiguang/chat/activity/VerificationActivity.java
  56. 0 31
      o2android/app/src/main/java/jiguang/chat/activity/WatchVideoActivity.java
  57. 0 43
      o2android/app/src/main/java/jiguang/chat/activity/WelcomeActivity.java
  58. 0 174
      o2android/app/src/main/java/jiguang/chat/activity/fragment/AudioFragment.java
  59. 0 127
      o2android/app/src/main/java/jiguang/chat/activity/fragment/BaseFragment.java
  60. 0 265
      o2android/app/src/main/java/jiguang/chat/activity/fragment/ContactsFragment.java
  61. 0 339
      o2android/app/src/main/java/jiguang/chat/activity/fragment/ConversationListFragment.java
  62. 0 181
      o2android/app/src/main/java/jiguang/chat/activity/fragment/DocumentFragment.java
  63. 0 166
      o2android/app/src/main/java/jiguang/chat/activity/fragment/ImageFragment.java
  64. 0 101
      o2android/app/src/main/java/jiguang/chat/activity/fragment/MeFragment.java
  65. 0 173
      o2android/app/src/main/java/jiguang/chat/activity/fragment/OtherFragment.java
  66. 0 182
      o2android/app/src/main/java/jiguang/chat/activity/fragment/VideoFragment.java
  67. 0 102
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/activity/BrowserFileImageActivity.java
  68. 0 58
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/activity/HistoryFileActivity.java
  69. 0 172
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/AudioFileAdapter.java
  70. 0 173
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/DocumentFileAdapter.java
  71. 0 186
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/ImageFileAdapter.java
  72. 0 174
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/OtherFileAdapter.java
  73. 0 174
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/VideoFileAdapter.java
  74. 0 154
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/controller/HistoryFileController.java
  75. 0 157
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/AudioFileFragment.java
  76. 0 156
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/DocumentFileFragment.java
  77. 0 219
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/ImageFileFragment.java
  78. 0 160
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/OtherFileFragment.java
  79. 0 158
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/VideoFileFragment.java
  80. 0 65
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersBaseAdapter.java
  81. 0 462
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersBaseAdapterWrapper.java
  82. 0 1226
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersGridView.java
  83. 0 89
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersListAdapterWrapper.java
  84. 0 60
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersSimpleAdapter.java
  85. 0 145
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersSimpleAdapterWrapper.java
  86. 0 148
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersSimpleArrayAdapter.java
  87. 0 123
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/HistoryFileView.java
  88. 0 35
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/MImageView.java
  89. 0 136
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/NativeImageLoaderView.java
  90. 0 15
      o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/YMComparator.java
  91. 0 89
      o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/AlreadyReadAdapter.java
  92. 0 85
      o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/MessageAlreadyReadFragment.java
  93. 0 84
      o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/MessageNotReadFragment.java
  94. 0 91
      o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/NotReadAdapter.java
  95. 0 130
      o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/ReceiptMessageListActivity.java
  96. 0 367
      o2android/app/src/main/java/jiguang/chat/adapter/AllMembersAdapter.java
  97. 0 94
      o2android/app/src/main/java/jiguang/chat/adapter/AppsAdapter.java
  98. 0 213
      o2android/app/src/main/java/jiguang/chat/adapter/AtMemberAdapter.java
  99. 0 143
      o2android/app/src/main/java/jiguang/chat/adapter/AudioAdapter.java
  100. 0 97
      o2android/app/src/main/java/jiguang/chat/adapter/BigEmoticonsAdapter.java

+ 45 - 46
o2android/app/build.gradle

@@ -37,8 +37,6 @@ def loadProperties() {
     project.baiduSpeechAppKey = properties.getProperty("BAIDU_SPEECH_APPKEY")
     project.baiduMapAppKey = properties.getProperty("BAIDU_MAP_APPKEY")
 
-    project.jpushIMPassword = properties.getProperty("JM_IM_USER_PASSWORD")
-
     project.buglyAppId = properties.getProperty("BUGLY_APPID")
 
 
@@ -54,8 +52,8 @@ task printVersionName {
 
 
 android {
-    compileSdkVersion 26
-    buildToolsVersion "27.0.3"
+    compileSdkVersion 28
+    buildToolsVersion "28.0.3"
     sourceSets {
         main {
             jniLibs.srcDir 'libs'
@@ -84,7 +82,7 @@ android {
     defaultConfig {
         applicationId "net.zoneland.x.bpm.mobile.v1.zoneXBPM"
         minSdkVersion 19
-        targetSdkVersion 26
+        targetSdkVersion 28
         versionCode project.property("o2.versionCode").toInteger()
         versionName project.property("o2.versionName").toString()
         multiDexEnabled true
@@ -94,7 +92,9 @@ android {
         }
         multiDexKeepProguard file('multidex_keep_file.pro')
         vectorDrawables.useSupportLibrary = true
-
+        dataBinding {
+            enabled = true
+        }
     }
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
@@ -110,7 +110,6 @@ android {
             buildConfigField "Boolean", "LOG_FILE", "true"
             manifestPlaceholders = [JPUSH_PKGNAME      : defaultConfig.applicationId,
                                     JPUSH_APPKEY       : project.jpushAppKey,
-                                    JM_IM_USER_PASSWORD: project.jpushIMPassword,
                                     BAIDU_SPEECH_APPID : project.baiduSpeechAppId,
                                     BAIDU_SPEECH_SECRET: project.baiduSpeechSecret,
                                     BAIDU_SPEECH_APPKEY: project.baiduSpeechAppKey,
@@ -127,7 +126,6 @@ android {
             buildConfigField "Boolean", "LOG_FILE", "true"
             manifestPlaceholders = [JPUSH_PKGNAME      : defaultConfig.applicationId,
                                     JPUSH_APPKEY       : project.jpushAppKey,
-                                    JM_IM_USER_PASSWORD: project.jpushIMPassword,
                                     BAIDU_SPEECH_APPID : project.baiduSpeechAppId,
                                     BAIDU_SPEECH_SECRET: project.baiduSpeechSecret,
                                     BAIDU_SPEECH_APPKEY: project.baiduSpeechAppKey,
@@ -147,9 +145,6 @@ android {
         }
     }
 
-    dataBinding {
-        enabled true
-    }
     android {
         lintOptions {
             abortOnError false
@@ -174,7 +169,6 @@ android {
         }
     }
 
-
 }
 
 
@@ -215,23 +209,23 @@ dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
     implementation "org.jetbrains.anko:anko-common:$anko_version"
 
-    implementation('com.android.support:support-v4:26.1.0') {
+    implementation('androidx.legacy:legacy-support-v4:1.0.0') {
         force = true
     }
-    implementation('com.android.support:recyclerview-v7:26.1.0') {
+    implementation('androidx.recyclerview:recyclerview:1.1.0') {
         exclude module: 'support-v4'
     }
-    implementation('com.android.support:appcompat-v7:26.1.0') {
+    implementation('androidx.appcompat:appcompat:1.2.0') {
         force = true
     }
-    implementation('com.android.support:cardview-v7:26.1.0') {
+    implementation('androidx.cardview:cardview:1.0.0') {
         force = true
     }
-    implementation('com.android.support:design:26.1.0') {
+    implementation('com.google.android.material:material:1.2.0') {
         force = true
     }
-    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
-    implementation 'com.android.support:multidex:1.0.3'
+    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+    implementation 'androidx.multidex:multidex:2.0.1'
     implementation 'com.github.PhilJay:MPAndroidChart:v2.2.4'
     implementation('com.github.bumptech.glide:glide:3.7.0') {
         force = true
@@ -259,19 +253,18 @@ dependencies {
 
     //
     implementation 'cn.jiguang.sdk:jpush:3.1.2'
-    implementation 'cn.jiguang.sdk:jmessage:2.5.0'
+//    implementation 'cn.jiguang.sdk:jmessage:2.5.0'
 
     // 此处以JMessage 2.5.0 版本为例。
     implementation 'cn.jiguang.sdk:jcore:1.1.9'
 
     //im
-    implementation 'com.michaelpardo:activeandroid:3.1.0'
-//    implementation files('libs/activeandroid-3.1.0-SNAPSHOT.jar')
-    implementation 'com.jakewharton:butterknife:8.4.0'
-    kapt 'com.jakewharton:butterknife-compiler:8.4.0'
-    implementation 'com.github.chrisbanes.photoview:library:1.2.4'
-    implementation 'com.facebook.fresco:fresco:0.8.1'
-    implementation 'org.greenrobot:eventbus:3.0.0'
+//    implementation 'com.michaelpardo:activeandroid:3.1.0'
+//    implementation 'com.jakewharton:butterknife:8.4.0'
+//    kapt 'com.jakewharton:butterknife-compiler:8.4.0'
+//    implementation 'com.github.chrisbanes.photoview:library:1.2.4'
+//    implementation 'com.facebook.fresco:fresco:0.8.1'
+//    implementation 'org.greenrobot:eventbus:3.0.0'
     implementation 'com.contrarywind:Android-PickerView:3.2.4'
 
     //滚动选择器
@@ -281,46 +274,52 @@ dependencies {
     implementation 'com.github.lwugang:ActivityResult:59b23e3682'
 
     //google architecture component
-    def lifecycle_version = "1.1.1"
-
     // ViewModel and LiveData
-    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
+    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
 
     // alternatively - just ViewModel
-    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version"
+    implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
 
     // use -ktx for Kotlin
 
     // alternatively - just LiveData
-    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
+    implementation 'androidx.lifecycle:lifecycle-livedata:2.2.0'
 
 
     //     Support library depends on this lightweight import
-    implementation "android.arch.lifecycle:runtime:$lifecycle_version"
-    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"
+    implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
+    //noinspection LifecycleAnnotationProcessorWithJava8
+    annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.2.0'
 
     //noinspection GradleDependency
-    kapt "com.android.databinding:compiler:$gradle_version"
+//    kapt 'androidx.databinding:databinding-compiler:3.0.1'
+
 
-    testImplementation 'junit:junit:4.12'
     implementation 'com.google.code.gson:gson:2.8.5'
 
     //GSYVideo播放器
-    implementation('com.shuyu:GSYVideoPlayer:6.0.3') {
-        exclude group: 'com.android.support', module: 'recyclerview-v7'
-        exclude group: 'com.android.support', module: 'appcompat-v7'
-        exclude group: 'com.android.support', module: 'cardview-v7'
-        exclude group: 'com.android.support', module: 'support-v4'
-        exclude group: 'com.android.support', module: 'design'
-        exclude group: 'com.android.support', module: 'support-compat'
-        exclude group: 'com.android.support', module: 'support-annotations'
-        exclude group: 'com.android.support', module: 'support-media-compat'
-    }
+    implementation('com.shuyu:GSYVideoPlayer:6.0.3')
+
+//            {
+//        exclude group: 'com.android.support', module: 'recyclerview-v7'
+//        exclude group: 'com.android.support', module: 'appcompat-v7'
+//        exclude group: 'com.android.support', module: 'cardview-v7'
+//        exclude group: 'com.android.support', module: 'support-v4'
+//        exclude group: 'com.android.support', module: 'design'
+//        exclude group: 'com.android.support', module: 'support-compat'
+//        exclude group: 'com.android.support', module: 'support-annotations'
+//        exclude group: 'com.android.support', module: 'support-media-compat'
+//    }
+
+
 
     //mp3录音
     implementation 'com.github.zhaolewei:ZlwAudioRecorder:v1.07'
 
 
+
+    testImplementation 'junit:junit:4.12'
+
 }
 
 

BIN
o2android/app/libs/pgyer_sdk_2.2.2.jar


+ 5 - 8
o2android/app/proguard-rules.pro

@@ -50,9 +50,8 @@
 -keep public class * extends android.content.ContentProvider
 -keep public class * extends android.app.backup.BackupAgentHelper
 -keep public class * extends android.preference.Preference
--keep public class com.android.vending.licensing.ILicensingService
 #如果有引用v4包可以添加下面这行
--keep public class * extends android.support.v4.app.Fragment
+-keep public class * extends androidx.fragment.app.Fragment
 
 
 -ignorewarnings
@@ -177,12 +176,7 @@
 -keep class com.afollestad.materialdialogs.** { *; }
 #日历控件 github > material-calendarview
 -keep class com.prolificinteractive.** { *; }
-#pgy
--dontwarn com.pgyersdk.**
--keep class com.pgyersdk.** { *; }
-#umeng
--keep class com.umeng.analytics.** { *; }
--dontwarn com.umeng.analytics.**
+
 #log4j
 -keep class org.apache.log4j.** { *; }
 -dontwarn org.apache.log4j.**
@@ -564,3 +558,6 @@
 -keep class io.flutter.view.**  { *; }
 -keep class io.flutter.**  { *; }
 -keep class io.flutter.plugins.**  { *; }
+
+
+-keep class net.sourceforge.pinyin4j.** { *; }

+ 15 - 95
o2android/app/src/main/AndroidManifest.xml

@@ -11,7 +11,8 @@
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 网络通信 -->
     <uses-permission android:name="android.permission.INTERNET" /> <!-- 获取设备信息 -->
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 读写sdcard,storage等等 -->
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="28"/>
+    <!-- 读写sdcard,storage等等 -->
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许程序录制音频 -->
     <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 拨打电话 -->
     <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 拍照 -->
@@ -40,8 +41,10 @@
         android:icon="@mipmap/logo"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/logo_round"
+        android:networkSecurityConfig="@xml/network_security_config"
         android:theme="@style/XBPMTheme.NoActionBar">
-        <activity android:name=".app.im.O2LocationActivity"></activity>
+
+        <activity android:name=".app.im.O2LocationActivity" />
         <activity android:name=".app.im.O2InstantMessageActivity" />
         <activity android:name=".app.im.O2ChatActivity" />
         <activity android:name=".app.VideoPlayerActivity" />
@@ -62,6 +65,7 @@
             android:screenOrientation="portrait"
             android:theme="@style/XBPMTheme.fullscreen" />
         <activity android:name=".app.o2.security.DeviceManagerActivity" />
+
         <activity
             android:name=".app.o2.launch.LaunchActivity"
             android:label="@string/app_name"
@@ -296,98 +300,14 @@
             android:name=".app.o2.skin.SkinManagerActivity"
             android:label="@string/skin_manager"
             android:screenOrientation="portrait" />
-        <activity android:name=".app.o2.skin.SkinShowActivity" /> <!-- im -->
-        <activity
-            android:name=".app.o2.openim.IMTribeCreateActivity"
-            android:label="@string/activity_im_tribe_create_label"
-            android:screenOrientation="portrait"
-            android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />
-        <activity
-            android:name=".app.o2.openim.IMPersonConfigActivity"
-            android:label="@string/activity_im_person_config_label"
-            android:screenOrientation="portrait" />
-        <activity
-            android:name=".app.o2.openim.IMTribeInfoActivity"
-            android:label="@string/activity_im_tribe_update_label"
-            android:screenOrientation="portrait" /> <!-- 蓝牙相关 -->
+        <activity android:name=".app.o2.skin.SkinShowActivity" />
+
+        <!-- 蓝牙相关 -->
         <activity android:name=".app.bluetooth.BlueToothClientActivity" />
         <activity android:name=".app.bluetooth.BlueToothServerActivity" />
         <activity android:name=".app.bluetooth.BlueToothBLEClientActivity" />
-        <activity android:name=".app.bluetooth.BlueToothBLEServerActivity" /> <!-- IM -->
-        <activity
-            android:name="jiguang.chat.activity.ChatActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.activity.BrowserViewPagerActivity"
-            android:screenOrientation="portrait" />
-        <activity
-            android:name="jiguang.chat.activity.ForwardMsgActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes"
-            android:windowSoftInputMode="adjustResize" />
-        <activity
-            android:name="jiguang.chat.activity.CreateGroupActivity"
-            android:configChanges="orientation|keyboardHidden"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes"
-            android:windowSoftInputMode="adjustPan|stateHidden" />
-        <activity
-            android:name="jiguang.chat.activity.GroupActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.activity.MembersInChatActivity"
-            android:configChanges="orientation|keyboardHidden"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes"
-            android:windowSoftInputMode="adjustPan|stateHidden" />
-        <activity
-            android:name="jiguang.chat.activity.SearchContactsActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes"
-            android:windowSoftInputMode="adjustResize" />
-        <activity
-            android:name="jiguang.chat.activity.SearchMoreFriendsActivity"
-            android:configChanges="orientation|keyboardHidden"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes"
-            android:windowSoftInputMode="adjustPan|stateHidden" />
-        <activity
-            android:name="jiguang.chat.activity.SearchMoreGroupActivity"
-            android:configChanges="orientation|keyboardHidden"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes"
-            android:windowSoftInputMode="adjustPan|stateHidden" />
-        <activity
-            android:name="jiguang.chat.activity.ChatDetailActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.activity.NickSignActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.activity.historyfile.activity.HistoryFileActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.activity.DownLoadActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.activity.SendFileActivity"
-            android:launchMode="singleInstance"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.activity.FriendListActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/IMBaseThemes" />
-        <activity
-            android:name="jiguang.chat.location.activity.MapPickerActivity"
-            android:screenOrientation="portrait"
-            android:theme="@style/Theme.AppCompat.Light.DarkActionBar" /> <!-- ```````````````````service```````````````````` -->
+        <activity android:name=".app.bluetooth.BlueToothBLEServerActivity" />
+        <!-- ```````````````````service```````````````````` -->
         <!-- baidu -->
         <service
             android:name="com.baidu.location.f"
@@ -443,9 +363,7 @@
             </intent-filter>
         </receiver>
 
-        <meta-data
-            android:name="JM_IM_USER_PASSWORD"
-            android:value="${JM_IM_USER_PASSWORD}" /> <!-- ```````````````````meta```````````````````` -->
+
         <!-- bugly -->
         <!-- 配置APP ID -->
         <meta-data
@@ -456,7 +374,7 @@
             android:value="${JPUSH_CHANNEL}" />
 
         <provider
-            android:name="android.support.v4.content.FileProvider"
+            android:name="androidx.core.content.FileProvider"
             android:authorities="${applicationId}.fileProvider"
             android:exported="false"
             android:grantUriPermissions="true">
@@ -472,6 +390,8 @@
 
         <activity android:name=".app.tbs.FileReaderActivity" />
         <activity android:name=".flutter.FlutterConnectActivity" />
+
+        <uses-library android:name="org.apache.http.legacy" android:required="false" />
     </application>
 
 </manifest>

+ 1 - 1
o2android/app/src/main/java/com/baidu/android/voicedemo/recognization/inputstream/MyMicrophoneInputStream.java

@@ -3,7 +3,7 @@ package com.baidu.android.voicedemo.recognization.inputstream;
 import android.media.AudioFormat;
 import android.media.AudioRecord;
 import android.media.MediaRecorder;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 import android.util.Log;
 
 import java.io.IOException;

+ 2 - 2
o2android/app/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java

@@ -4,8 +4,8 @@ import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.os.Build;
-import android.support.v4.view.ViewPager;
-import android.support.v4.view.ViewPager.PageTransformer;
+import androidx.viewpager.widget.ViewPager;
+import androidx.viewpager.widget.ViewPager.PageTransformer;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;

+ 1 - 1
o2android/app/src/main/java/com/bigkoo/convenientbanner/adapter/CBPageAdapter.java

@@ -1,6 +1,6 @@
 package com.bigkoo.convenientbanner.adapter;
 
-import android.support.v4.view.PagerAdapter;
+import androidx.viewpager.widget.PagerAdapter;
 import android.view.View;
 import android.view.ViewGroup;
 

+ 1 - 1
o2android/app/src/main/java/com/bigkoo/convenientbanner/listener/CBPageChangeListener.java

@@ -1,6 +1,6 @@
 package com.bigkoo.convenientbanner.listener;
 
-import android.support.v4.view.ViewPager;
+import androidx.viewpager.widget.ViewPager;
 import android.widget.ImageView;
 
 import java.util.ArrayList;

+ 1 - 1
o2android/app/src/main/java/com/bigkoo/convenientbanner/transformer/ScaleYTransformer.java

@@ -1,6 +1,6 @@
 package com.bigkoo.convenientbanner.transformer;
 
-import android.support.v4.view.ViewPager;
+import androidx.viewpager.widget.ViewPager;
 import android.view.View;
 
 /**

+ 2 - 2
o2android/app/src/main/java/com/bigkoo/convenientbanner/view/CBLoopViewPager.java

@@ -1,8 +1,8 @@
 package com.bigkoo.convenientbanner.view;
 
 import android.content.Context;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 

+ 4 - 4
o2android/app/src/main/java/io/flutter/facade/Flutter.java

@@ -1,12 +1,12 @@
 package io.flutter.facade;
 
 import android.app.Activity;
-import android.arch.lifecycle.Lifecycle;
-import android.arch.lifecycle.LifecycleObserver;
-import android.arch.lifecycle.OnLifecycleEvent;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import io.flutter.plugin.common.BasicMessageChannel;
 import io.flutter.plugin.common.StringCodec;

+ 2 - 2
o2android/app/src/main/java/io/flutter/facade/FlutterFragment.java

@@ -2,8 +2,8 @@ package io.flutter.facade;
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.ViewGroup;

+ 0 - 62
o2android/app/src/main/java/jiguang/chat/activity/AboutJChatActivity.java

@@ -1,62 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Intent;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-
-/**
- * Created by ${chenyn} on 2017/2/22.
- */
-
-public class AboutJChatActivity extends BaseActivity {
-
-    private TextView mJChat_version;
-    private TextView mSDK_version;
-    private RelativeLayout mJiguang;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_about_jchat);
-
-        initView();
-        initData();
-    }
-
-    private void initView() {
-        initTitle(true, true, "关于JChat", "", false, "");
-        mJChat_version = (TextView) findViewById(R.id.jchat_version);
-        mSDK_version = (TextView) findViewById(R.id.sdk_version);
-        mJiguang = (RelativeLayout) findViewById(R.id.jiguang);
-    }
-
-    //跳转极光官网
-    public void initData() {
-        mJiguang.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Uri uri = Uri.parse("https://www.jiguang.cn");
-                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
-                startActivity(intent);
-            }
-        });
-        PackageManager manager = getPackageManager();
-        try {
-            PackageInfo packageInfo = manager.getPackageInfo(getPackageName(), 0);
-            mJChat_version.setText(packageInfo.versionName);
-        } catch (PackageManager.NameNotFoundException e) {
-            e.printStackTrace();
-        }
-        //极光IM版本以及sdk版本
-        mSDK_version.setText(JMessageClient.getSdkVersionString());
-    }
-}

+ 0 - 165
o2android/app/src/main/java/jiguang/chat/activity/BaseActivity.java

@@ -1,165 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.Button;
-import android.widget.ImageButton;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.event.LoginStateChangeEvent;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.FileHelper;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.swipeback.app.SwipeBackActivity;
-
-public class BaseActivity extends SwipeBackActivity {
-
-    protected int mWidth;
-    protected int mHeight;
-    protected float mDensity;
-    protected int mDensityDpi;
-    private TextView mJmui_title_tv;
-    private ImageButton mReturn_btn;
-    private TextView mJmui_title_left;
-    public Button mJmui_commit_btn;
-    protected int mAvatarSize;
-    protected float mRatio;
-    private Dialog dialog;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_base);
-        //注册sdk的event用于接收各种event事件
-        JMessageClient.registerEventReceiver(this);
-        DisplayMetrics dm = new DisplayMetrics();
-        getWindowManager().getDefaultDisplay().getMetrics(dm);
-        mDensity = dm.density;
-        mDensityDpi = dm.densityDpi;
-        mWidth = dm.widthPixels;
-        mHeight = dm.heightPixels;
-        mRatio = Math.min((float) mWidth / 720, (float) mHeight / 1280);
-        mAvatarSize = (int) (50 * mDensity);
-
-    }
-
-    //初始化各个activity的title
-    public void initTitle(boolean returnBtn, boolean titleLeftDesc, String titleLeft, String title, boolean save, String desc) {
-        mReturn_btn = (ImageButton) findViewById(R.id.return_btn);
-        mJmui_title_left = (TextView) findViewById(R.id.jmui_title_left);
-        mJmui_title_tv = (TextView) findViewById(R.id.jmui_title_tv);
-        mJmui_commit_btn = (Button) findViewById(R.id.jmui_commit_btn);
-
-        if (returnBtn) {
-            mReturn_btn.setVisibility(View.VISIBLE);
-            mReturn_btn.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    finish();
-                }
-            });
-        }
-        if (titleLeftDesc) {
-            mJmui_title_left.setVisibility(View.VISIBLE);
-            mJmui_title_left.setText(titleLeft);
-        }
-        mJmui_title_tv.setText(title);
-        if (save) {
-            mJmui_commit_btn.setVisibility(View.VISIBLE);
-            mJmui_commit_btn.setText(desc);
-        }
-
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        if (null != this.getCurrentFocus()) {
-            InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
-            return mInputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);
-        }
-        return super.onTouchEvent(event);
-    }
-
-    public void goToActivity(Context context, Class toActivity) {
-        Intent intent = new Intent(context, toActivity);
-        startActivity(intent);
-        finish();
-    }
-
-    public void onEventMainThread(LoginStateChangeEvent event) {
-        final LoginStateChangeEvent.Reason reason = event.getReason();
-        UserInfo myInfo = event.getMyInfo();
-        if (myInfo != null) {
-            String path;
-            File avatar = myInfo.getAvatarFile();
-            if (avatar != null && avatar.exists()) {
-                path = avatar.getAbsolutePath();
-            } else {
-                path = FileHelper.getUserAvatarPath(myInfo.getUserName());
-            }
-            SharePreferenceManager.setCachedUsername(myInfo.getUserName());
-            SharePreferenceManager.setCachedAvatarPath(path);
-            JMessageClient.logout();
-        }
-        switch (reason) {
-            case user_logout:
-                View.OnClickListener listener = new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        switch (v.getId()) {
-                            case R.id.jmui_cancel_btn:
-                                Intent intent = new Intent(BaseActivity.this, LoginActivity.class);
-                                startActivity(intent);
-                                break;
-                            case R.id.jmui_commit_btn:
-                                JMessageClient.login(SharePreferenceManager.getCachedUsername(), SharePreferenceManager.getCachedPsw(), new BasicCallback() {
-                                    @Override
-                                    public void gotResult(int responseCode, String responseMessage) {
-                                        if (responseCode == 0) {
-                                            Intent intent = new Intent(BaseActivity.this, MainActivity.class);
-                                            startActivity(intent);
-                                        }
-                                    }
-                                });
-                                break;
-                        }
-                    }
-                };
-                dialog = DialogCreator.createLogoutStatusDialog(BaseActivity.this, "您的账号在其他设备上登陆", listener);
-                dialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-                dialog.setCanceledOnTouchOutside(false);
-                dialog.show();
-                break;
-            case user_password_change:
-                Intent intent = new Intent(BaseActivity.this, LoginActivity.class);
-                startActivity(intent);
-                break;
-        }
-    }
-    @Override
-    public void onDestroy() {
-        //注销消息接收
-        JMessageClient.unRegisterEventReceiver(this);
-        if (dialog != null) {
-            dialog.dismiss();
-        }
-        super.onDestroy();
-    }
-
-
-}

+ 0 - 852
o2android/app/src/main/java/jiguang/chat/activity/BrowserViewPagerActivity.java

@@ -1,852 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.provider.MediaStore;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.SparseBooleanArray;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.ImageButton;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.bumptech.glide.Glide;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.DownloadCompletionCallback;
-import cn.jpush.im.android.api.callback.ProgressUpdateCallback;
-import cn.jpush.im.android.api.content.ImageContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.pickerimage.utils.AttachmentStore;
-import jiguang.chat.pickerimage.utils.StorageUtil;
-import jiguang.chat.utils.BitmapLoader;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.NativeImageLoader;
-import jiguang.chat.view.ImgBrowserViewPager;
-import jiguang.chat.view.PhotoView;
-
-
-//用于浏览图片
-public class BrowserViewPagerActivity extends BaseActivity {
-
-    private static String TAG = BrowserViewPagerActivity.class.getSimpleName();
-    private PhotoView photoView;
-    private ImgBrowserViewPager mViewPager;
-    private ProgressDialog mProgressDialog;
-    //存放所有图片的路径
-    private List<String> mPathList = new ArrayList<String>();
-    //存放图片消息的ID
-    private List<Integer> mMsgIdList = new ArrayList<Integer>();
-    private TextView mNumberTv;
-    private Button mSendBtn;
-    private CheckBox mOriginPictureCb;
-    private TextView mTotalSizeTv;
-    private CheckBox mPictureSelectedCb;
-    private Button mLoadBtn;
-    private int mPosition;
-    private Conversation mConv;
-    private Message mMsg;
-    private boolean mFromChatActivity = true;
-    //当前消息数
-    private int mStart;
-    private int mOffset = 18;
-    private Context mContext;
-    private boolean mDownloading = false;
-    private int mMessageId;
-    private int[] mMsgIds;
-    private int mIndex = 0;
-    private final UIHandler mUIHandler = new UIHandler(this);
-    private BackgroundHandler mBackgroundHandler;
-    private final static int DOWNLOAD_ORIGIN_IMAGE_SUCCEED = 1;
-    private final static int DOWNLOAD_PROGRESS = 2;
-    private final static int DOWNLOAD_COMPLETED = 3;
-    private final static int SEND_PICTURE = 5;
-    private final static int DOWNLOAD_ORIGIN_PROGRESS = 6;
-    private final static int DOWNLOAD_ORIGIN_COMPLETED = 7;
-    private final static int INITIAL_PICTURE_LIST = 0x2000;
-    private final static int INIT_ADAPTER = 0x2001;
-    private final static int GET_NEXT_PAGE_OF_PICTURE = 0x2002;
-    private final static int SET_CURRENT_POSITION = 0x2003;
-    private Dialog mDialog;
-
-
-    /**
-     * 用来存储图片的选中情况
-     */
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        ImageButton returnBtn;
-        RelativeLayout titleBarRl, checkBoxRl;
-
-        mContext = this;
-        setContentView(R.layout.activity_image_browser);
-        mViewPager = (ImgBrowserViewPager) findViewById(R.id.img_browser_viewpager);
-        returnBtn = (ImageButton) findViewById(R.id.return_btn);
-        mNumberTv = (TextView) findViewById(R.id.number_tv);
-        mSendBtn = (Button) findViewById(R.id.pick_picture_send_btn);
-        titleBarRl = (RelativeLayout) findViewById(R.id.title_bar_rl);
-        checkBoxRl = (RelativeLayout) findViewById(R.id.check_box_rl);
-        mOriginPictureCb = (CheckBox) findViewById(R.id.origin_picture_cb);
-        mTotalSizeTv = (TextView) findViewById(R.id.total_size_tv);
-        mPictureSelectedCb = (CheckBox) findViewById(R.id.picture_selected_cb);
-        mLoadBtn = (Button) findViewById(R.id.load_image_btn);
-
-        HandlerThread backgroundThread = new HandlerThread("Work on BrowserActivity");
-        backgroundThread.start();
-        mBackgroundHandler = new BackgroundHandler(backgroundThread.getLooper());
-        final Intent intent = this.getIntent();
-        long groupId = intent.getLongExtra(JGApplication.GROUP_ID, 0);
-        String targetAppKey = intent.getStringExtra(JGApplication.TARGET_APP_KEY);
-        mMessageId = intent.getIntExtra("msgId", 0);
-        if (groupId != 0) {
-            mConv = JMessageClient.getGroupConversation(groupId);
-        } else {
-            String targetId = intent.getStringExtra(JGApplication.TARGET_ID);
-            if (targetId != null) {
-                mConv = JMessageClient.getSingleConversation(targetId, targetAppKey);
-            }
-        }
-        mStart = intent.getIntExtra("msgCount", 0);
-        mPosition = intent.getIntExtra(JGApplication.POSITION, 0);
-        mFromChatActivity = intent.getBooleanExtra("fromChatActivity", true);
-        boolean browserAvatar = intent.getBooleanExtra("browserAvatar", false);
-
-        returnBtn.setOnClickListener(listener);
-        mSendBtn.setOnClickListener(listener);
-        mLoadBtn.setOnClickListener(listener);
-
-        // 在聊天界面中点击图片
-        if (mFromChatActivity) {
-            titleBarRl.setVisibility(View.GONE);
-            checkBoxRl.setVisibility(View.GONE);
-            //预览头像
-            if (browserAvatar) {
-                String path = intent.getStringExtra("avatarPath");
-                photoView = new PhotoView(mFromChatActivity, mContext);
-                mLoadBtn.setVisibility(View.GONE);
-                try {
-                    File file = new File(path);
-                    mPathList.add(path);
-                    mViewPager.setAdapter(pagerAdapter);
-                    mViewPager.addOnPageChangeListener(onPageChangeListener);
-                    if (file.exists()) {
-//                        Picasso.with(mContext).load(file).into(photoView);
-                        Glide.with(mContext).load(file).dontAnimate().into(photoView);
-                    } else {
-                        photoView.setImageBitmap(NativeImageLoader.getInstance().getBitmapFromMemCache(path));
-                    }
-                } catch (Exception e) {
-                    photoView.setImageResource(R.drawable.jmui_picture_not_found);
-                }
-                //预览聊天界面中的图片
-            } else {
-                mBackgroundHandler.sendEmptyMessage(INITIAL_PICTURE_LIST);
-            }
-            // 在选择图片时点击预览图片
-        } else {
-            mPathList = intent.getStringArrayListExtra("pathList");
-            mViewPager.setAdapter(pagerAdapter);
-            mViewPager.addOnPageChangeListener(onPageChangeListener);
-            int[] pathArray = intent.getIntArrayExtra("pathArray");
-            //初始化选中了多少张图片
-            for (int i = 0; i < pathArray.length; i++) {
-                if (pathArray[i] == 1) {
-                    mSelectMap.put(i, true);
-                }
-            }
-            showSelectedNum();
-            mLoadBtn.setVisibility(View.GONE);
-            mViewPager.setCurrentItem(mPosition);
-            String numberText = mPosition + 1 + "/" + mPathList.size();
-            mNumberTv.setText(numberText);
-            int currentItem = mViewPager.getCurrentItem();
-            checkPictureSelected(currentItem);
-            checkOriginPictureSelected();
-            //第一张特殊处理
-            mPictureSelectedCb.setChecked(mSelectMap.get(currentItem));
-            showTotalSize();
-        }
-    }
-
-    PagerAdapter pagerAdapter = new PagerAdapter() {
-
-        @Override
-        public int getCount() {
-            return mPathList.size();
-        }
-
-        /**
-         * 点击某张图片预览时,系统自动调用此方法加载这张图片左右视图(如果有的话)
-         */
-        @Override
-        public View instantiateItem(ViewGroup container, int position) {
-            photoView = new PhotoView(mFromChatActivity, container.getContext());
-            photoView.setTag(position);
-            String path = mPathList.get(position);
-            if (path != null) {
-                File file = new File(path);
-                if (file.exists()) {
-                    Bitmap bitmap = BitmapLoader.getBitmapFromFile(path, mWidth, mHeight);
-                    if (bitmap != null) {
-                        photoView.setMaxScale(9);
-                        photoView.setImageBitmap(bitmap);
-                    } else {
-                        photoView.setImageResource(R.drawable.jmui_picture_not_found);
-                    }
-                } else {
-                    Bitmap bitmap = NativeImageLoader.getInstance().getBitmapFromMemCache(path);
-                    if (bitmap != null) {
-                        photoView.setMaxScale(9);
-                        photoView.setImageBitmap(bitmap);
-                    } else {
-                        photoView.setImageResource(R.drawable.jmui_picture_not_found);
-                    }
-                }
-            } else {
-                photoView.setImageResource(R.drawable.jmui_picture_not_found);
-            }
-            container.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
-            //图片长按保存到手机
-            onImageViewFound(photoView, path);
-            return photoView;
-        }
-
-        @Override
-        public int getItemPosition(Object object) {
-            View view = (View) object;
-            int currentPage = mViewPager.getCurrentItem();
-            if (currentPage == (Integer) view.getTag()) {
-                return POSITION_NONE;
-            } else {
-                return POSITION_UNCHANGED;
-            }
-        }
-
-        @Override
-        public void destroyItem(ViewGroup container, int position, Object object) {
-            container.removeView((View) object);
-        }
-
-        @Override
-        public boolean isViewFromObject(View view, Object object) {
-            return view == object;
-        }
-
-    };
-
-    private void onImageViewFound(PhotoView photoView, final String path) {
-        photoView.setOnLongClickListener(new View.OnLongClickListener() {
-            @Override
-            public boolean onLongClick(View v) {
-
-                View.OnClickListener listener = new OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        int i = v.getId();
-                        if (i == R.id.jmui_delete_conv_ll) {
-                            savePicture(path, mDialog);
-
-                        } else if (i == R.id.jmui_top_conv_ll) {
-                            Intent intent = new Intent(BrowserViewPagerActivity.this, ForwardMsgActivity.class);
-                            JGApplication.forwardMsg.clear();
-                            JGApplication.forwardMsg.add(mMsg);
-                            startActivity(intent);
-
-                        } else {
-                        }
-                        mDialog.dismiss();
-                    }
-                };
-                mDialog = DialogCreator.createSavePictureDialog(mContext, listener);
-                mDialog.show();
-                mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-                return false;
-            }
-        });
-    }
-
-    // 保存图片
-    public void savePicture(String path, Dialog dialog) {
-        if (TextUtils.isEmpty(path)) {
-            return;
-        }
-
-        String picPath = StorageUtil.getSystemImagePath();
-        String dstPath = picPath + path;
-        if (AttachmentStore.copy(path, dstPath) != -1) {
-            try {
-                ContentValues values = new ContentValues(2);
-                values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
-                values.put(MediaStore.Images.Media.DATA, dstPath);
-                getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
-                Toast.makeText(mContext, getString(R.string.picture_save_to), Toast.LENGTH_LONG).show();
-                dialog.dismiss();
-            } catch (Exception e) {
-                dialog.dismiss();
-                Toast.makeText(mContext, getString(R.string.picture_save_fail), Toast.LENGTH_LONG).show();
-            }
-        } else {
-            dialog.dismiss();
-            Toast.makeText(mContext, getString(R.string.picture_save_fail), Toast.LENGTH_LONG).show();
-        }
-    }
-
-    private void setLoadBtnText(ImageContent ic) {
-        NumberFormat ddf1 = NumberFormat.getNumberInstance();
-        //保留小数点后两位
-        ddf1.setMaximumFractionDigits(2);
-        double size = ic.getFileSize() / 1048576.0;
-        String loadText = mContext.getString(R.string.load_origin_image) + "(" + ddf1.format(size) + "M" + ")";
-        mLoadBtn.setText(loadText);
-    }
-
-    /**
-     * 在图片预览中发送图片,点击选择CheckBox时,触发事件
-     *
-     * @param currentItem 当前图片索引
-     */
-    private void checkPictureSelected(final int currentItem) {
-        mPictureSelectedCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
-                if (mSelectMap.size() + 1 <= 9) {
-                    if (isChecked) {
-                        mSelectMap.put(currentItem, true);
-                    } else {
-                        mSelectMap.delete(currentItem);
-                    }
-                } else if (isChecked) {
-                    Toast.makeText(mContext, mContext.getString(R.string.picture_num_limit_toast), Toast.LENGTH_SHORT).show();
-                    mPictureSelectedCb.setChecked(mSelectMap.get(currentItem));
-                } else {
-                    mSelectMap.delete(currentItem);
-                }
-
-                showSelectedNum();
-                showTotalSize();
-            }
-        });
-
-    }
-
-    /**
-     * 点击发送原图CheckBox,触发事件
-     */
-    private void checkOriginPictureSelected() {
-        mOriginPictureCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
-                if (isChecked) {
-                    if (mSelectMap.size() < 1) {
-                        mPictureSelectedCb.setChecked(true);
-                    }
-                }
-            }
-        });
-    }
-
-    //显示选中的图片总的大小
-    private void showTotalSize() {
-        if (mSelectMap.size() > 0) {
-            List<String> pathList = new ArrayList<String>();
-            for (int i = 0; i < mSelectMap.size(); i++) {
-                pathList.add(mPathList.get(mSelectMap.keyAt(i)));
-            }
-            String totalSize = BitmapLoader.getPictureSize(pathList);
-            String totalText = mContext.getString(R.string.origin_picture)
-                    + String.format(mContext.getString(R.string.combine_title), totalSize);
-            mTotalSizeTv.setText(totalText);
-        } else {
-            mTotalSizeTv.setText(mContext.getString(R.string.origin_picture));
-        }
-    }
-
-    //显示选中了多少张图片
-    private void showSelectedNum() {
-        if (mSelectMap.size() > 0) {
-            String sendText = mContext.getString(R.string.jmui_send) + "(" + mSelectMap.size() + "/" + "9)";
-            mSendBtn.setText(sendText);
-        } else {
-            mSendBtn.setText(mContext.getString(R.string.jmui_send));
-        }
-    }
-
-    private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
-        //在滑动的时候更新CheckBox的状态
-        @Override
-        public void onPageScrolled(final int i, float v, int i2) {
-            checkPictureSelected(i);
-            checkOriginPictureSelected();
-            mPictureSelectedCb.setChecked(mSelectMap.get(i));
-        }
-
-        @Override
-        public void onPageSelected(final int i) {
-            if (mFromChatActivity) {
-                mMsg = mConv.getMessage(mMsgIdList.get(i));
-                ImageContent ic = (ImageContent) mMsg.getContent();
-                //每次选择或滑动图片,如果不存在本地图片则下载,显示大图
-                if (ic.getLocalPath() == null && i != mPosition) {
-//                    mLoadBtn.setVisibility(View.VISIBLE);
-                    downloadImage();
-                } else if (ic.getBooleanExtra("hasDownloaded") != null && !ic.getBooleanExtra("hasDownloaded")) {
-                    setLoadBtnText(ic);
-                    mLoadBtn.setVisibility(View.GONE);
-                } else {
-                    mLoadBtn.setVisibility(View.GONE);
-                }
-                if (i == 0) {
-                    getImgMsg();
-                }
-            } else {
-                String numText = i + 1 + "/" + mPathList.size();
-                mNumberTv.setText(numText);
-            }
-        }
-
-        @Override
-        public void onPageScrollStateChanged(int i) {
-
-        }
-    };
-
-    /**
-     * 滑动到当前页图片的第一张时,加载上一页消息中的图片
-     */
-    private void getImgMsg() {
-//        ImageContent ic;
-//        final int msgSize = mMsgIdList.size();
-//        List<Message> msgList = mConv.getMessagesFromNewest(mStart, mOffset);
-//        mOffset = msgList.size();
-//        if (mOffset > 0) {
-//            for (Message msg : msgList) {
-//                if (msg.getContentType().equals(ContentType.image)) {
-//                    mMsgIdList.add(0, msg.getId());
-//                    ic = (ImageContent) msg.getContent();
-//                    if (!TextUtils.isEmpty(ic.getLocalPath())) {
-//                        mPathList.add(0, ic.getLocalPath());
-//                    } else {
-//                        mPathList.add(0, ic.getLocalThumbnailPath());
-//                    }
-//                }
-//            }
-//            mStart += mOffset;
-//            if (msgSize == mMsgIdList.size()) {
-//                getImgMsg();
-//            } else {
-//                //加载完上一页图片后,设置当前图片仍为加载前的那一张图片
-//                mPosition = mMsgIdList.size() - msgSize;
-//                mUIHandler.sendMessage(mUIHandler.obtainMessage(SET_CURRENT_POSITION, mPosition));
-//            }
-//        }
-    }
-
-    /**
-     * 初始化会话中的所有图片路径
-     */
-    private void initImgPathList() {
-        mMsgIdList = this.getIntent().getIntegerArrayListExtra(JGApplication.MsgIDs);
-        Message msg;
-        ImageContent ic;
-        for (int msgID : mMsgIdList) {
-            msg = mConv.getMessage(msgID);
-            if (msg.getContentType().equals(ContentType.image)) {
-                ic = (ImageContent) msg.getContent();
-                if (!TextUtils.isEmpty(ic.getLocalPath())) {
-                    mPathList.add(ic.getLocalPath());
-                } else {
-                    mPathList.add(ic.getLocalThumbnailPath());
-                }
-            }
-        }
-    }
-
-    private void initCurrentItem() {
-        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
-            Toast.makeText(this, this.getString(R.string.jmui_local_picture_not_found_toast), Toast.LENGTH_SHORT).show();
-        }
-        mMsg = mConv.getMessage(mMessageId);
-        photoView = new PhotoView(mFromChatActivity, this);
-        int currentItem = mMsgIdList.indexOf(mMsg.getId());
-        try {
-            ImageContent ic = (ImageContent) mMsg.getContent();
-            //如果点击的是第一张图片并且图片未下载过,则显示大图
-            if (ic.getLocalPath() == null && mMsgIdList.indexOf(mMsg.getId()) == 0) {
-                downloadImage();
-            }
-            String path = mPathList.get(mMsgIdList.indexOf(mMsg.getId()));
-            //如果发送方上传了原图
-            if (ic.getBooleanExtra("originalPicture") != null && ic.getBooleanExtra("originalPicture")) {
-                mLoadBtn.setVisibility(View.GONE);
-                setLoadBtnText(ic);
-                photoView.setImageBitmap(BitmapLoader.getBitmapFromFile(path, mWidth, mHeight));
-            } else {
-//                Picasso.with(mContext).load(new File(path)).into(photoView);
-                Glide.with(mContext).load(new File(path)).dontAnimate().into(photoView);
-            }
-
-            mViewPager.setCurrentItem(currentItem);
-        } catch (NullPointerException e) {
-            photoView.setImageResource(R.drawable.jmui_picture_not_found);
-            mViewPager.setCurrentItem(currentItem);
-        } finally {
-            if (currentItem == 0) {
-                mBackgroundHandler.sendEmptyMessage(GET_NEXT_PAGE_OF_PICTURE);
-            }
-        }
-    }
-
-    private OnClickListener listener = new OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            int viewId = v.getId();
-            if (viewId == R.id.return_btn) {
-                int pathArray[] = new int[mPathList.size()];
-                for (int i = 0; i < pathArray.length; i++) {
-                    pathArray[i] = 0;
-                }
-                for (int j = 0; j < mSelectMap.size(); j++) {
-                    pathArray[mSelectMap.keyAt(j)] = 1;
-                }
-                Intent intent = new Intent();
-                intent.putExtra("pathArray", pathArray);
-                setResult(JGApplication.RESULT_CODE_SELECT_PICTURE, intent);
-                finish();
-            } else if (viewId == R.id.pick_picture_send_btn) {
-                mProgressDialog = new ProgressDialog(mContext);
-                mProgressDialog.setMessage(mContext.getString(R.string.sending_hint));
-                mProgressDialog.setCanceledOnTouchOutside(false);
-                mProgressDialog.show();
-                mPosition = mViewPager.getCurrentItem();
-
-                if (mOriginPictureCb.isChecked()) {
-                    Log.i(TAG, "发送原图");
-                    getOriginPictures(mPosition);
-                } else {
-                    Log.i(TAG, "发送缩略图");
-                    getThumbnailPictures(mPosition);
-                }
-            } else if (viewId == R.id.load_image_btn) {
-                downloadOriginalPicture();
-            }
-
-        }
-    };
-
-    private void downloadOriginalPicture() {
-        final ImageContent imgContent = (ImageContent) mMsg.getContent();
-        //如果不存在下载进度
-        if (!mMsg.isContentDownloadProgressCallbackExists()) {
-            mMsg.setOnContentDownloadProgressCallback(new ProgressUpdateCallback() {
-                @Override
-                public void onProgressUpdate(double progress) {
-                    android.os.Message msg = mUIHandler.obtainMessage();
-                    Bundle bundle = new Bundle();
-                    if (progress < 1.0) {
-                        msg.what = DOWNLOAD_ORIGIN_PROGRESS;
-                        bundle.putInt("progress", (int) (progress * 100));
-                        msg.setData(bundle);
-                        msg.sendToTarget();
-                    } else {
-                        msg.what = DOWNLOAD_ORIGIN_COMPLETED;
-                        msg.sendToTarget();
-                    }
-                }
-            });
-            imgContent.downloadOriginImage(mMsg, new DownloadCompletionCallback() {
-                @Override
-                public void onComplete(int status, String desc, File file) {
-                    if (status == 0) {
-                        imgContent.setBooleanExtra("hasDownloaded", true);
-                    } else {
-                        imgContent.setBooleanExtra("hasDownloaded", false);
-                        if (mProgressDialog != null) {
-                            mProgressDialog.dismiss();
-                        }
-                    }
-                }
-            });
-        }
-    }
-
-
-    /**
-     * 获得选中图片的原图路径
-     *
-     * @param position 选中的图片位置
-     */
-    private void getOriginPictures(int position) {
-        if (mSelectMap.size() < 1) {
-            mSelectMap.put(position, true);
-        }
-        mMsgIds = new int[mSelectMap.size()];
-        //根据选择的图片路径生成队列
-        for (int i = 0; i < mSelectMap.size(); i++) {
-            createImageContent(mPathList.get(mSelectMap.keyAt(i)), true);
-        }
-    }
-
-    /**
-     * 获得选中图片的缩略图路径
-     *
-     * @param position 选中的图片位置
-     */
-    private void getThumbnailPictures(int position) {
-        if (mSelectMap.size() < 1) {
-            mSelectMap.put(position, true);
-        }
-        mMsgIds = new int[mSelectMap.size()];
-        for (int i = 0; i < mSelectMap.size(); i++) {
-            createImageContent(mPathList.get(mSelectMap.keyAt(i)), false);
-        }
-    }
-
-    /**
-     * 根据图片路径生成ImageContent
-     *
-     * @param path       图片路径
-     * @param isOriginal 是否发送原图
-     */
-    private void createImageContent(String path, final boolean isOriginal) {
-        Bitmap bitmap;
-        if (isOriginal || BitmapLoader.verifyPictureSize(path)) {
-            File file = new File(path);
-            ImageContent.createImageContentAsync(file, new ImageContent.CreateImageContentCallback() {
-                @Override
-                public void gotResult(int status, String desc, ImageContent imageContent) {
-                    if (status == 0) {
-                        if (isOriginal) {
-                            imageContent.setBooleanExtra("originalPicture", true);
-                        }
-                        Message msg = mConv.createSendMessage(imageContent);
-                        mMsgIds[mIndex] = msg.getId();
-                    } else {
-                        mMsgIds[mIndex] = -1;
-                    }
-                    mIndex++;
-                    if (mIndex >= mSelectMap.size()) {
-                        mUIHandler.sendEmptyMessage(SEND_PICTURE);
-                    }
-                }
-            });
-        } else {
-            bitmap = BitmapLoader.getBitmapFromFile(path, 720, 1280);
-            ImageContent.createImageContentAsync(bitmap, new ImageContent.CreateImageContentCallback() {
-                @Override
-                public void gotResult(int status, String desc, ImageContent imageContent) {
-                    if (status == 0) {
-                        Message msg = mConv.createSendMessage(imageContent);
-                        mMsgIds[mIndex] = msg.getId();
-                    } else {
-                        mMsgIds[mIndex] = -1;
-                    }
-                    mIndex++;
-                    if (mIndex >= mSelectMap.size()) {
-                        mUIHandler.sendEmptyMessage(SEND_PICTURE);
-                    }
-                }
-            });
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        if (mProgressDialog != null) {
-            mProgressDialog.dismiss();
-        }
-        super.onDestroy();
-    }
-
-    @Override
-    public void onBackPressed() {
-        if (mDownloading) {
-            mProgressDialog.dismiss();
-            //TODO cancel download image
-        }
-        int pathArray[] = new int[mPathList.size()];
-        for (int i = 0; i < pathArray.length; i++) {
-            pathArray[i] = 0;
-        }
-        for (int i = 0; i < mSelectMap.size(); i++) {
-            pathArray[mSelectMap.keyAt(i)] = 1;
-        }
-        Intent intent = new Intent();
-        intent.putExtra("pathArray", pathArray);
-        setResult(JGApplication.RESULT_CODE_SELECT_PICTURE, intent);
-        super.onBackPressed();
-    }
-
-    //每次在聊天界面点击图片或者滑动图片自动下载大图
-    private void downloadImage() {
-        Log.d(TAG, "Downloading image!");
-        ImageContent imgContent = (ImageContent) mMsg.getContent();
-        if (imgContent.getLocalPath() == null) {
-            //如果不存在进度条Callback,重新注册
-            if (!mMsg.isContentDownloadProgressCallbackExists()) {
-                mProgressDialog = new ProgressDialog(this);
-                mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
-                mProgressDialog.setCanceledOnTouchOutside(false);
-                mProgressDialog.setIndeterminate(false);
-                mProgressDialog.setMessage(mContext.getString(R.string.downloading_hint));
-                mDownloading = true;
-                mProgressDialog.show();
-                // 显示下载进度条
-                mMsg.setOnContentDownloadProgressCallback(new ProgressUpdateCallback() {
-
-                    @Override
-                    public void onProgressUpdate(double progress) {
-                        android.os.Message msg = mUIHandler.obtainMessage();
-                        Bundle bundle = new Bundle();
-                        if (progress < 1.0) {
-                            msg.what = DOWNLOAD_PROGRESS;
-                            bundle.putInt("progress", (int) (progress * 100));
-                            msg.setData(bundle);
-                            msg.sendToTarget();
-                        } else {
-                            msg.what = DOWNLOAD_COMPLETED;
-                            msg.sendToTarget();
-                        }
-                    }
-                });
-                // msg.setContent(imgContent);
-                imgContent.downloadOriginImage(mMsg, new DownloadCompletionCallback() {
-                    @Override
-                    public void onComplete(int status, String desc, File file) {
-                        mDownloading = false;
-                        if (status == 0) {
-                            android.os.Message msg = mUIHandler.obtainMessage();
-                            msg.what = DOWNLOAD_ORIGIN_IMAGE_SUCCEED;
-                            Bundle bundle = new Bundle();
-                            bundle.putString("path", file.getAbsolutePath());
-                            bundle.putInt(JGApplication.POSITION, mViewPager.getCurrentItem());
-                            msg.setData(bundle);
-                            msg.sendToTarget();
-                        } else {
-                            if (mProgressDialog != null) {
-                                mProgressDialog.dismiss();
-                            }
-                        }
-                    }
-                });
-            }
-        }
-    }
-
-    private static class UIHandler extends Handler {
-        private final WeakReference<BrowserViewPagerActivity> mActivity;
-
-        public UIHandler(BrowserViewPagerActivity activity) {
-            mActivity = new WeakReference<BrowserViewPagerActivity>(activity);
-        }
-
-        @Override
-        public void handleMessage(android.os.Message msg) {
-            super.handleMessage(msg);
-            BrowserViewPagerActivity activity = mActivity.get();
-            if (activity != null) {
-                switch (msg.what) {
-                    case DOWNLOAD_ORIGIN_IMAGE_SUCCEED:
-                        //更新图片并显示
-                        Bundle bundle = msg.getData();
-                        activity.mPathList.set(bundle.getInt(JGApplication.POSITION), bundle.getString("path"));
-                        activity.mViewPager.getAdapter().notifyDataSetChanged();
-                        activity.mLoadBtn.setVisibility(View.GONE);
-                        break;
-                    case DOWNLOAD_PROGRESS:
-                        activity.mProgressDialog.setProgress(msg.getData().getInt("progress"));
-                        break;
-                    case DOWNLOAD_COMPLETED:
-                        activity.mProgressDialog.dismiss();
-                        break;
-                    case SEND_PICTURE:
-                        Intent intent = new Intent();
-                        intent.putExtra(JGApplication.MsgIDs, activity.mMsgIds);
-                        activity.setResult(JGApplication.RESULT_CODE_BROWSER_PICTURE, intent);
-                        activity.finish();
-                        break;
-                    //显示下载原图进度
-                    case DOWNLOAD_ORIGIN_PROGRESS:
-                        String progress = msg.getData().getInt("progress") + "%";
-                        activity.mLoadBtn.setText(progress);
-                        break;
-                    case DOWNLOAD_ORIGIN_COMPLETED:
-                        activity.mLoadBtn.setText(activity.getString(R.string.download_completed_toast));
-                        activity.mLoadBtn.setVisibility(View.GONE);
-                        break;
-                    case INIT_ADAPTER:
-                        activity.mViewPager.setAdapter(activity.pagerAdapter);
-                        activity.mViewPager.addOnPageChangeListener(activity.onPageChangeListener);
-                        activity.initCurrentItem();
-                        break;
-                    case SET_CURRENT_POSITION:
-                        if (activity.mViewPager != null && activity.mViewPager.getAdapter() != null) {
-                            activity.mViewPager.getAdapter().notifyDataSetChanged();
-                            int position = (int) msg.obj;
-                            activity.mViewPager.setCurrentItem(position);
-                        }
-                        break;
-                }
-            }
-        }
-    }
-
-    private class BackgroundHandler extends Handler {
-        public BackgroundHandler(Looper looper) {
-            super(looper);
-        }
-
-        @Override
-        public void handleMessage(android.os.Message msg) {
-            super.handleMessage(msg);
-            switch (msg.what) {
-                case INITIAL_PICTURE_LIST:
-                    initImgPathList();
-                    mUIHandler.sendEmptyMessage(INIT_ADAPTER);
-                    break;
-                case GET_NEXT_PAGE_OF_PICTURE:
-                    getImgMsg();
-                    break;
-            }
-        }
-    }
-
-    @Override
-    public void finish() {
-        super.finish();
-        overridePendingTransition(0, R.anim.trans_finish_in);
-    }
-}

+ 0 - 1354
o2android/app/src/main/java/jiguang/chat/activity/ChatActivity.java

@@ -1,1354 +0,0 @@
-package jiguang.chat.activity;
-
-import android.Manifest;
-import android.app.Activity;
-import android.app.Dialog;
-import android.content.ClipData;
-import android.content.ClipboardManager;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.provider.MediaStore;
-import android.support.v4.content.FileProvider;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.Window;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.AbsListView;
-import android.widget.Toast;
-
-
-import net.muliba.fancyfilepickerlibrary.PicturePicker;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.person.PersonActivity;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.ImmersedStatusBarUtils;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.permission.PermissionRequester;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.permission.PermissionResult;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetGroupInfoCallback;
-import cn.jpush.im.android.api.content.EventNotificationContent;
-import cn.jpush.im.android.api.content.FileContent;
-import cn.jpush.im.android.api.content.ImageContent;
-import cn.jpush.im.android.api.content.LocationContent;
-import cn.jpush.im.android.api.content.TextContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.enums.ConversationType;
-import cn.jpush.im.android.api.enums.MessageDirect;
-import cn.jpush.im.android.api.event.MessageEvent;
-import cn.jpush.im.android.api.event.MessageReceiptStatusChangeEvent;
-import cn.jpush.im.android.api.event.MessageRetractEvent;
-import cn.jpush.im.android.api.event.OfflineMessageEvent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.api.options.MessageSendingOptions;
-import cn.jpush.im.android.eventbus.EventBus;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.adapter.ChattingListAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.location.activity.MapPickerActivity;
-import jiguang.chat.model.Constants;
-import jiguang.chat.pickerimage.model.PhotoInfo;
-import jiguang.chat.pickerimage.utils.RequestCode;
-import jiguang.chat.pickerimage.utils.SendImageHelper;
-import jiguang.chat.pickerimage.utils.StorageType;
-import jiguang.chat.pickerimage.utils.StorageUtil;
-import jiguang.chat.utils.IdHelper;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.SimpleCommonUtils;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.event.ImageEvent;
-import jiguang.chat.utils.imagepicker.bean.ImageItem;
-import jiguang.chat.utils.keyboard.XhsEmoticonsKeyBoard;
-import jiguang.chat.utils.keyboard.data.EmoticonEntity;
-import jiguang.chat.utils.keyboard.interfaces.EmoticonClickListener;
-import jiguang.chat.utils.keyboard.utils.EmoticonsKeyboardUtils;
-import jiguang.chat.utils.keyboard.widget.EmoticonsEditText;
-import jiguang.chat.utils.keyboard.widget.FuncLayout;
-import jiguang.chat.view.ChatView;
-import jiguang.chat.view.SimpleAppsGridView;
-import jiguang.chat.view.TipItem;
-import jiguang.chat.view.TipView;
-import jiguang.chat.view.listview.DropDownListView;
-import rx.functions.Action1;
-
-
-/**
- * Created by ${chenyn} on 2017/3/26.
- */
-
-public class ChatActivity extends BaseActivity implements FuncLayout.OnFuncKeyBoardListener, View.OnClickListener {
-    DropDownListView lvChat;
-    XhsEmoticonsKeyBoard ekBar;
-    public static final String JPG = ".jpg";
-    private static String MsgIDs = "msgIDs";
-
-    private String mTitle;
-    private boolean mLongClick = false;
-
-    private static final String MEMBERS_COUNT = "membersCount";
-    private static final String GROUP_NAME = "groupName";
-
-    public static final String TARGET_ID = "targetId";
-    public static final String TARGET_APP_KEY = "targetAppKey";
-    private static final String DRAFT = "draft";
-    private ArrayList<ImageItem> selImageList; //当前选择的所有图片
-    public static final int REQUEST_CODE_SELECT = 100;
-    private ChatView mChatView;
-    private boolean mIsSingle = true;
-    private Conversation mConv;
-    private String mTargetId;
-    private String mTargetAppKey;
-    private Activity mContext;
-    private ChattingListAdapter mChatAdapter;
-    int maxImgCount = 9;
-    private List<UserInfo> mAtList;
-    private long mGroupId;
-    private static final int REFRESH_LAST_PAGE = 0x1023;
-    private static final int REFRESH_CHAT_TITLE = 0x1024;
-    private static final int REFRESH_GROUP_NAME = 0x1025;
-    private static final int REFRESH_GROUP_NUM = 0x1026;
-    private Dialog mDialog;
-
-    private GroupInfo mGroupInfo;
-    private UserInfo mMyInfo;
-    private static final String GROUP_ID = "groupId";
-    private int mAtMsgId;
-    private int mAtAllMsgId;
-    private int mUnreadMsgCnt;
-    private boolean mShowSoftInput = false;
-    private List<UserInfo> forDel = new ArrayList<>();
-
-    Window mWindow;
-    InputMethodManager mImm;
-    private final UIHandler mUIHandler = new UIHandler(this);
-    private boolean mAtAll = false;
-    private Uri cameraImageUri;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = this;
-
-        setContentView(R.layout.activity_chat);
-        // 沉浸式状态栏
-        ImmersedStatusBarUtils.INSTANCE.setImmersedStatusBar(this);
-        mChatView = (ChatView) findViewById(R.id.chat_view);
-        mChatView.initModule(mDensity, mDensityDpi);
-
-        this.mWindow = getWindow();
-        this.mImm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
-        mChatView.setListeners(this);
-
-        lvChat = (DropDownListView)findViewById(R.id.lv_chat);
-        ekBar = (XhsEmoticonsKeyBoard)findViewById(R.id.ek_bar);
-
-        initData();
-        initView();
-
-    }
-
-    private void initData() {
-        SimpleCommonUtils.initEmoticonsEditText(ekBar.getEtChat());
-        Intent intent = getIntent();
-        mTargetId = intent.getStringExtra(TARGET_ID);
-        mTargetAppKey = intent.getStringExtra(TARGET_APP_KEY);
-        mTitle = intent.getStringExtra(JGApplication.CONV_TITLE);
-        mMyInfo = JMessageClient.getMyInfo();
-        if (!TextUtils.isEmpty(mTargetId)) {
-            //单聊
-            mIsSingle = true;
-            mChatView.setChatTitle(mTitle);
-            mConv = JMessageClient.getSingleConversation(mTargetId, mTargetAppKey);
-            if (mConv == null) {
-                mConv = Conversation.createSingleConversation(mTargetId, mTargetAppKey);
-            }
-            mChatAdapter = new ChattingListAdapter(mContext, mConv, longClickListener);
-        } else {
-            //群聊
-            mIsSingle = false;
-            mGroupId = intent.getLongExtra(GROUP_ID, 0);
-            final boolean fromGroup = intent.getBooleanExtra("fromGroup", false);
-            if (fromGroup) {
-                mChatView.setChatTitle(mTitle, intent.getIntExtra(MEMBERS_COUNT, 0));
-                mConv = JMessageClient.getGroupConversation(mGroupId);
-                mChatAdapter = new ChattingListAdapter(mContext, mConv, longClickListener);//长按聊天内容监听
-            } else {
-                mAtMsgId = intent.getIntExtra("atMsgId", -1);
-                mAtAllMsgId = intent.getIntExtra("atAllMsgId", -1);
-                mConv = JMessageClient.getGroupConversation(mGroupId);
-                if (mConv != null) {
-                    GroupInfo groupInfo = (GroupInfo) mConv.getTargetInfo();
-                    UserInfo userInfo = groupInfo.getGroupMemberInfo(mMyInfo.getUserName(), mMyInfo.getAppKey());
-                    //如果自己在群聊中,聊天标题显示群人数
-                    if (userInfo != null) {
-                        if (!TextUtils.isEmpty(groupInfo.getGroupName())) {
-                            mChatView.setChatTitle(mTitle, groupInfo.getGroupMembers().size());
-                        } else {
-                            mChatView.setChatTitle(mTitle, groupInfo.getGroupMembers().size());
-                        }
-                        mChatView.showRightBtn();
-                    } else {
-                        if (!TextUtils.isEmpty(mTitle)) {
-                            mChatView.setChatTitle(mTitle);
-                        } else {
-                            mChatView.setChatTitle(R.string.group);
-                        }
-                        mChatView.dismissRightBtn();
-                    }
-                } else {
-                    mConv = Conversation.createGroupConversation(mGroupId);
-                }
-                //更新群名
-                JMessageClient.getGroupInfo(mGroupId, new GetGroupInfoCallback(false) {
-                    @Override
-                    public void gotResult(int status, String desc, GroupInfo groupInfo) {
-                        if (status == 0) {
-                            mGroupInfo = groupInfo;
-                            mUIHandler.sendEmptyMessage(REFRESH_CHAT_TITLE);
-                        }
-                    }
-                });
-                if (mAtMsgId != -1) {
-                    mUnreadMsgCnt = mConv.getUnReadMsgCnt();
-                    // 如果 @我 的消息位于屏幕显示的消息之上,显示 有人@我 的按钮
-                    if (mAtMsgId + 8 <= mConv.getLatestMessage().getId()) {
-                        mChatView.showAtMeButton();
-                    }
-                    mChatAdapter = new ChattingListAdapter(mContext, mConv, longClickListener, mAtMsgId);
-                } else {
-                    mChatAdapter = new ChattingListAdapter(mContext, mConv, longClickListener);
-                }
-
-            }
-            //聊天信息标志改变
-            mChatView.setGroupIcon();
-        }
-
-        String draft = intent.getStringExtra(DRAFT);
-        if (draft != null && !TextUtils.isEmpty(draft)) {
-            ekBar.getEtChat().setText(draft);
-        }
-
-        mChatView.setChatListAdapter(mChatAdapter);
-//        mChatAdapter.initMediaPlayer();
-        mChatView.getListView().setOnDropDownListener(new DropDownListView.OnDropDownListener() {
-            @Override
-            public void onDropDown() {
-                mUIHandler.sendEmptyMessageDelayed(REFRESH_LAST_PAGE, 1000);
-            }
-        });
-        mChatView.setToBottom();
-        mChatView.setConversation(mConv);
-
-    }
-
-    private void initView() {
-        initEmoticonsKeyBoardBar();
-        initListView();
-
-        ekBar.getEtChat().addTextChangedListener(new TextWatcher() {
-            private CharSequence temp = "";
-
-            @Override
-            public void afterTextChanged(Editable arg0) {
-                if (temp.length() > 0) {
-                    mLongClick = false;
-                }
-
-                if (mAtList != null && mAtList.size() > 0) {
-                    for (UserInfo info : mAtList) {
-                        String name = info.getDisplayName();
-
-                        if (!arg0.toString().contains("@" + name + " ")) {
-                            forDel.add(info);
-                        }
-                    }
-                    mAtList.removeAll(forDel);
-                }
-
-                if (!arg0.toString().contains("@所有成员 ")) {
-                    mAtAll = false;
-                }
-
-            }
-
-            @Override
-            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int count, int after) {
-                temp = s;
-                if (s.length() > 0 && after >= 1 && s.subSequence(start, start + 1).charAt(0) == '@' && !mLongClick) {
-                    if (null != mConv && mConv.getType() == ConversationType.group) {
-                        ChooseAtMemberActivity.show(ChatActivity.this, ekBar.getEtChat(), mConv.getTargetId());
-                    }
-                }
-            }
-        });
-    }
-
-    private void initEmoticonsKeyBoardBar() {
-        ekBar.setAdapter(SimpleCommonUtils.getCommonAdapter(this, emoticonClickListener));
-        ekBar.addOnFuncKeyBoardListener(this);
-        SimpleAppsGridView gridView = new SimpleAppsGridView(this);
-        ekBar.addFuncView(gridView);
-
-        ekBar.getEtChat().setOnSizeChangedListener(new EmoticonsEditText.OnSizeChangedListener() {
-            @Override
-            public void onSizeChanged(int w, int h, int oldw, int oldh) {
-                scrollToBottom();
-            }
-        });
-        //发送按钮
-        ekBar.getBtnSend().setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                String mcgContent = ekBar.getEtChat().getText().toString();
-                scrollToBottom();
-                if (mcgContent.equals("")) {
-                    return;
-                }
-                Message msg;
-                TextContent content = new TextContent(mcgContent);
-                if (mAtAll) {
-                    msg = mConv.createSendMessageAtAllMember(content, null);
-                    mAtAll = false;
-                } else if (null != mAtList) {
-                    msg = mConv.createSendMessage(content, mAtList, null);
-                } else {
-                    msg = mConv.createSendMessage(content);
-                }
-                //设置需要已读回执
-                MessageSendingOptions options = new MessageSendingOptions();
-                options.setNeedReadReceipt(false);
-                JMessageClient.sendMessage(msg, options);
-                mChatAdapter.addMsgFromReceiptToList(msg);
-                ekBar.getEtChat().setText("");
-                if (mAtList != null) {
-                    mAtList.clear();
-                }
-                if (forDel != null) {
-                    forDel.clear();
-                }
-            }
-        });
-        //切换语音输入
-        ekBar.getVoiceOrText().setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                int i = v.getId();
-                if (i == R.id.btn_voice_or_text) {
-                    ekBar.setVideoText();
-                    ekBar.getBtnVoice().initConv(mConv, mChatAdapter, mChatView);
-                }
-            }
-        });
-
-    }
-
-
-    @Override
-    public void onClick(View v) {
-        int i = v.getId();
-        if (i == R.id.jmui_return_btn) {
-            returnBtn();
-        } else if (i == R.id.jmui_right_btn) {
-            startChatDetailActivity(mTargetId, mTargetAppKey, mGroupId);
-
-        } else if (i == R.id.jmui_at_me_btn) {
-            if (mUnreadMsgCnt < ChattingListAdapter.PAGE_MESSAGE_COUNT) {
-                int position = ChattingListAdapter.PAGE_MESSAGE_COUNT + mAtMsgId - mConv.getLatestMessage().getId();
-                mChatView.setToPosition(position);
-            } else {
-                mChatView.setToPosition(mAtMsgId + mUnreadMsgCnt - mConv.getLatestMessage().getId());
-            }
-
-        } else {
-        }
-    }
-
-    @Override
-    public void onBackPressed() {
-        super.onBackPressed();
-        returnBtn();
-    }
-
-    private void returnBtn() {
-        mConv.resetUnreadCount();
-        dismissSoftInput();
-        JMessageClient.exitConversation();
-        //发送保存为草稿事件到会话列表
-        EventBus.getDefault().post(new Event.Builder().setType(EventType.draft)
-                .setConversation(mConv)
-                .setDraft(ekBar.getEtChat().getText().toString())
-                .build());
-        finish();
-    }
-
-    private void dismissSoftInput() {
-        if (mShowSoftInput) {
-            if (mImm != null) {
-                mImm.hideSoftInputFromWindow(ekBar.getEtChat().getWindowToken(), 0);
-                mShowSoftInput = false;
-            }
-            try {
-                Thread.sleep(200);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    public void startChatDetailActivity(String targetId, String appKey, long groupId) {
-        Log.i("ChatActivity", "stargetId:" + targetId + ", appkey:" + appKey + ", groupid:" + groupId);
-        if (groupId!=0) {
-            Intent intent = new Intent();
-            intent.putExtra(TARGET_ID, targetId);
-            intent.putExtra(TARGET_APP_KEY, appKey);
-            intent.putExtra(GROUP_ID, groupId);
-            intent.setClass(this, ChatDetailActivity.class);
-            startActivityForResult(intent, JGApplication.REQUEST_CODE_CHAT_DETAIL);
-        }else {//个人
-            Intent intent = new Intent(this, PersonActivity.class);
-            intent.putExtra(PersonActivity.Companion.getPERSON_NAME_KEY(), targetId);
-            startActivity(intent);
-        }
-    }
-
-    EmoticonClickListener emoticonClickListener = new EmoticonClickListener() {
-        @Override
-        public void onEmoticonClick(Object o, int actionType, boolean isDelBtn) {
-
-            if (isDelBtn) {
-                SimpleCommonUtils.delClick(ekBar.getEtChat());
-            } else {
-                if (o == null) {
-                    return;
-                }
-                if (actionType == Constants.EMOTICON_CLICK_BIGIMAGE) {
-                    if (o instanceof EmoticonEntity) {
-                        OnSendImage(((EmoticonEntity) o).getIconUri());
-                    }
-                } else {
-                    String content = null;
-//                    Emoji
-//                    EmojiDisplay.
-//                    if (o instanceof EmojiBean) {
-//                        content = ((EmojiBean) o).emoji;
-//                    } else
-                        if (o instanceof EmoticonEntity) {
-                        content = ((EmoticonEntity) o).getContent();
-                    }
-
-                    if (TextUtils.isEmpty(content)) {
-                        return;
-                    }
-                    int index = ekBar.getEtChat().getSelectionStart();
-                    Editable editable = ekBar.getEtChat().getText();
-                    editable.insert(index, content);
-                }
-            }
-        }
-    };
-
-
-    @Override
-    public boolean dispatchKeyEvent(KeyEvent event) {
-        if (EmoticonsKeyboardUtils.isFullScreen(this)) {
-            boolean isConsum = ekBar.dispatchKeyEventInFullScreen(event);
-            return isConsum ? isConsum : super.dispatchKeyEvent(event);
-        }
-        return super.dispatchKeyEvent(event);
-    }
-
-    private void initListView() {
-        lvChat.setAdapter(mChatAdapter);
-        lvChat.setOnScrollListener(new AbsListView.OnScrollListener() {
-            @Override
-            public void onScrollStateChanged(AbsListView view, int scrollState) {
-                switch (scrollState) {
-                    case SCROLL_STATE_FLING:
-                        break;
-                    case SCROLL_STATE_IDLE:
-                        break;
-                    case SCROLL_STATE_TOUCH_SCROLL:
-                        ekBar.reset();
-                        break;
-                }
-            }
-
-            @Override
-            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-            }
-        });
-    }
-
-
-    private void scrollToBottom() {
-        lvChat.requestLayout();
-        lvChat.post(new Runnable() {
-            @Override
-            public void run() {
-                lvChat.setSelection(lvChat.getBottom());
-            }
-        });
-    }
-
-    @Override
-    public void OnFuncPop(int height) {
-        scrollToBottom();
-    }
-
-    @Override
-    public void OnFuncClose() {
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        JMessageClient.exitConversation();
-        ekBar.reset();
-    }
-
-    @Override
-    protected void onResume() {
-        String targetId = getIntent().getStringExtra(TARGET_ID);
-        if (!mIsSingle) {
-            long groupId = getIntent().getLongExtra(GROUP_ID, 0);
-            if (groupId != 0) {
-                JGApplication.isAtMe.put(groupId, false);
-                JGApplication.isAtall.put(groupId, false);
-                JMessageClient.enterGroupConversation(groupId);
-            }
-        } else if (null != targetId) {
-            String appKey = getIntent().getStringExtra(TARGET_APP_KEY);
-            JMessageClient.enterSingleConversation(targetId, appKey);
-        }
-
-        //历史消息中删除后返回到聊天界面刷新界面
-        if (JGApplication.ids != null && JGApplication.ids.size() > 0) {
-            for (Message msg : JGApplication.ids) {
-                mChatAdapter.removeMessage(msg);
-            }
-        }
-        mChatAdapter.notifyDataSetChanged();
-        //发送名片返回聊天界面刷新信息
-        if (SharePreferenceManager.getIsOpen()) {
-            initData();
-            SharePreferenceManager.setIsOpen(false);
-        }
-        super.onResume();
-
-    }
-
-    public void onEvent(MessageEvent event) {
-        final Message message = event.getMessage();
-
-        //若为群聊相关事件,如添加、删除群成员
-        if (message.getContentType() == ContentType.eventNotification) {
-            GroupInfo groupInfo = (GroupInfo) message.getTargetInfo();
-            long groupId = groupInfo.getGroupID();
-            EventNotificationContent.EventNotificationType type = ((EventNotificationContent) message
-                    .getContent()).getEventNotificationType();
-            if (groupId == mGroupId) {
-                switch (type) {
-                    case group_member_added:
-                        //添加群成员事件
-                        List<String> userNames = ((EventNotificationContent) message.getContent()).getUserNames();
-                        //群主把当前用户添加到群聊,则显示聊天详情按钮
-                        refreshGroupNum();
-                        if (userNames.contains(mMyInfo.getNickname()) || userNames.contains(mMyInfo.getUserName())) {
-                            runOnUiThread(new Runnable() {
-                                @Override
-                                public void run() {
-                                    mChatView.showRightBtn();
-                                }
-                            });
-                        }
-
-                        break;
-                    case group_member_removed:
-                        //删除群成员事件
-                        userNames = ((EventNotificationContent) message.getContent()).getUserNames();
-                        //群主删除了当前用户,则隐藏聊天详情按钮
-                        if (userNames.contains(mMyInfo.getNickname()) || userNames.contains(mMyInfo.getUserName())) {
-                            runOnUiThread(new Runnable() {
-                                @Override
-                                public void run() {
-                                    mChatView.dismissRightBtn();
-                                    GroupInfo groupInfo = (GroupInfo) mConv.getTargetInfo();
-                                    if (TextUtils.isEmpty(groupInfo.getGroupName())) {
-                                        mChatView.setChatTitle(R.string.group);
-                                    } else {
-                                        mChatView.setChatTitle(groupInfo.getGroupName());
-                                    }
-                                    mChatView.dismissGroupNum();
-                                }
-                            });
-                        } else {
-                            refreshGroupNum();
-                        }
-
-                        break;
-                    case group_member_exit:
-                        EventNotificationContent content = (EventNotificationContent) message.getContent();
-                        if (content.getUserNames().contains(JMessageClient.getMyInfo().getUserName())) {
-                            mChatAdapter.notifyDataSetChanged();
-                        } else {
-                            refreshGroupNum();
-                        }
-                        break;
-                }
-            }
-        }
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                if (message.getTargetType() == ConversationType.single) {
-                    UserInfo userInfo = (UserInfo) message.getTargetInfo();
-                    String targetId = userInfo.getUserName();
-                    String appKey = userInfo.getAppKey();
-                    if (mIsSingle && targetId.equals(mTargetId) && appKey.equals(mTargetAppKey)) {
-                        Message lastMsg = mChatAdapter.getLastMsg();
-                        if (lastMsg == null || message.getId() != lastMsg.getId()) {
-                            mChatAdapter.addMsgToList(message);
-                        } else {
-                            mChatAdapter.notifyDataSetChanged();
-                        }
-                    }
-                } else {
-                    long groupId = ((GroupInfo) message.getTargetInfo()).getGroupID();
-                    if (groupId == mGroupId) {
-                        Message lastMsg = mChatAdapter.getLastMsg();
-                        if (lastMsg == null || message.getId() != lastMsg.getId()) {
-                            mChatAdapter.addMsgToList(message);
-                        } else {
-                            mChatAdapter.notifyDataSetChanged();
-                        }
-                    }
-                }
-            }
-        });
-    }
-
-    public void onEventMainThread(MessageRetractEvent event) {
-        Message retractedMessage = event.getRetractedMessage();
-        mChatAdapter.delMsgRetract(retractedMessage);
-    }
-
-    /**
-     * 当在聊天界面断网再次连接时收离线事件刷新
-     */
-    public void onEvent(OfflineMessageEvent event) {
-        Conversation conv = event.getConversation();
-        if (conv.getType().equals(ConversationType.single)) {
-            UserInfo userInfo = (UserInfo) conv.getTargetInfo();
-            String targetId = userInfo.getUserName();
-            String appKey = userInfo.getAppKey();
-            if (mIsSingle && targetId.equals(mTargetId) && appKey.equals(mTargetAppKey)) {
-                List<Message> singleOfflineMsgList = event.getOfflineMessageList();
-                if (singleOfflineMsgList != null && singleOfflineMsgList.size() > 0) {
-                    mChatView.setToBottom();
-                    mChatAdapter.addMsgListToList(singleOfflineMsgList);
-                }
-            }
-        } else {
-            long groupId = ((GroupInfo) conv.getTargetInfo()).getGroupID();
-            if (groupId == mGroupId) {
-                List<Message> offlineMessageList = event.getOfflineMessageList();
-                if (offlineMessageList != null && offlineMessageList.size() > 0) {
-                    mChatView.setToBottom();
-                    mChatAdapter.addMsgListToList(offlineMessageList);
-                }
-            }
-        }
-    }
-
-    private void refreshGroupNum() {
-        Conversation conv = JMessageClient.getGroupConversation(mGroupId);
-        GroupInfo groupInfo = (GroupInfo) conv.getTargetInfo();
-        if (!TextUtils.isEmpty(groupInfo.getGroupName())) {
-            android.os.Message handleMessage = mUIHandler.obtainMessage();
-            handleMessage.what = REFRESH_GROUP_NAME;
-            Bundle bundle = new Bundle();
-            bundle.putString(GROUP_NAME, groupInfo.getGroupName());
-            bundle.putInt(MEMBERS_COUNT, groupInfo.getGroupMembers().size());
-            handleMessage.setData(bundle);
-            handleMessage.sendToTarget();
-        } else {
-            android.os.Message handleMessage = mUIHandler.obtainMessage();
-            handleMessage.what = REFRESH_GROUP_NUM;
-            Bundle bundle = new Bundle();
-            bundle.putInt(MEMBERS_COUNT, groupInfo.getGroupMembers().size());
-            handleMessage.setData(bundle);
-            handleMessage.sendToTarget();
-        }
-    }
-
-    private ChattingListAdapter.ContentLongClickListener longClickListener = new ChattingListAdapter.ContentLongClickListener() {
-
-        @Override
-        public void onContentLongClick(final int position, View view) {
-            final Message msg = mChatAdapter.getMessage(position);
-
-            if (msg == null) {
-                return;
-            }
-            //如果是文本消息
-            if ((msg.getContentType() == ContentType.text) && ((TextContent) msg.getContent()).getStringExtra("businessCard") == null) {
-                //接收方
-                if (msg.getDirect() == MessageDirect.receive) {
-                    int[] location = new int[2];
-                    view.getLocationOnScreen(location);
-                    float OldListY = (float) location[1];
-                    float OldListX = (float) location[0];
-                    new TipView.Builder(ChatActivity.this, mChatView, (int) OldListX + view.getWidth() / 2, (int) OldListY + view.getHeight())
-                            .addItem(new TipItem("复制"))
-                            .addItem(new TipItem("转发"))
-                            .addItem(new TipItem("删除"))
-                            .setOnItemClickListener(new TipView.OnItemClickListener() {
-                                @Override
-                                public void onItemClick(String str, final int position) {
-                                    if (position == 0) {
-                                        if (msg.getContentType() == ContentType.text) {
-                                            final String content = ((TextContent) msg.getContent()).getText();
-                                            if (Build.VERSION.SDK_INT > 11) {
-                                                ClipboardManager clipboard = (ClipboardManager) mContext
-                                                        .getSystemService(Context.CLIPBOARD_SERVICE);
-                                                ClipData clip = ClipData.newPlainText("Simple text", content);
-                                                clipboard.setPrimaryClip(clip);
-                                            } else {
-                                                android.text.ClipboardManager clip = (android.text.ClipboardManager) mContext
-                                                        .getSystemService(Context.CLIPBOARD_SERVICE);
-                                                if (clip.hasText()) {
-                                                    clip.getText();
-                                                }
-                                            }
-                                            Toast.makeText(ChatActivity.this, "已复制", Toast.LENGTH_SHORT).show();
-                                        } else {
-                                            Toast.makeText(ChatActivity.this, "只支持复制文字", Toast.LENGTH_SHORT).show();
-                                        }
-                                    } else if (position == 1) {
-                                        Intent intent = new Intent(ChatActivity.this, ForwardMsgActivity.class);
-                                        JGApplication.forwardMsg.clear();
-                                        JGApplication.forwardMsg.add(msg);
-                                        startActivity(intent);
-                                    } else {
-                                        //删除
-                                        mConv.deleteMessage(msg.getId());
-                                        mChatAdapter.removeMessage(msg);
-                                    }
-                                }
-
-                                @Override
-                                public void dismiss() {
-
-                                }
-                            })
-                            .create();
-                    //发送方
-                } else {
-                    int[] location = new int[2];
-                    view.getLocationOnScreen(location);
-                    float OldListY = (float) location[1];
-                    float OldListX = (float) location[0];
-                    new TipView.Builder(ChatActivity.this, mChatView, (int) OldListX + view.getWidth() / 2, (int) OldListY + view.getHeight())
-                            .addItem(new TipItem("复制"))
-                            .addItem(new TipItem("转发"))
-                            .addItem(new TipItem("撤回"))
-                            .addItem(new TipItem("删除"))
-                            .setOnItemClickListener(new TipView.OnItemClickListener() {
-                                @Override
-                                public void onItemClick(String str, final int position) {
-                                    if (position == 0) {
-                                        if (msg.getContentType() == ContentType.text) {
-                                            final String content = ((TextContent) msg.getContent()).getText();
-                                            if (Build.VERSION.SDK_INT > 11) {
-                                                ClipboardManager clipboard = (ClipboardManager) mContext
-                                                        .getSystemService(Context.CLIPBOARD_SERVICE);
-                                                ClipData clip = ClipData.newPlainText("Simple text", content);
-                                                clipboard.setPrimaryClip(clip);
-                                            } else {
-                                                android.text.ClipboardManager clip = (android.text.ClipboardManager) mContext
-                                                        .getSystemService(Context.CLIPBOARD_SERVICE);
-                                                if (clip.hasText()) {
-                                                    clip.getText();
-                                                }
-                                            }
-                                            Toast.makeText(ChatActivity.this, "已复制", Toast.LENGTH_SHORT).show();
-                                        } else {
-                                            Toast.makeText(ChatActivity.this, "只支持复制文字", Toast.LENGTH_SHORT).show();
-                                        }
-                                    } else if (position == 1) {
-                                        //转发
-                                        if (msg.getContentType() == ContentType.text || msg.getContentType() == ContentType.image ||
-                                                (msg.getContentType() == ContentType.file && (msg.getContent()).getStringExtra("video") != null)) {
-                                            Intent intent = new Intent(ChatActivity.this, ForwardMsgActivity.class);
-                                            JGApplication.forwardMsg.clear();
-                                            JGApplication.forwardMsg.add(msg);
-                                            startActivity(intent);
-                                        } else {
-                                            Toast.makeText(ChatActivity.this, "只支持转发文本,图片,小视频", Toast.LENGTH_SHORT).show();
-                                        }
-                                    } else if (position == 2) {
-                                        //撤回
-                                        mConv.retractMessage(msg, new BasicCallback() {
-                                            @Override
-                                            public void gotResult(int i, String s) {
-                                                if (i == 855001) {
-                                                    Toast.makeText(ChatActivity.this, "发送时间过长,不能撤回", Toast.LENGTH_SHORT).show();
-                                                } else if (i == 0) {
-                                                    mChatAdapter.delMsgRetract(msg);
-                                                }
-                                            }
-                                        });
-                                    } else {
-                                        //删除
-                                        mConv.deleteMessage(msg.getId());
-                                        mChatAdapter.removeMessage(msg);
-                                    }
-                                }
-
-                                @Override
-                                public void dismiss() {
-
-                                }
-                            })
-                            .create();
-                }
-                //除了文本消息类型之外的消息类型
-            } else {
-                //接收方
-                if (msg.getDirect() == MessageDirect.receive) {
-                    int[] location = new int[2];
-                    view.getLocationOnScreen(location);
-                    float OldListY = (float) location[1];
-                    float OldListX = (float) location[0];
-                    new TipView.Builder(ChatActivity.this, mChatView, (int) OldListX + view.getWidth() / 2, (int) OldListY + view.getHeight())
-                            .addItem(new TipItem("转发"))
-                            .addItem(new TipItem("删除"))
-                            .setOnItemClickListener(new TipView.OnItemClickListener() {
-                                @Override
-                                public void onItemClick(String str, final int position) {
-                                    if (position == 1) {
-                                        //删除
-                                        mConv.deleteMessage(msg.getId());
-                                        mChatAdapter.removeMessage(msg);
-                                    } else {
-                                        Intent intent = new Intent(ChatActivity.this, ForwardMsgActivity.class);
-                                        JGApplication.forwardMsg.clear();
-                                        JGApplication.forwardMsg.add(msg);
-                                        startActivity(intent);
-                                    }
-                                }
-
-                                @Override
-                                public void dismiss() {
-
-                                }
-                            })
-                            .create();
-                    //发送方
-                } else {
-                    int[] location = new int[2];
-                    view.getLocationOnScreen(location);
-                    float OldListY = (float) location[1];
-                    float OldListX = (float) location[0];
-                    new TipView.Builder(ChatActivity.this, mChatView, (int) OldListX + view.getWidth() / 2, (int) OldListY + view.getHeight())
-                            .addItem(new TipItem("转发"))
-                            .addItem(new TipItem("撤回"))
-                            .addItem(new TipItem("删除"))
-                            .setOnItemClickListener(new TipView.OnItemClickListener() {
-                                @Override
-                                public void onItemClick(String str, final int position) {
-                                    if (position == 1) {
-                                        //撤回
-                                        mConv.retractMessage(msg, new BasicCallback() {
-                                            @Override
-                                            public void gotResult(int i, String s) {
-                                                if (i == 855001) {
-                                                    Toast.makeText(ChatActivity.this, "发送时间过长,不能撤回", Toast.LENGTH_SHORT).show();
-                                                } else if (i == 0) {
-                                                    mChatAdapter.delMsgRetract(msg);
-                                                }
-                                            }
-                                        });
-                                    } else if (position == 0) {
-                                        Intent intent = new Intent(ChatActivity.this, ForwardMsgActivity.class);
-                                        JGApplication.forwardMsg.clear();
-                                        JGApplication.forwardMsg.add(msg);
-                                        startActivity(intent);
-                                    } else {
-                                        //删除
-                                        mConv.deleteMessage(msg.getId());
-                                        mChatAdapter.removeMessage(msg);
-                                    }
-                                }
-
-                                @Override
-                                public void dismiss() {
-
-                                }
-                            })
-                            .create();
-                }
-            }
-        }
-    };
-
-    /**
-     * 消息已读事件
-     */
-    public void onEventMainThread(MessageReceiptStatusChangeEvent event) {
-        List<MessageReceiptStatusChangeEvent.MessageReceiptMeta> messageReceiptMetas = event.getMessageReceiptMetas();
-        for (MessageReceiptStatusChangeEvent.MessageReceiptMeta meta : messageReceiptMetas) {
-            long serverMsgId = meta.getServerMsgId();
-            int unReceiptCnt = meta.getUnReceiptCnt();
-            mChatAdapter.setUpdateReceiptCount(serverMsgId, unReceiptCnt);
-        }
-    }
-
-    private Uri getUriFromFile(File file) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-            String applicationId = getApplicationContext().getPackageName();
-            return FileProvider.getUriForFile(this, applicationId+".fileProvider", file);
-        }else  {
-            return Uri.fromFile(file);
-        }
-    }
-    public void onEventMainThread(ImageEvent event) {
-        switch (event.getFlag()) {
-            case JGApplication.IMAGE_MESSAGE:
-                final int requestCode = RequestCode.PICK_IMAGE;
-                new PermissionRequester(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
-                        .subscribe(new Action1<PermissionResult>() {
-                            @Override
-                            public void call(PermissionResult permissionResult) {
-                                if(permissionResult.getGranted()){
-                                    new PicturePicker().withActivity(ChatActivity.this)
-                                            .requestCode(requestCode)
-                                            .chooseType(PicturePicker.CHOOSE_TYPE_MULTIPLE())
-                                            .start();
-                                }else {
-                                    Toast.makeText(ChatActivity.this, "请在应用管理中打开“读写存储”访问权限!", Toast.LENGTH_LONG).show();
-                                }
-                            }
-                        }, new Action1<Throwable>() {
-                            @Override
-                            public void call(Throwable throwable) {
-                                Toast.makeText(ChatActivity.this, "请在应用管理中打开“读写存储”访问权限!", Toast.LENGTH_LONG).show();
-                            }
-                        });
-                break;
-            case JGApplication.TAKE_PHOTO_MESSAGE:
-                new PermissionRequester(this).request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.RECORD_AUDIO)
-                        .subscribe(new Action1<PermissionResult>() {
-                            @Override
-                            public void call(PermissionResult permissionResult) {
-                                if (permissionResult.getGranted()) {
-                                    Log.i("ChatActivity", "take photo ........................");
-                                    Intent intent  = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
-                                    //return-data false 不是直接返回拍照后的照片Bitmap 因为照片太大会传输失败
-                                    intent.putExtra("return-data", false);
-                                    //改用Uri 传递
-                                    if (cameraImageUri == null) {
-                                        String filePath = StorageUtil.getWritePath(ChatActivity.this, "camera_cache.jpg", StorageType.TYPE_TEMP);
-                                        Log.i("ChatActivity", "take photo filePath."+filePath);
-                                        cameraImageUri = getUriFromFile(new File(filePath));
-                                    }
-                                    Log.i("ChatActivity", "take photo ....111111111..."+cameraImageUri.getPath());
-                                    intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraImageUri);
-                                    intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
-                                    intent.putExtra("noFaceDetection", true);
-                                    startActivityForResult(intent, RequestCode.TAKE_PHOTO);
-                                } else {
-                                    Toast.makeText(ChatActivity.this, "请在应用管理中打开“相机,读写存储,录音”访问权限!", Toast.LENGTH_LONG).show();
-                                }
-                            }
-                        }, new Action1<Throwable>() {
-                            @Override
-                            public void call(Throwable throwable) {
-                                Toast.makeText(ChatActivity.this, "请在应用管理中打开“相机,读写存储,录音”访问权限!", Toast.LENGTH_LONG).show();
-                            }
-                        });
-
-                break;
-            case JGApplication.TAKE_LOCATION:
-
-                new PermissionRequester(this).request(Manifest.permission.ACCESS_FINE_LOCATION)
-                        .subscribe(new Action1<PermissionResult>() {
-                            @Override
-                            public void call(PermissionResult permissionResult) {
-                                if (permissionResult.getGranted()){
-                                    Intent intent = new Intent(mContext, MapPickerActivity.class);
-                                    intent.putExtra(JGApplication.TARGET_ID, mTargetId);
-                                    intent.putExtra(JGApplication.TARGET_APP_KEY, mTargetAppKey);
-                                    intent.putExtra(JGApplication.GROUP_ID, mGroupId);
-                                    intent.putExtra("sendLocation", true);
-                                    startActivityForResult(intent, JGApplication.REQUEST_CODE_SEND_LOCATION);
-                                }else {
-                                    Toast.makeText(ChatActivity.this, "请在应用管理中打开“位置”访问权限!", Toast.LENGTH_LONG).show();
-                                }
-                            }
-                        }, new Action1<Throwable>() {
-                            @Override
-                            public void call(Throwable throwable) {
-                                Toast.makeText(ChatActivity.this, "请在应用管理中打开“位置”访问权限!", Toast.LENGTH_LONG).show();
-                            }
-                        });
-
-
-                break;
-            case JGApplication.FILE_MESSAGE:
-                new PermissionRequester(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
-                        .subscribe(new Action1<PermissionResult>() {
-                            @Override
-                            public void call(PermissionResult permissionResult) {
-                                if (permissionResult.getGranted()){
-                                    Intent intent = new Intent(mContext, SendFileActivity.class);
-                                    intent.putExtra(JGApplication.TARGET_ID, mTargetId);
-                                    intent.putExtra(JGApplication.TARGET_APP_KEY, mTargetAppKey);
-                                    intent.putExtra(JGApplication.GROUP_ID, mGroupId);
-                                    startActivityForResult(intent, JGApplication.REQUEST_CODE_SEND_FILE);
-                                }else {
-                                    Toast.makeText(ChatActivity.this, "请在应用管理中打开“读写存储”访问权限!", Toast.LENGTH_LONG).show();
-                                }
-                            }
-                        }, new Action1<Throwable>() {
-                            @Override
-                            public void call(Throwable throwable) {
-                                Toast.makeText(ChatActivity.this, "请在应用管理中打开“读写存储”访问权限!", Toast.LENGTH_LONG).show();
-                            }
-                        });
-
-                break;
-            case JGApplication.BUSINESS_CARD:
-                Intent intent = new Intent(mContext, FriendListActivity.class);
-                intent.putExtra("isSingle", mIsSingle);
-                intent.putExtra("userId", mTargetId);
-                intent.putExtra("groupId", mGroupId);
-                startActivity(intent);
-                break;
-            case JGApplication.TACK_VIDEO:
-            case JGApplication.TACK_VOICE:
-                ToastUtil.shortToast(mContext, "该功能正在添加中");
-                break;
-            default:
-                break;
-        }
-
-    }
-
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-
-        switch (resultCode) {
-            case JGApplication.RESULT_CODE_AT_MEMBER:
-                if (!mIsSingle) {
-                    GroupInfo groupInfo = (GroupInfo) mConv.getTargetInfo();
-                    String username = data.getStringExtra(JGApplication.TARGET_ID);
-                    String appKey = data.getStringExtra(JGApplication.TARGET_APP_KEY);
-                    UserInfo userInfo = groupInfo.getGroupMemberInfo(username, appKey);
-                    if (null == mAtList) {
-                        mAtList = new ArrayList<UserInfo>();
-                    }
-                    mAtList.add(userInfo);
-                    mLongClick = true;
-                    ekBar.getEtChat().appendMention(data.getStringExtra(JGApplication.NAME));
-                    ekBar.getEtChat().setSelection(ekBar.getEtChat().getText().length());
-                }
-                break;
-            case JGApplication.RESULT_CODE_AT_ALL:
-                mAtAll = data.getBooleanExtra(JGApplication.ATALL, false);
-                mLongClick = true;
-                if (mAtAll) {
-                    ekBar.getEtChat().setText(ekBar.getEtChat().getText().toString() + "所有成员 ");
-                    ekBar.getEtChat().setSelection(ekBar.getEtChat().getText().length());
-                }
-                break;
-            case JGApplication.RESULT_CODE_SEND_LOCATION:
-                //之前是在地图选择那边做的发送逻辑,这里是通过msgID拿到的message放到ui上.但是发现问题,message的status始终是send_going状态
-                //因为那边发送的是自己创建的对象,这里通过id取出来的不是同一个对象.尽管内容都是一样的.所以为了保证发送的对象个ui上拿出来的
-                //对象是同一个,就地图那边传过来数据,在这边进行创建message
-                double latitude = data.getDoubleExtra("latitude", 0);
-                double longitude = data.getDoubleExtra("longitude", 0);
-                int mapview = data.getIntExtra("mapview", 0);
-                String street = data.getStringExtra("street");
-                String path = data.getStringExtra("path");
-                LocationContent locationContent = new LocationContent(latitude,
-                        longitude, mapview, street);
-                locationContent.setStringExtra("path", path);
-                Message message = mConv.createSendMessage(locationContent);
-                MessageSendingOptions options = new MessageSendingOptions();
-                options.setNeedReadReceipt(true);
-                JMessageClient.sendMessage(message, options);
-                mChatAdapter.addMsgFromReceiptToList(message);
-
-                int customMsgId = data.getIntExtra("customMsg", -1);
-                if (-1 != customMsgId) {
-                    Message customMsg = mConv.getMessage(customMsgId);
-                    mChatAdapter.addMsgToList(customMsg);
-                }
-                mChatView.setToBottom();
-                break;
-            case JGApplication.RESULT_CODE_SEND_FILE:
-                int[] intArrayExtra = data.getIntArrayExtra(MsgIDs);
-                for (int msgId : intArrayExtra) {
-                    handleSendMsg(msgId);
-                }
-                break;
-            case JGApplication.RESULT_CODE_CHAT_DETAIL:
-                String title = data.getStringExtra(JGApplication.CONV_TITLE);
-                if (!mIsSingle) {
-                    GroupInfo groupInfo = (GroupInfo) mConv.getTargetInfo();
-                    UserInfo userInfo = groupInfo.getGroupMemberInfo(mMyInfo.getUserName(), mMyInfo.getAppKey());
-                    //如果自己在群聊中,同时显示群人数
-                    if (userInfo != null) {
-                        if (TextUtils.isEmpty(title)) {
-                            mChatView.setChatTitle(IdHelper.getString(mContext, "group"),
-                                    data.getIntExtra(MEMBERS_COUNT, 0));
-                        } else {
-                            mChatView.setChatTitle(title, data.getIntExtra(MEMBERS_COUNT, 0));
-                        }
-                    } else {
-                        if (TextUtils.isEmpty(title)) {
-                            mChatView.setChatTitle(IdHelper.getString(mContext, "group"));
-                        } else {
-                            mChatView.setChatTitle(title);
-                        }
-                        mChatView.dismissGroupNum();
-                    }
-
-                } else mChatView.setChatTitle(title);
-                if (data.getBooleanExtra("deleteMsg", false)) {
-                    mChatAdapter.clearMsgList();
-                }
-                break;
-        }
-
-
-        if (resultCode != Activity.RESULT_OK) {
-            return;
-        }
-        switch (requestCode) {
-            case RequestCode.PICK_IMAGE://4
-                onPickImageActivityResult(data);
-                break;
-            case RequestCode.TAKE_PHOTO:
-                takePhotoResultBack();
-                break;
-            case RequestCode.TAKE_VIDEO:
-                if (data != null) {
-                    String path = data.getStringExtra("video");
-                    try {
-                        FileContent fileContent = new FileContent(new File(path));
-                        fileContent.setStringExtra("video", "mp4");
-                        Message msg = mConv.createSendMessage(fileContent);
-                        handleSendMsg(msg.getId());
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-                break;
-
-        }
-
-    }
-
-    /**
-     * 拍照成功后发送消息
-     */
-    private void takePhotoResultBack() {
-        try {
-            String filePath = StorageUtil.getWritePath(this, "camera_cache.jpg", StorageType.TYPE_TEMP);
-            Log.i("ChatActivity", "take photo path:"+filePath);
-            List<PhotoInfo> photoInfos = new ArrayList<>();
-            PhotoInfo info = new PhotoInfo();
-            info.setAbsolutePath(filePath);
-            photoInfos.add(info);
-            sendImageAfterSelfImagePicker(photoInfos);
-//            InputStream in = getContentResolver().openInputStream(cameraImageUri);
-//            Bitmap bitmap = BitmapFactory.decodeStream(in);
-//            ImageContent.createImageContentAsync(bitmap, new ImageContent.CreateImageContentCallback() {
-//                @Override
-//                public void gotResult(int responseCode, String responseMessage, ImageContent imageContent) {
-//                    if (responseCode == 0) {
-//                        Message msg = mConv.createSendMessage(imageContent);
-//                        handleSendMsg(msg.getId());
-//                    }
-//                }
-//            });
-            Log.i("ChatActivity", "camera take photo success");
-        } catch (Exception e) {
-            e.printStackTrace();
-            Toast.makeText(this, "获取照片异常", Toast.LENGTH_SHORT).show();
-        }
-    }
-
-
-    /**
-     * 图片选取回调
-     */
-    private void onPickImageActivityResult( Intent data) {
-        if (data == null) {
-            return;
-        }
-//        boolean local = data.getBooleanExtra(Extras.EXTRA_FROM_LOCAL, false);
-//        if (local) {
-//            // 本地相册
-//            sendImageAfterSelfImagePicker(data);
-//        }
-        List<String> results= data.getStringArrayListExtra(PicturePicker.FANCY_PICTURE_PICKER_ARRAY_LIST_RESULT_KEY());
-        List<PhotoInfo> photoInfos = new ArrayList<>();
-        if (results!=null && !results.isEmpty()) {
-            for (int i = 0; i < results.size(); i++) {
-                Log.i("ChatActivity", "choose photo ..."+results.get(i));
-                PhotoInfo info = new PhotoInfo();
-                info.setAbsolutePath(results.get(i));
-                photoInfos.add(info);
-            }
-        }
-        sendImageAfterSelfImagePicker(photoInfos);
-    }
-
-    /**
-     * 发送图片
-     */
-
-    private void sendImageAfterSelfImagePicker(List<PhotoInfo> photoInfos) {
-        SendImageHelper.sendImageAfterSelfFancyImagePicker(this, photoInfos, false, new SendImageHelper.Callback() {
-            @Override
-            public void sendImage(final File file, boolean isOrig) {
-                Log.i("ChatActivity", "start sendImage...file:"+file.getAbsolutePath()+ ", isOrig:"+isOrig);
-                //所有图片都在这里拿到
-                ImageContent.createImageContentAsync(file, new ImageContent.CreateImageContentCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, ImageContent imageContent) {
-                        if (responseCode == 0) {
-                            Message msg = mConv.createSendMessage(imageContent);
-                            handleSendMsg(msg.getId());
-                        }
-                    }
-                });
-
-            }
-        });
-    }
-
-    //发送极光熊
-    private void OnSendImage(String iconUri) {
-        String substring = iconUri.substring(7);
-        File file = new File(substring);
-        ImageContent.createImageContentAsync(file, new ImageContent.CreateImageContentCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage, ImageContent imageContent) {
-                if (responseCode == 0) {
-                    imageContent.setStringExtra("jiguang", "xiong");
-                    Message msg = mConv.createSendMessage(imageContent);
-                    handleSendMsg(msg.getId());
-                } else {
-                    ToastUtil.shortToast(mContext, responseMessage);
-                }
-            }
-        });
-    }
-
-    /**
-     * 处理发送图片,刷新界面
-     *
-     * @param data intent
-     */
-    private void handleSendMsg(int data) {
-        mChatAdapter.setSendMsgs(data);
-        mChatView.setToBottom();
-    }
-
-    private static class UIHandler extends Handler {
-        private final WeakReference<ChatActivity> mActivity;
-
-        public UIHandler(ChatActivity activity) {
-            mActivity = new WeakReference<ChatActivity>(activity);
-        }
-
-        @Override
-        public void handleMessage(android.os.Message msg) {
-            super.handleMessage(msg);
-            ChatActivity activity = mActivity.get();
-            if (activity != null) {
-                switch (msg.what) {
-                    case REFRESH_LAST_PAGE:
-                        activity.mChatAdapter.dropDownToRefresh();
-                        activity.mChatView.getListView().onDropDownComplete();
-                        if (activity.mChatAdapter.isHasLastPage()) {
-                            if (Build.VERSION.SDK_INT >= 21) {
-                                activity.mChatView.getListView()
-                                        .setSelectionFromTop(activity.mChatAdapter.getOffset(),
-                                                activity.mChatView.getListView().getHeaderHeight());
-                            } else {
-                                activity.mChatView.getListView().setSelection(activity.mChatAdapter
-                                        .getOffset());
-                            }
-                            activity.mChatAdapter.refreshStartPosition();
-                        } else {
-                            activity.mChatView.getListView().setSelection(0);
-                        }
-                        //显示上一页的消息数18条
-                        activity.mChatView.getListView()
-                                .setOffset(activity.mChatAdapter.getOffset());
-                        break;
-                    case REFRESH_GROUP_NAME:
-                        if (activity.mConv != null) {
-                            int num = msg.getData().getInt(MEMBERS_COUNT);
-                            String groupName = msg.getData().getString(GROUP_NAME);
-                            activity.mChatView.setChatTitle(groupName, num);
-                        }
-                        break;
-                    case REFRESH_GROUP_NUM:
-                        int num = msg.getData().getInt(MEMBERS_COUNT);
-                        activity.mChatView.setChatTitle(R.string.group, num);
-                        break;
-                    case REFRESH_CHAT_TITLE:
-                        if (activity.mGroupInfo != null) {
-                            //检查自己是否在群组中
-                            UserInfo info = activity.mGroupInfo.getGroupMemberInfo(activity.mMyInfo.getUserName(),
-                                    activity.mMyInfo.getAppKey());
-                            if (!TextUtils.isEmpty(activity.mGroupInfo.getGroupName())) {
-                                if (info != null) {
-                                    activity.mChatView.setChatTitle(activity.mTitle,
-                                            activity.mGroupInfo.getGroupMembers().size());
-                                    activity.mChatView.showRightBtn();
-                                } else {
-                                    activity.mChatView.setChatTitle(activity.mTitle);
-                                    activity.mChatView.dismissRightBtn();
-                                }
-                            }
-                        }
-                        break;
-                }
-            }
-        }
-    }
-
-}

+ 0 - 389
o2android/app/src/main/java/jiguang/chat/activity/ChatDetailActivity.java

@@ -1,389 +0,0 @@
-package jiguang.chat.activity;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.WindowManager;
-import android.view.inputmethod.InputMethodManager;
-
-import com.wugang.activityresult.library.ActivityResult;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.organization.ContactPickerActivity;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.RetrofitClient;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.service.OrgAssembleExpressService;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.ApiResponse;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.identity.IdentityLevelForm;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.person.PersonJson;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.unit.UnitJson;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.vo.ContactPickerResult;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.vo.O2PersonPickerResultItem;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.StringUtil;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.content.EventNotificationContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.event.MessageEvent;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.ChatDetailController;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.view.ChatDetailView;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.functions.Action1;
-import rx.functions.Func1;
-import rx.schedulers.Schedulers;
-
-/**
- * Created by ${chenyn} on 2017/4/21.
- */
-
-public class ChatDetailActivity extends BaseActivity {
-
-    private static final String TAG = "ChatDetailActivity";
-
-    private ChatDetailView mChatDetailView;
-    private ChatDetailController mChatDetailController;
-    private UIHandler mUIHandler = new UIHandler(this);
-    public final static String START_FOR_WHICH = "which";
-    private final static int GROUP_NAME_REQUEST_CODE = 1;
-    private final static int MY_NAME_REQUEST_CODE = 2;
-
-    public static final int GROUP_DESC = 70;
-    public static final int FLAGS_GROUP_DESC = 71;
-    public static final String GROUP_DESC_KEY = "group_desc_key";
-
-    public static final int GROUP_NAME = 72;
-    public static final int FLAGS_GROUP_NAME = 73;
-    public static final String GROUP_NAME_KEY = "group_name_key";
-
-    private long groupID;
-
-
-    private Context mContext;
-    private ProgressDialog mDialog;
-    private String mGroupName;
-    private String mGroupDesc;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_chat_detail);
-        mContext = this;
-        mChatDetailView = (ChatDetailView) findViewById(R.id.chat_detail_view);
-        mChatDetailView.initModule();
-        mChatDetailController = new ChatDetailController(mChatDetailView, this, mAvatarSize, mWidth);
-        mChatDetailView.setListeners(mChatDetailController);
-        mChatDetailView.setOnChangeListener(mChatDetailController);
-        mChatDetailView.setItemListener(mChatDetailController);
-    }
-
-
-    @Override
-    public void onBackPressed() {
-        Intent intent = new Intent();
-        intent.putExtra(JGApplication.CONV_TITLE, mChatDetailController.getName());
-        intent.putExtra(JGApplication.MEMBERS_COUNT, mChatDetailController.getCurrentCount());
-        intent.putExtra("deleteMsg", mChatDetailController.getDeleteFlag());
-        setResult(JGApplication.RESULT_CODE_CHAT_DETAIL, intent);
-        finish();
-        super.onBackPressed();
-    }
-
-    private void dismissSoftInput() {
-        //隐藏软键盘
-        InputMethodManager imm = ((InputMethodManager) mContext
-                .getSystemService(Activity.INPUT_METHOD_SERVICE));
-        if (this.getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
-            if (this.getCurrentFocus() != null) {
-                imm.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),
-                        InputMethodManager.HIDE_NOT_ALWAYS);
-            }
-        }
-    }
-
-    @SuppressLint("WrongConstant")
-    public void updateGroupNameDesc(long groupId, int nameOrDesc) {
-        this.groupID = groupId;
-        Intent intent = new Intent(ChatDetailActivity.this, NickSignActivity.class);
-        if (nameOrDesc == 1) {
-            intent.setFlags(FLAGS_GROUP_NAME);
-            intent.putExtra("group_name", mGroupName);
-        } else {
-            intent.setFlags(FLAGS_GROUP_DESC);
-            intent.putExtra("group_desc", mGroupDesc);
-        }
-        startActivityForResult(intent, GROUP_NAME);
-    }
-
-    @Override
-    protected void onActivityResult(final int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            Bundle extras = data.getExtras();
-            mDialog = new ProgressDialog(mContext);
-            mDialog.setMessage("正在修改");
-            switch (resultCode) {
-                case Activity.RESULT_CANCELED:
-
-                    break;
-                case GROUP_NAME://修改群组名
-                    mDialog.show();
-                    final String groupName = extras.getString(GROUP_NAME_KEY);
-                    if (TextUtils.isEmpty(groupName)) {
-                        mDialog.dismiss();
-                        ToastUtil.shortToast(mContext, "输入不能是空");
-                        break;
-                    }
-                    JMessageClient.updateGroupName(groupID, groupName, new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            mDialog.dismiss();
-                            if (responseCode == 0) {
-                                mChatDetailView.updateGroupName(groupName);
-                                mChatDetailController.refreshGroupName(groupName);
-                            } else {
-                                ToastUtil.shortToast(mContext, "输入不合法");
-                            }
-                        }
-                    });
-                    break;
-                case GROUP_DESC://修改群组描述
-                    mDialog.show();
-                    final String groupDesc = extras.getString(GROUP_DESC_KEY);
-                    JMessageClient.updateGroupDescription(groupID, groupDesc, new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            mDialog.dismiss();
-                            if (responseCode == 0) {
-                                mChatDetailView.setGroupDesc(groupDesc);
-                            } else {
-                                ToastUtil.shortToast(mContext, "输入不合法");
-                            }
-                        }
-                    });
-                    break;
-            }
-
-            switch (requestCode) {
-                case GROUP_NAME_REQUEST_CODE:
-                    mChatDetailView.setGroupName(data.getStringExtra("resultName"));
-                    break;
-                case MY_NAME_REQUEST_CODE:
-                    if (data.getBooleanExtra("returnChatActivity", false)) {
-                        data.putExtra("deleteMsg", mChatDetailController.getDeleteFlag());
-                        data.putExtra(JGApplication.NAME, mChatDetailController.getName());
-                        setResult(JGApplication.RESULT_CODE_CHAT_DETAIL, data);
-                        finish();
-                    }
-                    break;
-                case JGApplication.REQUEST_CODE_ALL_MEMBER:
-                    mChatDetailController.refreshMemberList();
-                    break;
-                case 4://修改群头像
-                    String path = data.getStringExtra("groupAvatarPath");
-                    if (path != null) {
-                        mChatDetailView.setGroupAvatar(new File(path));
-                    }
-                    break;
-            }
-
-        }
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        refresh();
-    }
-
-    public void refresh() {
-        mChatDetailController.initData();
-        mChatDetailController.isShowMore();
-        if (mChatDetailController.getAdapter() != null) {
-            mChatDetailController.getAdapter().notifyDataSetChanged();
-            mChatDetailController.getNoDisturb();
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-
-
-    /**
-     * 从ContactsActivity中选择朋友加入到群组中
-     */
-    public void showContacts(Long group) {
-        OrgAssembleExpressService service = RetrofitClient.Companion.instance().assembleExpressApi();
-        RetrofitClient.Companion.instance().assemblePersonalApi().getCurrentPersonInfo()
-                .subscribeOn(Schedulers.io())
-                .flatMap((Func1<ApiResponse<PersonJson>, Observable<ApiResponse<UnitJson>>>) personJsonApiResponse -> {
-                    PersonJson personJson = personJsonApiResponse.getData();
-                    if (personJson!=null && !personJson.getWoIdentityList().isEmpty()) {
-                        String identity = personJson.getWoIdentityList().get(0).getDistinguishedName();
-                        IdentityLevelForm form = new IdentityLevelForm(identity, 1);
-                        return service.unitByIdentityAndLevel(form);
-                    }else  {
-                        return  Observable.just(new ApiResponse<UnitJson>());
-                    }
-                })
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(unitJsonApiResponse -> {
-                        if (unitJsonApiResponse.getData() != null) {
-                            openChooseUser(unitJsonApiResponse.getData().getDistinguishedName());
-                        }else {
-                            openChooseUser(null);
-                        }
-                }, error -> openChooseUser(null));
-
-
-
-    }
-
-    private void openChooseUser(String topOrg) {
-        ArrayList<String> modes = new ArrayList<>();
-        modes.add("personPicker");
-        ArrayList<String> topList = new ArrayList<>();
-        if (!TextUtils.isEmpty(topOrg)) {
-            topList.add(topOrg);
-        }
-        Bundle bundle1 = ContactPickerActivity.Companion.startPickerBundle(modes,
-                topList,
-                "",
-                0,
-                true,
-                new ArrayList<>(),
-                new ArrayList<>(),
-                new ArrayList<>(),
-                new ArrayList<>(),
-                new ArrayList<>());
-        ActivityResult.of(this)
-                .className(ContactPickerActivity.class)
-                .params(bundle1)
-                .greenChannel().forResult((resultCode, data) -> {
-            if (data != null) {
-                ContactPickerResult result = data.getParcelableExtra(ContactPickerActivity.CONTACT_PICKED_RESULT);
-                if (result != null) {
-                    ArrayList<O2PersonPickerResultItem> users = result.getUsers();
-                    if (users.size() != 0) {
-                        ArrayList<String> list = new ArrayList<>();
-                        for (int i = 0; i < users.size(); i++) {
-                            list.add(users.get(i).getId());
-                        }
-                        mChatDetailController.addMembersToGroup(list);
-                    }
-                }
-            }
-        });
-    }
-
-
-    public void startMainActivity() {
-        Intent intent = new Intent(this, net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.main.MainActivity.class);
-        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
-        startActivity(intent);
-    }
-
-    public void startChatActivity(long groupID, String groupName, int member) {
-        Intent intent = new Intent();
-        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-        //设置跳转标志
-        intent.putExtra("fromGroup", true);
-        intent.putExtra(JGApplication.MEMBERS_COUNT, member + 1);
-        intent.putExtra(JGApplication.GROUP_ID, groupID);
-        intent.putExtra(JGApplication.CONV_TITLE, groupName);
-        intent.setClass(this, ChatActivity.class);
-        startActivity(intent);
-        finish();
-    }
-
-    /**
-     * 接收群成员变化事件
-     *
-     * @param event 消息事件
-     */
-    public void onEvent(MessageEvent event) {
-        final cn.jpush.im.android.api.model.Message msg = event.getMessage();
-        if (msg.getContentType() == ContentType.eventNotification) {
-            EventNotificationContent.EventNotificationType msgType = ((EventNotificationContent) msg
-                    .getContent()).getEventNotificationType();
-            switch (msgType) {
-                //添加群成员事件特殊处理
-                case group_member_added:
-                    List<String> userNames = ((EventNotificationContent) msg.getContent()).getUserNames();
-                    for (final String userName : userNames) {
-                        JMessageClient.getUserInfo(userName, new GetUserInfoCallback() {
-                            @Override
-                            public void gotResult(int status, String desc, UserInfo userInfo) {
-                                if (status == 0) {
-                                    mChatDetailController.getAdapter().notifyDataSetChanged();
-                                }
-                            }
-                        });
-                    }
-                    break;
-                case group_member_removed:
-                    break;
-                case group_member_exit:
-                    break;
-            }
-            //无论是否添加群成员,刷新界面
-            android.os.Message handleMsg = mUIHandler.obtainMessage();
-            handleMsg.what = JGApplication.ON_GROUP_EVENT;
-            Bundle bundle = new Bundle();
-            bundle.putLong(JGApplication.GROUP_ID, ((GroupInfo) msg.getTargetInfo()).getGroupID());
-            handleMsg.setData(bundle);
-            handleMsg.sendToTarget();
-        }
-    }
-
-    public void setGroupName(String groupName) {
-        mGroupName = groupName;
-    }
-
-    public void setGroupDesc(String groupDesc) {
-        mGroupDesc = groupDesc;
-    }
-
-    private static class UIHandler extends Handler {
-
-        private WeakReference<ChatDetailActivity> mActivity;
-
-        public UIHandler(ChatDetailActivity activity) {
-            mActivity = new WeakReference<ChatDetailActivity>(activity);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            ChatDetailActivity activity = mActivity.get();
-            if (activity != null) {
-                switch (msg.what) {
-                    case JGApplication.ON_GROUP_EVENT:
-                        activity.mChatDetailController.refresh(msg.getData()
-                                .getLong(JGApplication.GROUP_ID, 0));
-                        break;
-                }
-            }
-        }
-    }
-
-
-}

+ 0 - 166
o2android/app/src/main/java/jiguang/chat/activity/ChooseAtMemberActivity.java

@@ -1,166 +0,0 @@
-package jiguang.chat.activity;
-
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.adapter.AtMemberAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.model.ParentLinkedHolder;
-import jiguang.chat.utils.keyboard.widget.EmoticonsEditText;
-import jiguang.chat.utils.pinyin.UserComparator;
-import jiguang.chat.utils.sidebar.SideBar;
-import jiguang.chat.view.listview.StickyListHeadersListView;
-
-
-/**
- * @ 功能, 选择群组中成员
- */
-
-public class ChooseAtMemberActivity extends BaseActivity {
-
-    private List<UserInfo> mList;
-    private SideBar mSideBar;
-    private TextView mLetterHintTv;
-    private AtMemberAdapter mAdapter;
-    private StickyListHeadersListView mListView;
-    private LinearLayout mLl_groupAll;
-    private LinearLayout mSearch_title;
-    private static ParentLinkedHolder<EmoticonsEditText> textParentLinkedHolder;
-    private List<UserInfo> forDel = new ArrayList<>();
-
-    public static void show(ChatActivity textWatcher, EmoticonsEditText editText, String targetId) {
-        synchronized (ChooseAtMemberActivity.class) {
-            ParentLinkedHolder<EmoticonsEditText> holder = new ParentLinkedHolder<>(editText);
-            textParentLinkedHolder = holder.addParent(textParentLinkedHolder);
-        }
-
-        Intent intent = new Intent(textWatcher, ChooseAtMemberActivity.class);
-        intent.putExtra(JGApplication.GROUP_ID, Long.parseLong(targetId));
-        textWatcher.startActivityForResult(intent, JGApplication
-                .REQUEST_CODE_AT_MEMBER);
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_choose_at_member);
-        mListView = (StickyListHeadersListView) findViewById(R.id.at_member_list_view);
-        mLl_groupAll = (LinearLayout) findViewById(R.id.ll_groupAll);
-        mSearch_title = (LinearLayout) findViewById(R.id.search_title);
-        mSideBar = (SideBar) findViewById(R.id.sidebar);
-        mLetterHintTv = (TextView) findViewById(R.id.letter_hint_tv);
-        mSideBar.setTextView(mLetterHintTv);
-
-        initTitle(true, true, "选择成员", "", false, "");
-
-        long groupId = getIntent().getLongExtra(JGApplication.GROUP_ID, 0);
-        if (0 != groupId) {
-            Conversation conv = JMessageClient.getGroupConversation(groupId);
-            GroupInfo groupInfo = (GroupInfo) conv.getTargetInfo();
-            mList = groupInfo.getGroupMembers();
-            for (UserInfo info : mList) {
-                if (info.getUserName().equals(JMessageClient.getMyInfo().getUserName())) {
-                    forDel.clear();
-                    forDel.add(info);
-                }
-            }
-            mList.removeAll(forDel);
-            Collections.sort(mList, new UserComparator());
-
-            mAdapter = new AtMemberAdapter(this, mList);
-            mListView.setAdapter(mAdapter);
-        }
-
-        mSideBar.setOnTouchingLetterChangedListener(new SideBar.OnTouchingLetterChangedListener() {
-            @Override
-            public void onTouchingLetterChanged(String s) {
-                int position = mAdapter.getSectionForLetter(s);
-                if (position != -1 && position < mAdapter.getCount()) {
-                    mListView.setSelection(position - 1);
-                }
-            }
-        });
-
-        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
-                UserInfo userInfo = mList.get(position);
-                Intent intent = new Intent();
-                String atName = userInfo.getDisplayName();
-
-                synchronized (ChooseAtMemberActivity.class) {
-                    if (textParentLinkedHolder != null) {
-                        EmoticonsEditText editText = textParentLinkedHolder.item;
-                        if (editText != null)
-                            intent.putExtra(JGApplication.NAME, atName);
-                    }
-                }
-
-                intent.putExtra(JGApplication.TARGET_ID, userInfo.getUserName());
-                intent.putExtra(JGApplication.TARGET_APP_KEY, userInfo.getAppKey());
-                setResult(JGApplication.RESULT_CODE_AT_MEMBER, intent);
-                finish();
-            }
-        });
-
-        mLl_groupAll.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                //@all
-                Intent intent = new Intent();
-                intent.putExtra(JGApplication.ATALL, true);
-                setResult(JGApplication.RESULT_CODE_AT_ALL, intent);
-                finish();
-            }
-        });
-
-        mSearch_title.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(ChooseAtMemberActivity.this, SearchAtMemberActivity.class);
-                JGApplication.mSearchAtMember = mList;
-                startActivityForResult(intent, JGApplication.SEARCH_AT_MEMBER_CODE);
-            }
-        });
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == 33 && data != null) {
-            Intent intent = new Intent();
-            intent.putExtra(JGApplication.NAME, data.getStringExtra(JGApplication.SEARCH_AT_MEMBER_NAME));
-            intent.putExtra(JGApplication.TARGET_ID, data.getStringExtra(JGApplication.SEARCH_AT_MEMBER_USERNAME));
-            intent.putExtra(JGApplication.TARGET_APP_KEY, data.getStringExtra(JGApplication.SEARCH_AT_APPKEY));
-            setResult(JGApplication.RESULT_CODE_AT_MEMBER, intent);
-            finish();
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        synchronized (ChooseAtMemberActivity.class) {
-            if (textParentLinkedHolder != null) {
-                textParentLinkedHolder = textParentLinkedHolder.putParent();
-            }
-        }
-    }
-
-
-}

+ 0 - 250
o2android/app/src/main/java/jiguang/chat/activity/CommonScanActivity.java

@@ -1,250 +0,0 @@
-/*
- * Copyright (C) 2008 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package jiguang.chat.activity;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.MediaStore;
-import android.view.SurfaceView;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.google.zxing.Result;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.lang.reflect.Type;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.model.Constant;
-import jiguang.chat.model.InfoModel;
-import jiguang.chat.model.User;
-import jiguang.chat.model.UserModel;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.dialog.LoadDialog;
-
-
-/**
- * 二维码扫描使用
- */
-public final class CommonScanActivity extends Activity implements  View.OnClickListener {
-    SurfaceView scanPreview = null;
-    View scanContainer;
-    View scanCropView;
-    ImageView scanLine;
-//    ScanManager scanManager;
-    TextView iv_light;
-    TextView qrcode_g_gallery;
-    final int PHOTOREQUESTCODE = 1111;
-
-    @BindView(R.id.scan_image)
-    ImageView scan_image;
-    @BindView(R.id.authorize_return)
-    ImageView authorize_return;
-    private int scanMode;//扫描模型(二维码)
-
-    @BindView(R.id.common_title_TV_center)
-    TextView title;
-    @BindView(R.id.scan_hint)
-    TextView scan_hint;
-    @BindView(R.id.tv_scan_result)
-    TextView tv_scan_result;
-
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        Window window = getWindow();
-        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-        setContentView(R.layout.activity_scan_code);
-        ButterKnife.bind(this);
-        scanMode = getIntent().getIntExtra(Constant.REQUEST_SCAN_MODE, Constant.REQUEST_SCAN_MODE_ALL_MODE);
-        initView();
-    }
-
-    void initView() {
-//        switch (scanMode) {
-//            case DecodeThread.QRCODE_MODE:
-//                title.setText(R.string.scan_qrcode_title);
-//                scan_hint.setText(R.string.scan_qrcode_hint);
-//                break;
-//        }
-        scanPreview = (SurfaceView) findViewById(R.id.capture_preview);
-        scanContainer = findViewById(R.id.capture_container);
-        scanCropView = findViewById(R.id.capture_crop_view);
-        scanLine = (ImageView) findViewById(R.id.capture_scan_line);
-        qrcode_g_gallery = (TextView) findViewById(R.id.qrcode_g_gallery);
-        qrcode_g_gallery.setOnClickListener(this);
-        iv_light = (TextView) findViewById(R.id.iv_light);
-        iv_light.setOnClickListener(this);
-        authorize_return.setOnClickListener(this);
-        //构造出扫描管理器
-//        scanManager = new ScanManager(this, scanPreview, scanContainer, scanCropView, scanLine, scanMode, this);
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-//        scanManager.onResume();
-        scan_image.setVisibility(View.GONE);
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-//        scanManager.onPause();
-    }
-
-    /**
-     * 根据扫描二维码的结果查询user
-     */
-    public void scanResult(Result rawResult, Bundle bundle) {
-        //扫描成功后,扫描器不会再连续扫描,如需连续扫描,调用reScan()方法。
-        String jsonUser = rawResult.getText();
-
-        //如果扫的二维码是网址,那么就访问这个网址
-        if (jsonUser.startsWith("http")) {
-            String substring = jsonUser.substring(0, jsonUser.indexOf("/",
-                    jsonUser.indexOf("/", jsonUser.indexOf("/", 0) + 1) + 1) + 1);
-            Uri uri = Uri.parse(substring);
-            try {
-                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
-                startActivity(intent);
-            } catch (Exception e) {
-                Toast.makeText(CommonScanActivity.this, "扫描的二维码不能解析", Toast.LENGTH_SHORT).show();
-            }
-        } else if (jsonUser.startsWith("{\"type")) {
-            //解析根据二维码扫描出的json
-            Gson gson = new Gson();
-            Type userType = new TypeToken<UserModel<User>>() {
-            }.getType();
-
-            try {
-                final UserModel<User> userResult = gson.fromJson(jsonUser, userType);
-
-                final LoadDialog dialog = new LoadDialog(CommonScanActivity.this, false, "正在加载...");
-                dialog.show();
-                JMessageClient.getUserInfo(userResult.user.username, userResult.user.appkey, new GetUserInfoCallback() {
-                    @Override
-                    public void gotResult(int i, String s, UserInfo userInfo) {
-                        dialog.dismiss();
-                        if (i == 0) {
-                            //扫出来的是自己
-                            Intent intent = new Intent();
-                            if (userInfo.getUserName().equals(JMessageClient.getMyInfo().getUserName())) {
-                                intent.setClass(CommonScanActivity.this, PersonalActivity.class);
-                                //扫出来的是好友
-                            } else if (userInfo.isFriend()) {
-                                intent.setClass(CommonScanActivity.this, FriendInfoActivity.class);
-                                intent.putExtra(JGApplication.TARGET_ID, userInfo.getUserName());
-                                intent.putExtra(JGApplication.TARGET_APP_KEY, userInfo.getAppKey());
-                                intent.putExtra("fromContact", true);
-                                //扫出来的非好友
-                            } else {
-                                InfoModel.getInstance().friendInfo = userInfo;
-                                intent.setClass(CommonScanActivity.this, SearchFriendInfoActivity.class);
-                            }
-                            startActivity(intent);
-                            finish();
-                        } else {
-                            HandleResponseCode.onHandle(CommonScanActivity.this, i, false);
-                        }
-                    }
-                });
-            } catch (Exception e) {
-                Toast.makeText(CommonScanActivity.this, "扫描的二维码不能解析", Toast.LENGTH_SHORT).show();
-            }
-            //如果不是jchat的二维码也不是网址就把扫描出的文本显示出来
-        } else {
-            Intent intent = new Intent(CommonScanActivity.this, ScanResultActivity.class);
-            intent.putExtra("result", jsonUser);
-            startActivity(intent);
-        }
-    }
-
-//
-//    @Override
-//    public void scanError(Exception e) {
-//        Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
-//        //相机扫描出错时
-//        if (e.getMessage() != null && e.getMessage().startsWith("相机")) {
-//            scanPreview.setVisibility(View.INVISIBLE);
-//        }
-//    }
-
-    public void showPictures(int requestCode) {
-        Intent intent = new Intent(Intent.ACTION_PICK, null);
-        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
-        startActivityForResult(intent, requestCode);
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        String photo_path;
-        if (resultCode == RESULT_OK) {
-            switch (requestCode) {
-                case PHOTOREQUESTCODE:
-                    String[] proj = {MediaStore.Images.Media.DATA};
-
-                    Cursor cursor = this.getContentResolver().query(data.getData(), proj, null, null, null);
-                    if (cursor == null) {
-//                        scanManager.scanningImage(data.getData().getPath());
-                    } else if (cursor.moveToFirst()) {
-                        int colum_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
-                        photo_path = cursor.getString(colum_index);
-                        if (photo_path == null) {
-//                            photo_path = Utils.getPath(getApplicationContext(), data.getData());
-                        }
-//                        scanManager.scanningImage(photo_path);
-                    }
-            }
-        }
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.iv_light:
-//                scanManager.switchLight();
-                break;
-            case R.id.qrcode_g_gallery:
-                showPictures(PHOTOREQUESTCODE);
-                break;
-            case R.id.authorize_return:
-                finish();
-                break;
-            default:
-                break;
-        }
-    }
-
-}

+ 0 - 265
o2android/app/src/main/java/jiguang/chat/activity/CreateGroupActivity.java

@@ -1,265 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.GridView;
-import android.widget.HorizontalScrollView;
-import android.widget.ImageButton;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.eventbus.EventBus;
-import jiguang.chat.adapter.CreateGroupAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.keyboard.utils.EmoticonsKeyboardUtils;
-import jiguang.chat.utils.sidebar.SideBar;
-import jiguang.chat.view.listview.StickyListHeadersListView;
-
-
-/**
- * Created by ${chenyn} on 2017/5/3.
- */
-
-public class CreateGroupActivity extends BaseActivity implements View.OnClickListener, TextWatcher {
-
-    private ImageButton mCancelBtn;
-    private EditText mSearchEt;
-    private StickyListHeadersListView mListView;
-    private SideBar mSideBar;
-    private TextView mLetterHintTv;
-    private LinearLayout mFinishBtn;
-//    private StickyVOListAdapter mAdapter;
-//    private List<ImFriendEntryVO> mData = new ArrayList<>();
-    private HorizontalScrollView scrollViewSelected;
-    private GridView imageSelectedGridView;
-    private CreateGroupAdapter mGroupAdapter;
-    private Context mContext;
-    private Dialog mLoadingDialog;
-    private TextView mTv_noFriend;
-    private TextView mTv_noFilter;
-
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = this;
-        setContentView(R.layout.activity_create_group);
-        initView();
-        initData();
-    }
-
-    private void initData() {
-
-
-
-
-        mGroupAdapter = new CreateGroupAdapter(CreateGroupActivity.this);
-        imageSelectedGridView.setAdapter(mGroupAdapter);
-//        mAdapter = new StickyVOListAdapter(CreateGroupActivity.this, mData, true, scrollViewSelected, imageSelectedGridView, mGroupAdapter);
-//        mListView.setAdapter(mAdapter);
-
-    }
-
-    private void initView() {
-        mTv_noFriend = (TextView) findViewById(R.id.tv_noFriend);
-        mTv_noFilter = (TextView) findViewById(R.id.tv_noFilter);
-        mCancelBtn = (ImageButton) findViewById(R.id.jmui_cancel_btn);
-        mFinishBtn = (LinearLayout) findViewById(R.id.finish_btn);
-        mSearchEt = (EditText) findViewById(R.id.search_et);
-        mListView = (StickyListHeadersListView) findViewById(R.id.sticky_list_view);
-        mSideBar = (SideBar) findViewById(R.id.sidebar);
-        mLetterHintTv = (TextView) findViewById(R.id.letter_hint_tv);
-        mSideBar.setTextView(mLetterHintTv);
-        scrollViewSelected = (HorizontalScrollView) findViewById(R.id.contact_select_area);
-        imageSelectedGridView = (GridView) findViewById(R.id.contact_select_area_grid);
-
-        mSideBar.setOnTouchingLetterChangedListener(new SideBar.OnTouchingLetterChangedListener() {
-            @Override
-            public void onTouchingLetterChanged(String s) {
-//                int position = mAdapter.getSectionForLetter(s);
-//                if (position != -1 && position < mAdapter.getCount()) {
-//                    mListView.setSelection(position - 1);
-//                }
-            }
-        });
-
-        mSearchEt.addTextChangedListener(this);
-
-        mListView.setDrawingListUnderStickyHeader(true);
-        mListView.setAreHeadersSticky(true);
-        mListView.setStickyHeaderTopOffset(0);
-        mFinishBtn.setOnClickListener(this);
-        mCancelBtn.setOnClickListener(this);
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-//        if (forDelete != null && forDelete.size() > 0) {
-//            for (ImFriendEntryVO e : forDelete) {
-////                realmDataService.deleteFriend(e).subscribeOn(Schedulers.io()).subscribe();
-//            }
-//            mAdapter.notifyDataSetChanged();
-//        }
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.jmui_cancel_btn:
-                EmoticonsKeyboardUtils.closeSoftKeyboard(this);
-                finish();
-                break;
-            case R.id.finish_btn:
-                //拿到所选择的userName
-//                final ArrayList<String> selectedUser = mAdapter.getSelectedUser();
-                mLoadingDialog = DialogCreator.createLoadingDialog(mContext,
-                        mContext.getString(R.string.creating_hint));
-                mLoadingDialog.show();
-//                JMessageClient.createGroup("", "", new CreateGroupCallback() {
-//                    @Override
-//                    public void gotResult(int responseCode, String responseMsg, final long groupId) {
-//                        if (responseCode == 0) {
-//                            if (selectedUser.size() > 0) {
-//                                JMessageClient.addGroupMembers(groupId, selectedUser, new BasicCallback() {
-//                                    @Override
-//                                    public void gotResult(int responseCode, String responseMessage) {
-//                                        mLoadingDialog.dismiss();
-//                                        if (responseCode == 0) {
-//                                            //如果创建群组时添加了人,那么就在size基础上加上自己
-//                                            createGroup(groupId, selectedUser.size() + 1);
-//                                        } else if (responseCode == 810007) {
-//                                            ToastUtil.shortToast(mContext, "不能添加自己");
-//                                        } else {
-//                                            ToastUtil.shortToast(mContext, "添加失败");
-//                                        }
-//                                    }
-//                                });
-//                            } else {
-//                                mLoadingDialog.dismiss();
-//                                //如果创建群组时候没有选择人,那么size就是1
-//                                createGroup(groupId, 1);
-//                            }
-//                        } else {
-//                            mLoadingDialog.dismiss();
-//                            ToastUtil.shortToast(mContext, responseMsg);
-//                        }
-//                    }
-//                });
-                break;
-        }
-    }
-
-    private void createGroup(long groupId, int groupMembersSize) {
-        Conversation groupConversation = JMessageClient.getGroupConversation(groupId);
-        if (groupConversation == null) {
-            groupConversation = Conversation.createGroupConversation(groupId);
-            EventBus.getDefault().post(new Event.Builder()
-                    .setType(EventType.createConversation)
-                    .setConversation(groupConversation)
-                    .build());
-        }
-
-        Intent intent = new Intent();
-        //设置跳转标志
-        intent.putExtra("fromGroup", true);
-        intent.putExtra(JGApplication.CONV_TITLE, groupConversation.getTitle());
-        intent.putExtra(JGApplication.MEMBERS_COUNT, groupMembersSize);
-        intent.putExtra(JGApplication.GROUP_ID, groupId);
-        intent.setClass(mContext, ChatActivity.class);
-        mContext.startActivity(intent);
-        finish();
-    }
-
-
-    @Override
-    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-    }
-
-    @Override
-    public void onTextChanged(CharSequence s, int start, int before, int count) {
-        filterData(s.toString());
-    }
-
-//    List<ImFriendEntryVO> filterDateList;
-
-    private void filterData(final String filterStr) {
-//        filterDateList = new ArrayList<>();
-        if (!TextUtils.isEmpty(filterStr)) {
-//            filterDateList.clear();
-            //遍历好友集合进行匹配
-//            for (ImFriendEntryVO entry : mData) {
-//                String appKey = entry.getAppKey();
-//
-//                String userName = entry.getUsername();
-//                String noteName = entry.getNoteName();
-//                String nickName = entry.getNickName();
-//                if (!userName.equals(filterStr) && userName.contains(filterStr) ||
-//                        !userName.equals(filterStr) && noteName.contains(filterStr) ||
-//                        !userName.equals(filterStr) && nickName.contains(filterStr) &&
-//                                appKey.equals(JMessageClient.getMyInfo().getAppKey())) {
-//                    filterDateList.add(entry);
-//                }
-//            }
-        } else {
-//            if (mFriendEntry != null) {
-//                realmDataService.deleteFriend(mFriendEntry).subscribeOn(Schedulers.io()).subscribe();
-//            }
-//            filterDateList = mData;
-        }
-//        if (filterDateList.size() > 0) {
-//            mTv_noFilter.setVisibility(View.GONE);
-//        }
-        // 根据a-z进行排序
-//        Collections.sort(filterDateList, new PinyinVOComparator());
-//        mAdapter.updateListView(filterDateList, true, filterStr);
-
-        //当搜索的人不是好友时全局搜索
-        //这个不能放在for中的else中,否则for循环了多少次就会添加多少次搜出来的user
-//        final UserEntry user = UserEntry.getUser(JMessageClient.getMyInfo().getUserName(),
-//                JMessageClient.getMyInfo().getAppKey());
-//        final List<ImFriendEntryVO> finalFilterDateList = filterDateList;
-        JMessageClient.getUserInfo(filterStr, new GetUserInfoCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                if (responseCode == 0) {
-                    final UserInfo fInfo = info;
-                     ////////////////////todo
-
-                } else {
-//                    if (filterDateList.size() > 0) {
-//                        mTv_noFilter.setVisibility(View.GONE);
-//                    } else {
-//                        mTv_noFilter.setVisibility(View.VISIBLE);
-//                    }
-                }
-            }
-        });
-
-    }
-
-//    List<ImFriendEntryVO> forDelete = new ArrayList<>();
-
-    @Override
-    public void afterTextChanged(Editable s) {
-
-    }
-}

+ 0 - 154
o2android/app/src/main/java/jiguang/chat/activity/DownLoadActivity.java

@@ -1,154 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Activity;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XLog;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.io.File;
-
-import cn.jpush.im.android.api.callback.DownloadCompletionCallback;
-import cn.jpush.im.android.api.callback.ProgressUpdateCallback;
-import cn.jpush.im.android.api.content.FileContent;
-import cn.jpush.im.android.api.model.Message;
-import jiguang.chat.utils.SharePreferenceManager;
-
-/**
- * Created by ${chenyn} on 2017/5/19.
- */
-
-public class DownLoadActivity extends Activity {
-
-    private Message mMessage;
-    private TextView mFileName;
-    private TextView mProcess;
-    private ProgressBar mProcessBar;
-    private Button mBtnDown;
-    private FileContent mFileContent;
-    private TextView mTv_titleName;
-    private ImageView mIv_back;
-    private int mProcessNum;
-
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_down_load);
-        mFileName = (TextView) findViewById(R.id.file_name);
-        mProcess = (TextView) findViewById(R.id.process_num);
-        mProcessBar = (ProgressBar) findViewById(R.id.processbar);
-        mBtnDown = (Button) findViewById(R.id.btn_down);
-        mTv_titleName = (TextView) findViewById(R.id.tv_titleName);
-        mIv_back = (ImageView) findViewById(R.id.iv_back);
-        mIv_back.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                finish();
-            }
-        });
-
-
-        EventBus.getDefault().register(this);
-    }
-
-    Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(android.os.Message msg) {
-            mProcessBar.setProgress(msg.arg1);
-            mHandler.post(progressBar);
-        }
-    };
-
-    Runnable progressBar = new Runnable() {
-        @Override
-        public void run() {
-            android.os.Message msg = mHandler.obtainMessage();
-            msg.arg1 = mProcessNum;
-
-            mHandler.sendMessage(msg);
-            if (mProcessNum == 100) {
-                mHandler.removeCallbacks(progressBar);
-            }
-        }
-    };
-
-    private String byteToMB(long size) {
-        long kb = 1024;
-        long mb = kb * 1024;
-        long gb = mb * 1024;
-        if (size >= gb) {
-            return String.format("%.1f GB", (float) size / gb);
-        } else if (size >= mb) {
-            float f = (float) size / mb;
-            return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);
-        } else if (size > kb) {
-            float f = (float) size / kb;
-            return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);
-        } else {
-            return String.format("%d B", size);
-        }
-    }
-    private void showUI(){
-        mFileName.setText(mFileContent.getFileName());
-        mTv_titleName.setText(mFileContent.getFileName());
-        long fileSize = mFileContent.getFileSize();
-        mBtnDown.setText("下载(" + byteToMB(fileSize) + ")");
-        mBtnDown.setTextColor(Color.WHITE);
-        mBtnDown.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                mBtnDown.setVisibility(View.GONE);
-                mProcess.setVisibility(View.VISIBLE);
-                mProcessBar.setVisibility(View.VISIBLE);
-                mMessage.setOnContentDownloadProgressCallback(new ProgressUpdateCallback() {
-
-                    @Override
-                    public void onProgressUpdate(double percent) {
-                        mProcessNum = (int) (percent * 100);
-                        mProcess.setText(mProcessNum + "%");
-                        mHandler.post(progressBar);
-                    }
-                });
-
-                mFileContent.downloadFile(mMessage, new DownloadCompletionCallback() {
-                    @Override
-                    public void onComplete(int responseCode, String responseMessage, File file) {
-                        if (responseCode == 0) {
-                            SharePreferenceManager.setIsOpen(true);
-                            finish();
-                        }else {
-                            finish();
-                        }
-                    }
-                });
-            }
-        });
-    }
-
-    @Subscribe(threadMode = ThreadMode.POSTING, sticky = true)
-    public void onStickyEvent(Message message) {
-        mMessage = message;
-        mFileContent = (FileContent) mMessage.getContent();
-        if (mFileContent!=null){
-            try {
-                XLog.info(mFileContent.getFileName());
-                showUI();
-            } catch (Exception e) {
-                XLog.error("", e);
-            }
-        }
-    }
-}

+ 0 - 280
o2android/app/src/main/java/jiguang/chat/activity/FeedbackActivity.java

@@ -1,280 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.api.BasicCallback;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.utils.CommonUtils;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.imagepicker.ImageGridActivity;
-import jiguang.chat.utils.imagepicker.ImagePicker;
-import jiguang.chat.utils.imagepicker.ImagePickerAdapter;
-import jiguang.chat.utils.imagepicker.ImagePreviewDelActivity;
-import jiguang.chat.utils.imagepicker.SelectDialog;
-import jiguang.chat.utils.imagepicker.bean.ImageItem;
-
-/**
- * Created by ${chenyn} on 2017/2/21.
- */
-
-public class FeedbackActivity extends BaseActivity implements View.OnClickListener,
-        ImagePickerAdapter.OnRecyclerViewItemClickListener {
-
-    private static final int MAX_COUNT = 300;
-    private static final String JIGUANG_IM_ACCOUNT = "feedback_Android";
-    private EditText mEd_feedback;
-    private Button mBtn_sure;
-    private TextView mTv_count;
-    public static final int IMAGE_ITEM_ADD = -1;
-    public static final int REQUEST_CODE_SELECT = 100;
-    public static final int REQUEST_CODE_PREVIEW = 101;
-    private ImagePickerAdapter adapter;
-    private ArrayList<ImageItem> selImageList; //当前选择的所有图片
-    private TextView mFeedback_text;
-    int maxImgCount = 4;
-    private Dialog mLoadingDialog;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_feedback);
-
-        initView();
-        initWidget();
-        initListener();
-    }
-
-    private void initView() {
-        initTitle(true, true, "意见反馈", "", false, "");
-        mEd_feedback = (EditText) findViewById(R.id.ed_feedback);
-        mTv_count = (TextView) findViewById(R.id.tv_count);
-        mFeedback_text = (TextView) findViewById(R.id.feedback_text);
-        mBtn_sure = (Button) findViewById(R.id.btn_sure);
-    }
-
-
-    private void initWidget() {
-        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
-        selImageList = new ArrayList<>();
-        JGApplication.maxImgCount = 4;
-        adapter = new ImagePickerAdapter(this, selImageList, maxImgCount);
-        adapter.setOnItemClickListener(this);
-
-        recyclerView.setLayoutManager(new GridLayoutManager(this, 4));
-        recyclerView.setHasFixedSize(true);
-        recyclerView.setAdapter(adapter);
-    }
-
-    private void initListener() {
-        mBtn_sure.setOnClickListener(this);
-        mEd_feedback.addTextChangedListener(new TextChange());
-    }
-
-    private SelectDialog showDialog(SelectDialog.SelectDialogListener listener, List<String> names) {
-        SelectDialog dialog = new SelectDialog(this, R.style
-                .transparentFrameWindowStyle,
-                listener, names);
-        if (!this.isFinishing()) {
-            dialog.show();
-        }
-        return dialog;
-    }
-
-    int i = 0;
-
-    public void sendImage() {
-        if (selImageList != null) {
-            if (i < selImageList.size()) {
-                try {
-                    Message singleImageMessage = JMessageClient.createSingleImageMessage(JIGUANG_IM_ACCOUNT, new File(selImageList.get(i).path));
-                    singleImageMessage.setOnSendCompleteCallback(new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            if (responseCode == 0) {
-                                i++;
-                                sendImage();
-                            } else {
-                                ToastUtil.shortToast(FeedbackActivity.this, responseMessage);
-                            }
-                        }
-                    });
-                    JMessageClient.sendMessage(singleImageMessage);
-                } catch (FileNotFoundException e) {
-                    e.printStackTrace();
-                }
-            } else {
-                cancelDialog();
-            }
-        } else {
-            cancelDialog();
-        }
-    }
-
-    private void cancelDialog() {
-        mLoadingDialog.dismiss();
-        final Dialog dialog = new Dialog(FeedbackActivity.this, R.style.jmui_default_dialog_style);
-        LayoutInflater inflater = LayoutInflater.from(FeedbackActivity.this);
-        View view = inflater.inflate(R.layout.feed_back_dialog, null);
-        dialog.setContentView(view);
-        dialog.show();
-        dialog.setCanceledOnTouchOutside(false);
-        view.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                dialog.dismiss();
-                finish();
-            }
-        });
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.btn_sure:
-                mLoadingDialog = DialogCreator.createLoadingDialog(FeedbackActivity.this,
-                        getString(R.string.creating_msg));
-                mLoadingDialog.show();
-                //发送文字
-                String feedback = mEd_feedback.getText().toString().trim();
-                if (!TextUtils.isEmpty(feedback)) {
-                    Message message = JMessageClient.createSingleTextMessage(JIGUANG_IM_ACCOUNT, feedback);
-                    JMessageClient.sendMessage(message);
-                }
-                //发送图片
-                sendImage();
-                break;
-            default:
-                break;
-        }
-    }
-
-    @Override
-    public void onItemClick(View view, final int position) {
-        switch (position) {
-            case IMAGE_ITEM_ADD:
-                List<String> names = new ArrayList<>();
-                names.add("拍照");
-                names.add("相册");
-                showDialog(new SelectDialog.SelectDialogListener() {
-                    @Override
-                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                        switch (position) {
-                            case 0: // 直接调起相机
-                                //打开选择,本次允许选择的数量
-                                ImagePicker.getInstance().setSelectLimit(maxImgCount - selImageList.size());
-                                Intent intent = new Intent(FeedbackActivity.this, ImageGridActivity.class);
-                                intent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS, true); // 是否是直接打开相机
-                                startActivityForResult(intent, REQUEST_CODE_SELECT);
-                                break;
-                            case 1:
-                                //打开选择,本次允许选择的数量
-                                ImagePicker.getInstance().setSelectLimit(maxImgCount - selImageList.size());
-                                Intent intent1 = new Intent(FeedbackActivity.this, ImageGridActivity.class);
-                                startActivityForResult(intent1, REQUEST_CODE_SELECT);
-                                break;
-                            default:
-                                break;
-                        }
-
-                    }
-                }, names);
-
-                break;
-            default:
-                //打开预览
-                final Intent intentPreview = new Intent(this, ImagePreviewDelActivity.class);
-                intentPreview.putExtra(ImagePicker.EXTRA_IMAGE_ITEMS, (ArrayList<ImageItem>) adapter.getImages());
-                intentPreview.putExtra(ImagePicker.EXTRA_SELECTED_IMAGE_POSITION, position);
-                intentPreview.putExtra(ImagePicker.EXTRA_FROM_ITEMS, true);
-                startActivityForResult(intentPreview, REQUEST_CODE_PREVIEW);
-                break;
-        }
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-
-
-        if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
-            //添加图片返回
-            if (data != null && requestCode == REQUEST_CODE_SELECT) {
-                ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
-                if (images != null) {
-                    selImageList.addAll(images);
-                    adapter.setImages(selImageList);
-                }
-            }
-        } else if (resultCode == ImagePicker.RESULT_CODE_BACK) {
-            //预览图片返回
-            if (data != null && requestCode == REQUEST_CODE_PREVIEW) {
-                ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_IMAGE_ITEMS);
-                if (images != null) {
-                    selImageList.clear();
-                    selImageList.addAll(images);
-                    adapter.setImages(selImageList);
-                }
-            }
-        }
-    }
-
-    private class TextChange implements TextWatcher {
-
-        @Override
-        public void afterTextChanged(Editable arg0) {
-            int num = MAX_COUNT - arg0.length();
-            mTv_count.setText(num + "");
-        }
-
-        @Override
-        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
-                                      int arg3) {
-        }
-
-        @Override
-        public void onTextChanged(CharSequence cs, int start, int before,
-                                  int count) {
-
-        }
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        CommonUtils.hideKeyboard(this);
-    }
-
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        if (selImageList.size() > 0) {
-            mFeedback_text.setVisibility(View.GONE);
-        } else {
-            mFeedback_text.setVisibility(View.VISIBLE);
-        }
-    }
-}

+ 0 - 204
o2android/app/src/main/java/jiguang/chat/activity/FinishRegisterActivity.java

@@ -1,204 +0,0 @@
-package jiguang.chat.activity;
-
-import android.Manifest;
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.v4.content.ContextCompat;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.database.UserEntry;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ThreadUtil;
-import jiguang.chat.utils.photochoose.ChoosePhoto;
-import jiguang.chat.utils.photochoose.PhotoUtils;
-import jiguang.chat.utils.photochoose.SelectableRoundedImageView;
-
-public class FinishRegisterActivity extends BaseActivity {
-    private EditText mNickNameEt;
-    private SelectableRoundedImageView mAvatarIv;
-    private Button mFinishBtn;
-    private Context mContext;
-    private Dialog mSetAvatarDialog;
-    private String mPath;
-    private Uri mUri;
-    private static int OUTPUT_X = 720;
-    private static int OUTPUT_Y = 720;
-    private static final int MAX_COUNT = 30;
-    private ProgressDialog mDialog;
-    private TextView mTv_nickCount;
-    private ChoosePhoto mChoosePhoto;
-    private ImageView mIv_back;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_finish_register);
-        mContext = this;
-
-        initView();
-    }
-
-    private void initView() {
-        mNickNameEt = (EditText) findViewById(R.id.nick_name_et);
-        mAvatarIv = (SelectableRoundedImageView) findViewById(R.id.mine_header);
-        mFinishBtn = (Button) findViewById(R.id.finish_btn);
-        mTv_nickCount = (TextView) findViewById(R.id.tv_nickCount);
-        mIv_back = (ImageView) findViewById(R.id.iv_back);
-
-        mNickNameEt.addTextChangedListener(new TextChange());
-        mAvatarIv.setOnClickListener(listener);
-        mFinishBtn.setOnClickListener(listener);
-        mIv_back.setOnClickListener(listener);
-        SharePreferenceManager.setCachedFixProfileFlag(true);
-        mNickNameEt.requestFocus();
-
-        SharePreferenceManager.setRegisterAvatarPath(null);
-        mChoosePhoto = new ChoosePhoto();
-        mChoosePhoto.setPortraitChangeListener(FinishRegisterActivity.this, mAvatarIv, 1);
-    }
-
-
-    private View.OnClickListener listener = new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-            switch (view.getId()) {
-                case R.id.mine_header:
-                    if ((ContextCompat.checkSelfPermission(FinishRegisterActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) ||
-                            (ContextCompat.checkSelfPermission(FinishRegisterActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
-                        Toast.makeText(FinishRegisterActivity.this, "请在应用管理中打开“读写存储”和“相机”访问权限!", Toast.LENGTH_SHORT).show();
-                    } else {
-                        mChoosePhoto.showPhotoDialog(FinishRegisterActivity.this);
-                    }
-                    break;
-                case R.id.iv_back:
-                    finish();
-                    break;
-                case R.id.finish_btn:
-                    mDialog = new ProgressDialog(FinishRegisterActivity.this);
-                    mDialog.setCancelable(false);
-                    mDialog.show();
-
-                    final String userId = SharePreferenceManager.getRegistrName();
-                    final String password = SharePreferenceManager.getRegistrPass();
-                    SharePreferenceManager.setRegisterUsername(userId);
-                    JMessageClient.login(userId, password, new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            if (responseCode == 0) {
-                                JGApplication.registerOrLogin = 1;
-                                String username = JMessageClient.getMyInfo().getUserName();
-                                String appKey = JMessageClient.getMyInfo().getAppKey();
-                                UserEntry user = UserEntry.getUser(username, appKey);
-                                if (null == user) {
-                                    user = new UserEntry(username, appKey);
-                                    user.save();
-                                }
-
-                                String nickName = mNickNameEt.getText().toString();
-
-                                UserInfo myUserInfo = JMessageClient.getMyInfo();
-                                if (myUserInfo != null) {
-                                    myUserInfo.setNickname(nickName);
-                                }
-                                //注册时候更新昵称
-                                JMessageClient.updateMyInfo(UserInfo.Field.nickname, myUserInfo, new BasicCallback() {
-                                    @Override
-                                    public void gotResult(final int status, String desc) {
-                                        //更新跳转标志
-                                        SharePreferenceManager.setCachedFixProfileFlag(false);
-                                        mDialog.dismiss();
-                                        if (status == 0) {
-                                            goToActivity(FinishRegisterActivity.this, MainActivity.class);
-                                        }
-                                    }
-                                });
-                                //注册时更新头像
-                                final String avatarPath = SharePreferenceManager.getRegisterAvatarPath();
-                                if (avatarPath != null) {
-                                    ThreadUtil.runInThread(new Runnable() {
-                                        @Override
-                                        public void run() {
-                                            JMessageClient.updateUserAvatar(new File(avatarPath), new BasicCallback() {
-                                                @Override
-                                                public void gotResult(int responseCode, String responseMessage) {
-                                                    if (responseCode == 0) {
-                                                        SharePreferenceManager.setCachedAvatarPath(avatarPath);
-                                                    }
-                                                }
-                                            });
-                                        }
-                                    });
-                                } else {
-                                    SharePreferenceManager.setCachedAvatarPath(null);
-                                }
-                            }
-                        }
-                    });
-                    break;
-            }
-        }
-    };
-
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode) {
-            case PhotoUtils.INTENT_CROP:
-            case PhotoUtils.INTENT_TAKE:
-            case PhotoUtils.INTENT_SELECT:
-                mChoosePhoto.photoUtils.onActivityResult(FinishRegisterActivity.this, requestCode, resultCode, data);
-                break;
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-
-    private class TextChange implements TextWatcher {
-
-        @Override
-        public void afterTextChanged(Editable arg0) {
-            int num = MAX_COUNT - arg0.length();
-            mTv_nickCount.setText(num + "");
-        }
-
-        @Override
-        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
-                                      int arg3) {
-
-        }
-
-        @Override
-        public void onTextChanged(CharSequence cs, int start, int before,
-                                  int count) {
-//            if (!TextUtils.isEmpty(mNickNameEt.getText().toString())) {
-//                mFinishBtn.setEnabled(true);
-//            } else {
-//                mFinishBtn.setEnabled(false);
-//            }
-        }
-    }
-}

+ 0 - 165
o2android/app/src/main/java/jiguang/chat/activity/ForwardMsgActivity.java

@@ -1,165 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.TextContent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.options.MessageSendingOptions;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.adapter.ForwardMsgAdapter;
-import jiguang.chat.controller.ActivityController;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-
-
-/**
- * Created by ${chenyn} on 2017/7/16.
- */
-
-public class ForwardMsgActivity extends BaseActivity {
-
-    private LinearLayout mLl_groupAll;
-    private LinearLayout mSearch_title;
-    private ListView mListView;
-    private ForwardMsgAdapter mAdapter;
-    private Dialog mDialog;
-    private List<Conversation> forwardList = new ArrayList<>();
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_forward_msg);
-        ActivityController.addActivity(this);
-
-        initView();
-        initData();
-    }
-
-    private void initView() {
-        if (getIntent().getFlags() == 1) {
-            initTitle(true, true, "发送名片", "", false, "");
-        } else {
-            initTitle(true, true, "转发", "", false, "");
-        }
-
-        mListView = (ListView) findViewById(R.id.forward_business_list);
-        mLl_groupAll = (LinearLayout) findViewById(R.id.ll_groupAll);
-        mSearch_title = (LinearLayout) findViewById(R.id.search_title);
-    }
-
-    private void initData() {
-        List<Conversation> conversationList = JMessageClient.getConversationList();
-        for (Conversation conv : conversationList) {
-            if (!conv.getTargetId().equals("feedback_Android")) {
-                forwardList.add(conv);
-            }
-        }
-        mAdapter = new ForwardMsgAdapter(this, forwardList);
-        mListView.setAdapter(mAdapter);
-
-        //搜索栏
-        mSearch_title.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(ForwardMsgActivity.this, SearchContactsActivity.class);
-                setExtraIntent(intent);
-            }
-        });
-
-        //群组
-        mLl_groupAll.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(ForwardMsgActivity.this, GroupActivity.class);
-                setExtraIntent(intent);
-            }
-        });
-
-        //最近联系人
-        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                final Object itemAtPosition = parent.getItemAtPosition(position);
-                //发送名片
-                final Intent intent = getIntent();
-                final Conversation conversation = (Conversation) itemAtPosition;
-                if (intent.getFlags() == 1) {
-                    String toName = conversation.getTitle();
-                    setBusinessCard(toName, intent, conversation);
-                    //转发消息
-                } else {
-                    DialogCreator.createForwardMsg(ForwardMsgActivity.this, mWidth, true, conversation, null, null, null);
-                }
-            }
-        });
-    }
-
-    private void setExtraIntent(Intent intent) {
-        //发送名片,ForwardMsgActivity跳转过来
-        if (getIntent().getFlags() == 1) {
-            intent.setFlags(2);
-            intent.putExtra("userName", getIntent().getStringExtra("userName"));
-            intent.putExtra("appKey", getIntent().getStringExtra("appKey"));
-            intent.putExtra("avatar", getIntent().getStringExtra("avatar"));
-        } else {
-            //转发消息,启动群组界面,设置flag标识为1
-            intent.setFlags(1);
-        }
-        startActivity(intent);
-    }
-
-    private void setBusinessCard(String name, final Intent intent, final Conversation conversation) {
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                switch (v.getId()) {
-                    case R.id.btn_cancel:
-                        mDialog.dismiss();
-                        break;
-                    case R.id.btn_sure:
-                        mDialog.dismiss();
-                        //把名片的userName和appKey通过extra发送给对方
-                        TextContent content = new TextContent("推荐了一张名片");
-                        content.setStringExtra("userName", intent.getStringExtra("userName"));
-                        content.setStringExtra("appKey", intent.getStringExtra("appKey"));
-                        content.setStringExtra("businessCard", "businessCard");
-
-                        Message textMessage = conversation.createSendMessage(content);
-                        MessageSendingOptions options = new MessageSendingOptions();
-                        options.setNeedReadReceipt(false);
-                        JMessageClient.sendMessage(textMessage, options);
-                        textMessage.setOnSendCompleteCallback(new BasicCallback() {
-                            @Override
-                            public void gotResult(int i, String s) {
-                                if (i == 0) {
-                                    Toast.makeText(ForwardMsgActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
-                                } else {
-                                    HandleResponseCode.onHandle(ForwardMsgActivity.this, i, false);
-                                }
-                            }
-                        });
-                        break;
-                }
-            }
-        };
-        mDialog = DialogCreator.createBusinessCardDialog(ForwardMsgActivity.this, listener, name,
-                intent.getStringExtra("userName"), intent.getStringExtra("avatar"));
-        mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-        mDialog.show();
-    }
-}

+ 0 - 250
o2android/app/src/main/java/jiguang/chat/activity/FriendInfoActivity.java

@@ -1,250 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.text.TextUtils;
-
-import com.activeandroid.query.Update;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.eventbus.EventBus;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.FriendInfoController;
-import jiguang.chat.database.FriendEntry;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.NativeImageLoader;
-import jiguang.chat.view.FriendInfoView;
-
-/**
- * Created by ${chenyn} on 2017/3/22.
- */
-
-public class FriendInfoActivity extends BaseActivity {
-
-    private String mTargetId;
-    private String mTargetAppKey;
-    private boolean mIsFromContact;
-
-    private FriendInfoView mFriendInfoView;
-    private UserInfo mUserInfo;
-    private FriendInfoController mFriendInfoController;
-    private long mGroupId;
-    private String mTitle;
-    private boolean mIsGetAvatar = false;
-    private boolean mIsAddFriend = false;
-    private boolean mIsFromSearch = false;
-    private boolean mFromGroup = false;
-    private String mUserID;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_friend_info);
-        mFriendInfoView = (FriendInfoView) findViewById(R.id.friend_info_view);
-        mTargetId = getIntent().getStringExtra(JGApplication.TARGET_ID);
-        mTargetAppKey = getIntent().getStringExtra(JGApplication.TARGET_APP_KEY);
-        mUserID = getIntent().getStringExtra("targetId");
-        if (mTargetAppKey == null) {
-            mTargetAppKey = JMessageClient.getMyInfo().getAppKey();
-        }
-        mFriendInfoView.initModel(this);
-        mFriendInfoController = new FriendInfoController(mFriendInfoView, this);
-        mFriendInfoView.setListeners(mFriendInfoController);
-        mFriendInfoView.setOnChangeListener(mFriendInfoController);
-        mIsFromContact = getIntent().getBooleanExtra("fromContact", false);
-        mIsFromSearch = getIntent().getBooleanExtra("fromSearch", false);
-        mIsAddFriend = getIntent().getBooleanExtra("addFriend", false);
-        mFromGroup = getIntent().getBooleanExtra("group_grid", false);
-
-        //从通讯录中点击过来
-        if (mIsFromContact || mIsFromSearch || mFromGroup || mIsAddFriend) {
-            updateUserInfo();
-        } else {
-            mGroupId = getIntent().getLongExtra(JGApplication.GROUP_ID, 0);
-            Conversation conv;
-            if (mGroupId == 0) {
-                conv = JMessageClient.getSingleConversation(mTargetId, mTargetAppKey);
-                mUserInfo = (UserInfo) conv.getTargetInfo();
-            } else {
-                conv = JMessageClient.getGroupConversation(mGroupId);
-                GroupInfo groupInfo = (GroupInfo) conv.getTargetInfo();
-                mUserInfo = groupInfo.getGroupMemberInfo(mTargetId, mTargetAppKey);
-            }
-
-            //先从Conversation里获得UserInfo展示出来
-            mFriendInfoView.initInfo(mUserInfo);
-            updateUserInfo();
-        }
-
-    }
-
-    private void updateUserInfo() {
-        final Dialog dialog = DialogCreator.createLoadingDialog(FriendInfoActivity.this,
-                FriendInfoActivity.this.getString(R.string.jmui_loading));
-        dialog.show();
-        if (TextUtils.isEmpty(mTargetId) && !TextUtils.isEmpty(mUserID)) {
-            mTargetId = mUserID;
-        }
-        JMessageClient.getUserInfo(mTargetId, mTargetAppKey, new GetUserInfoCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                dialog.dismiss();
-                if (responseCode == 0) {
-                    //拉取好友信息时候要更新数据库中的nickName.因为如果对方修改了nickName我们是无法感知的.如果不在拉取信息
-                    //时候更新数据库的话会影响到搜索好友的nickName, 注意要在没有备注名并且有昵称时候去更新.因为备注名优先级更高
-                    new Update(FriendEntry.class).set("DisplayName=?", info.getDisplayName()).where("Username=?", mTargetId).execute();
-                    new Update(FriendEntry.class).set("NickName=?", info.getNickname()).where("Username=?", mTargetId).execute();
-                    new Update(FriendEntry.class).set("NoteName=?", info.getNotename()).where("Username=?", mTargetId).execute();
-
-                    if (info.getAvatarFile() != null) {
-                        new Update(FriendEntry.class).set("Avatar=?", info.getAvatarFile().getAbsolutePath()).where("Username=?", mTargetId).execute();
-                    }
-                    mUserInfo = info;
-                    mFriendInfoController.setFriendInfo(info);
-                    mTitle = info.getNotename();
-                    if (TextUtils.isEmpty(mTitle)) {
-                        mTitle = info.getNickname();
-                    }
-                    mFriendInfoView.initInfo(info);
-                } else {
-                    HandleResponseCode.onHandle(FriendInfoActivity.this, responseCode, false);
-                }
-            }
-        });
-    }
-
-
-    public void startChatActivity() {
-        if (mIsFromContact || mIsAddFriend || mIsFromSearch || mFromGroup) {
-            Intent intent = new Intent(this, ChatActivity.class);
-            String title = mUserInfo.getNotename();
-            if (TextUtils.isEmpty(title)) {
-                title = mUserInfo.getNickname();
-                if (TextUtils.isEmpty(title)) {
-                    title = mUserInfo.getUserName();
-                }
-            }
-            intent.putExtra(JGApplication.CONV_TITLE, title);
-            intent.putExtra(JGApplication.TARGET_ID, mUserInfo.getUserName());
-            intent.putExtra(JGApplication.TARGET_APP_KEY, mUserInfo.getAppKey());
-            startActivity(intent);
-        } else {
-            if (mGroupId != 0) {
-                Intent intent = new Intent();
-                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-                intent.putExtra(JGApplication.TARGET_ID, mTargetId);
-                intent.putExtra(JGApplication.TARGET_APP_KEY, mTargetAppKey);
-                intent.setClass(this, ChatActivity.class);
-                startActivity(intent);
-            } else {
-                Intent intent = new Intent();
-                intent.putExtra("returnChatActivity", true);
-                intent.putExtra(JGApplication.CONV_TITLE, mTitle);
-                setResult(JGApplication.RESULT_CODE_FRIEND_INFO, intent);
-            }
-        }
-        Conversation conv = JMessageClient.getSingleConversation(mTargetId, mTargetAppKey);
-        //如果会话为空,使用EventBus通知会话列表添加新会话
-        if (conv == null) {
-            conv = Conversation.createSingleConversation(mTargetId, mTargetAppKey);
-            EventBus.getDefault().post(new Event.Builder()
-                    .setType(EventType.createConversation)
-                    .setConversation(conv)
-                    .build());
-        }
-        finish();
-
-    }
-
-    public UserInfo getUserInfo() {
-        return mUserInfo;
-    }
-
-    public String getUserName() {
-        return mUserInfo.getUserName();
-    }
-
-    public String getTargetAppKey() {
-        return mTargetAppKey;
-    }
-
-    //点击头像预览大图
-    public void startBrowserAvatar() {
-        if (mUserInfo != null && !TextUtils.isEmpty(mUserInfo.getAvatar())) {
-            if (mIsGetAvatar) {
-                //如果缓存了图片,直接加载
-                Bitmap bitmap = NativeImageLoader.getInstance().getBitmapFromMemCache(mUserInfo.getUserName());
-                if (bitmap != null) {
-                    Intent intent = new Intent();
-                    intent.putExtra("browserAvatar", true);
-                    intent.putExtra("avatarPath", mUserInfo.getAvatarFile().getAbsolutePath());
-                    intent.setClass(this, BrowserViewPagerActivity.class);
-                    startActivity(intent);
-                }
-            } else {
-                final Dialog dialog = DialogCreator.createLoadingDialog(this, this.getString(R.string.jmui_loading));
-                dialog.show();
-                mUserInfo.getBigAvatarBitmap(new GetAvatarBitmapCallback() {
-                    @Override
-                    public void gotResult(int status, String desc, Bitmap bitmap) {
-                        if (status == 0) {
-                            mIsGetAvatar = true;
-                            //缓存头像
-                            NativeImageLoader.getInstance().updateBitmapFromCache(mUserInfo.getUserName(), bitmap);
-                            Intent intent = new Intent();
-                            intent.putExtra("browserAvatar", true);
-                            intent.putExtra("avatarPath", mUserInfo.getUserName());
-                            intent.setClass(FriendInfoActivity.this, BrowserViewPagerActivity.class);
-                            startActivity(intent);
-                        }
-                        dialog.dismiss();
-                    }
-                });
-            }
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (resultCode == RESULT_CANCELED) {
-            return;
-        }
-        if (resultCode == JGApplication.RESULT_CODE_EDIT_NOTENAME) {
-            mTitle = data.getStringExtra(JGApplication.NOTENAME);
-            FriendEntry friend = FriendEntry.getFriend(JGApplication.getUserEntry(), mTargetId, mTargetAppKey);
-            if (null != friend) {
-                friend.displayName = mTitle;
-                friend.save();
-            }
-        }
-    }
-
-    //将获得的最新的昵称返回到聊天界面
-    @Override
-    public void onBackPressed() {
-        Intent intent = new Intent();
-        intent.putExtra(JGApplication.CONV_TITLE, mTitle);
-        setResult(JGApplication.RESULT_CODE_FRIEND_INFO, intent);
-        finish();
-        super.onBackPressed();
-    }
-
-    public int getWidth() {
-        return mWidth;
-    }
-
-}

+ 0 - 150
o2android/app/src/main/java/jiguang/chat/activity/FriendListActivity.java

@@ -1,150 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.Collections;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.TextContent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.options.MessageSendingOptions;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.adapter.FriendListAdapter;
-import jiguang.chat.database.FriendEntry;
-import jiguang.chat.database.UserEntry;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.pinyin.PinyinComparator;
-import jiguang.chat.utils.sidebar.SideBar;
-import jiguang.chat.view.listview.StickyListHeadersListView;
-
-/**
- * Created by ${chenyn} on 2017/9/21.
- */
-
-public class FriendListActivity extends BaseActivity {
-
-    private TextView mTv_cancel;
-    private StickyListHeadersListView mFriend_listView;
-    private LinearLayout mSearchTitle;
-    private SideBar mSidebar;
-    private Context mContext;
-    private List<FriendEntry> mList;
-    private FriendListAdapter mAdapter;
-    private Dialog mDialog;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = this;
-        setContentView(R.layout.activity_friend_list);
-        initView();
-        initData();
-    }
-
-    private void initView() {
-//        View inflate = LayoutInflater.from(this).inflate(R.layout.conversation_head_view, null);
-        mFriend_listView = (StickyListHeadersListView) findViewById(R.id.friend_listView);
-        mTv_cancel = (TextView) findViewById(R.id.tv_cancel);
-//        mSearchTitle = (LinearLayout) inflate.findViewById(R.id.search_title);
-        mSidebar = (SideBar) findViewById(R.id.sidebar);
-
-//        mFriend_listView.addHeaderView(mSearchTitle);
-    }
-
-    private void initData() {
-
-        final UserEntry user = UserEntry.getUser(JMessageClient.getMyInfo().getUserName(),
-                JMessageClient.getMyInfo().getAppKey());
-        mList = user.getFriends();
-        Collections.sort(mList, new PinyinComparator());
-        mAdapter = new FriendListAdapter(mContext, mList);
-        mFriend_listView.setAdapter(mAdapter);
-
-        mTv_cancel.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                finish();
-            }
-        });
-
-        mFriend_listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                Object itemAtPosition = parent.getItemAtPosition(position);
-                FriendEntry friendEntry = (FriendEntry) itemAtPosition;
-                if (getIntent().getBooleanExtra("isSingle", false)) {
-                    setBusinessCard(friendEntry, JMessageClient.getSingleConversation(getIntent().getStringExtra("userId")));
-                } else {
-                    setBusinessCard(friendEntry, JMessageClient.getGroupConversation(getIntent().getLongExtra("groupId", 0)));
-                }
-            }
-        });
-
-//        mSearchTitle.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                Intent intent = new Intent(FriendListActivity.this, SearchFriendBusinessActivity.class);
-//                intent.putExtra("isSingle", getIntent().getBooleanExtra("isSingle", false));
-//                intent.putExtra("userId", getIntent().getStringExtra("userId"));
-//                intent.putExtra("groupId", getIntent().getLongExtra("groupId", 0));
-//                startActivity(intent);
-//            }
-//        });
-    }
-
-    private void setBusinessCard(final FriendEntry entry, final Conversation conversation) {
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                switch (v.getId()) {
-                    case R.id.btn_cancel:
-                        mDialog.dismiss();
-                        break;
-                    case R.id.btn_sure:
-                        mDialog.dismiss();
-                        //把名片的userName和appKey通过extra发送给对方
-                        TextContent content = new TextContent("推荐了一张名片");
-                        content.setStringExtra("userName", entry.username);
-                        content.setStringExtra("appKey", entry.appKey);
-                        content.setStringExtra("businessCard", "businessCard");
-
-                        Message textMessage = conversation.createSendMessage(content);
-                        MessageSendingOptions options = new MessageSendingOptions();
-                        options.setNeedReadReceipt(false);
-                        JMessageClient.sendMessage(textMessage, options);
-                        textMessage.setOnSendCompleteCallback(new BasicCallback() {
-                            @Override
-                            public void gotResult(int i, String s) {
-                                if (i == 0) {
-                                    SharePreferenceManager.setIsOpen(true);
-                                    Toast.makeText(FriendListActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
-                                    finish();
-                                } else {
-                                    HandleResponseCode.onHandle(FriendListActivity.this, i, false);
-                                }
-                            }
-                        });
-                        break;
-                }
-            }
-        };
-        mDialog = DialogCreator.createBusinessCardDialog(FriendListActivity.this, listener, conversation.getTitle(),
-                entry.username, entry.avatar);
-        mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-        mDialog.show();
-    }
-}

+ 0 - 78
o2android/app/src/main/java/jiguang/chat/activity/FriendRecommendActivity.java

@@ -1,78 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.widget.ListView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.List;
-
-import jiguang.chat.adapter.FriendRecommendAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.database.FriendRecommendEntry;
-import jiguang.chat.database.UserEntry;
-import jiguang.chat.entity.FriendInvitation;
-
-/**
- * Created by ${chenyn} on 2017/3/17.
- *
- * 通讯录界面.验证消息
- */
-
-public class FriendRecommendActivity extends BaseActivity {
-
-    private ListView mListView;
-    private FriendRecommendAdapter mAdapter;
-    private List<FriendRecommendEntry> mList;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_friend_recommend);
-
-        initView();
-
-        UserEntry user = JGApplication.getUserEntry();
-        if (null != user) {
-            mList = user.getRecommends();
-            mAdapter = new FriendRecommendAdapter(this, mList, mDensity, mWidth);
-            mListView.setAdapter(mAdapter);
-        } else {
-            Log.e("FriendRecommendActivity", "Unexpected error: User table null");
-        }
-    }
-
-    private void initView() {
-        initTitle(true, true, "新的朋友", "", false, "");
-        mListView = (ListView) findViewById(R.id.friend_recommend_list_view);
-
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        switch (resultCode) {
-            case JGApplication.RESULT_BUTTON:
-                int position = data.getIntExtra("position", -1);
-                int btnState = data.getIntExtra("btn_state", -1);
-                FriendRecommendEntry entry = mList.get(position);
-                if (btnState == 2) {
-                    entry.state = FriendInvitation.ACCEPTED.getValue();
-                    entry.save();
-                }else if (btnState == 1) {
-                    entry.state = FriendInvitation.REFUSED.getValue();
-                    entry.save();
-                }
-                break;
-            default:
-                break;
-        }
-    }
-
-    protected void onResume() {
-        super.onResume();
-        mAdapter.notifyDataSetChanged();
-    }
-}

+ 0 - 234
o2android/app/src/main/java/jiguang/chat/activity/FriendSettingActivity.java

@@ -1,234 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.eventbus.EventBus;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.database.FriendEntry;
-import jiguang.chat.database.FriendRecommendEntry;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.dialog.LoadDialog;
-import jiguang.chat.view.SlipButton;
-
-/**
- * Created by ${chenyn} on 2017/5/7.
- */
-
-public class FriendSettingActivity extends BaseActivity implements SlipButton.OnChangedListener, View.OnClickListener {
-
-    private RelativeLayout mSetNoteName;
-    private SlipButton mBtn_addBlackList;
-    private Button mBtn_deleteFriend;
-    private TextView mTv_noteName;
-    private Dialog mDialog;
-    private UserInfo mFriendInfo;
-    private RelativeLayout mRl_business;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_friend_setting);
-        initView();
-        initData();
-
-    }
-
-    private void initData() {
-        //设置黑名单
-        mBtn_addBlackList.setOnChangedListener(R.id.btn_addBlackList, this);
-        mBtn_deleteFriend.setOnClickListener(this);
-        mSetNoteName.setOnClickListener(this);
-        mRl_business.setOnClickListener(this);
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.setNoteName:
-                Intent intent = new Intent(FriendSettingActivity.this, SetNoteNameActivity.class);
-                intent.putExtra("user", getIntent().getStringExtra("userName"));
-                intent.putExtra("note", getIntent().getStringExtra("noteName"));
-                startActivityForResult(intent, 1);
-                break;
-            case R.id.btn_deleteFriend:
-                View.OnClickListener listener = new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        switch (v.getId()) {
-                            case R.id.jmui_cancel_btn:
-                                mDialog.dismiss();
-                                break;
-                            case R.id.jmui_commit_btn:
-                                final Dialog dialog = DialogCreator.createLoadingDialog(FriendSettingActivity.this, getString(R.string.processing));
-                                dialog.show();
-                                mFriendInfo.removeFromFriendList(new BasicCallback() {
-                                    @Override
-                                    public void gotResult(int responseCode, String responseMessage) {
-                                        dialog.dismiss();
-                                        if (responseCode == 0) {
-                                            //将好友删除时候还原黑名单设置
-                                            List<String> name = new ArrayList<>();
-                                            name.add(mFriendInfo.getUserName());
-                                            JMessageClient.delUsersFromBlacklist(name, null);
-
-                                            FriendEntry friend = FriendEntry.getFriend(JGApplication.getUserEntry(),
-                                                    mFriendInfo.getUserName(), mFriendInfo.getAppKey());
-                                            if (friend != null) {
-                                                friend.delete();
-                                            }
-                                            FriendRecommendEntry entry = FriendRecommendEntry
-                                                    .getEntry(JGApplication.getUserEntry(),
-                                                            mFriendInfo.getUserName(), mFriendInfo.getAppKey());
-                                            if (entry != null) {
-                                                entry.delete();
-                                            }
-                                            ToastUtil.shortToast(FriendSettingActivity.this, "移除好友");
-                                            mDialog.dismiss();
-                                            delConvAndReturnMainActivity();
-                                        } else {
-                                            mDialog.dismiss();
-                                            ToastUtil.shortToast(FriendSettingActivity.this, "移除失败");
-                                        }
-                                    }
-                                });
-                                break;
-                        }
-                    }
-                };
-                mDialog = DialogCreator.createBaseDialogWithTitle(this,
-                        getString(R.string.delete_friend_dialog_title), listener);
-                mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-                mDialog.show();
-                break;
-            //发送好友名片
-            case R.id.rl_business:
-                Intent businessIntent = new Intent(FriendSettingActivity.this, ForwardMsgActivity.class);
-                businessIntent.setFlags(1);
-                businessIntent.putExtra("userName", mFriendInfo.getUserName());
-                businessIntent.putExtra("appKey", mFriendInfo.getAppKey());
-                if (mFriendInfo.getAvatarFile() != null) {
-                    businessIntent.putExtra("avatar", mFriendInfo.getAvatarFile().getAbsolutePath());
-                }
-                startActivity(businessIntent);
-                break;
-            default:
-                break;
-        }
-    }
-
-    public void delConvAndReturnMainActivity() {
-        Conversation conversation = JMessageClient.getSingleConversation(mFriendInfo.getUserName(), mFriendInfo.getAppKey());
-        EventBus.getDefault().post(new Event.Builder().setType(EventType.deleteConversation)
-                .setConversation(conversation)
-                .build());
-        JMessageClient.deleteSingleConversation(mFriendInfo.getUserName(), mFriendInfo.getAppKey());
-        Intent intent = new Intent(this, MainActivity.class);
-        startActivity(intent);
-        finish();
-    }
-
-    private void initView() {
-        initTitle(true, true, "设置", "", false, "");
-        mSetNoteName = (RelativeLayout) findViewById(R.id.setNoteName);
-        mBtn_addBlackList = (SlipButton) findViewById(R.id.btn_addBlackList);
-        mBtn_deleteFriend = (Button) findViewById(R.id.btn_deleteFriend);
-        mTv_noteName = (TextView) findViewById(R.id.tv_noteName);
-        mRl_business = (RelativeLayout) findViewById(R.id.rl_business);
-        final Dialog dialog = DialogCreator.createLoadingDialog(FriendSettingActivity.this,
-                FriendSettingActivity.this.getString(R.string.jmui_loading));
-        dialog.show();
-        if (!TextUtils.isEmpty(getIntent().getStringExtra("noteName"))) {
-            mTv_noteName.setText(getIntent().getStringExtra("noteName"));
-        }
-        JMessageClient.getUserInfo(getIntent().getStringExtra("userName"), new GetUserInfoCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                dialog.dismiss();
-                if (responseCode == 0) {
-                    mFriendInfo = info;
-                    mBtn_addBlackList.setChecked(info.getBlacklist() == 1);
-                    if (info.isFriend()) {
-                        mBtn_deleteFriend.setVisibility(View.VISIBLE);
-                        mSetNoteName.setVisibility(View.VISIBLE);
-                    }else {
-                        mBtn_deleteFriend.setVisibility(View.GONE);
-                        mSetNoteName.setVisibility(View.GONE);
-                    }
-                }
-            }
-        });
-
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == 1 && data != null) {
-            mTv_noteName.setText(data.getStringExtra("updateName"));
-        }
-    }
-
-    @Override
-    public void onChanged(int id, boolean checkState) {
-        switch (id) {
-            case R.id.btn_addBlackList:
-                final LoadDialog dialog = new LoadDialog(FriendSettingActivity.this, false, "正在设置");
-                dialog.show();
-                String userName = getIntent().getStringExtra("userName");
-                List<String> name = new ArrayList<>();
-                name.add(userName);
-                if (checkState) {
-                    JMessageClient.addUsersToBlacklist(name, new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            dialog.dismiss();
-                            if (responseCode == 0) {
-                                ToastUtil.shortToast(FriendSettingActivity.this, "添加成功");
-                            } else {
-                                mBtn_addBlackList.setChecked(false);
-                                ToastUtil.shortToast(FriendSettingActivity.this, "添加失败" + responseMessage);
-                            }
-                        }
-                    });
-                } else {
-                    JMessageClient.delUsersFromBlacklist(name, new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            dialog.dismiss();
-                            if (responseCode == 0) {
-                                ToastUtil.shortToast(FriendSettingActivity.this, "移除成功");
-                            } else {
-                                mBtn_addBlackList.setChecked(true);
-                                ToastUtil.shortToast(FriendSettingActivity.this, "移除失败" + responseMessage);
-                            }
-                        }
-                    });
-                }
-                break;
-            default:
-                break;
-        }
-    }
-}

+ 0 - 105
o2android/app/src/main/java/jiguang/chat/activity/GroupActivity.java

@@ -1,105 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-import android.widget.ListView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetGroupIDListCallback;
-import cn.jpush.im.android.api.callback.GetGroupInfoCallback;
-import cn.jpush.im.android.api.model.GroupInfo;
-import jiguang.chat.adapter.GroupListAdapter;
-import jiguang.chat.controller.ActivityController;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.ToastUtil;
-
-/**
- * Created by ${chenyn} on 2017/4/26.
- */
-
-public class GroupActivity extends BaseActivity {
-
-    private ListView mGroupList;
-    private GroupListAdapter mGroupListAdapter;
-    private Context mContext;
-    private boolean isFromForward = false;
-    private boolean isBusinessCard = false;
-    private String mUserName;
-    private String mAppKey;
-    private String mAvatarPath;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = this;
-        setContentView(R.layout.activity_juim_group);
-        initTitle(true, true, "群组", "", false, "");
-        ActivityController.addActivity(this);
-        mGroupList = (ListView) findViewById(R.id.group_list);
-
-        //待发送名片的参数
-        mUserName = getIntent().getStringExtra("userName");
-        mAppKey = getIntent().getStringExtra("appKey");
-        mAvatarPath = getIntent().getStringExtra("avatar");
-
-        initData();
-    }
-
-    private void initData() {
-        final Dialog dialog = DialogCreator.createLoadingDialog(this, this.getString(R.string.jmui_loading));
-        dialog.show();
-        final List<GroupInfo> infoList = new ArrayList<>();
-        JMessageClient.getGroupIDList(new GetGroupIDListCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage, final List<Long> groupIDList) {
-                if (responseCode == 0) {
-                    final int[] groupSize = {groupIDList.size()};
-                    if (groupIDList.size() > 0) {
-                        for (Long id : groupIDList) {
-                            JMessageClient.getGroupInfo(id, new GetGroupInfoCallback() {
-                                @Override
-                                public void gotResult(int i, String s, GroupInfo groupInfo) {
-                                    if (i == 0) {
-                                        groupSize[0] = groupSize[0] - 1;
-                                        infoList.add(groupInfo);
-                                        if (groupSize[0] == 0) {
-                                            setAdapter(infoList, dialog);
-                                        }
-
-                                    }
-                                }
-                            });
-                        }
-                    } else {
-                        dialog.dismiss();
-                        ToastUtil.shortToast(GroupActivity.this, "您还没有群组");
-                    }
-                } else {
-                    dialog.dismiss();
-                    HandleResponseCode.onHandle(mContext, responseCode, false);
-                }
-            }
-        });
-    }
-
-    public void setAdapter(List<GroupInfo> infoList, Dialog dialog) {
-        dialog.dismiss();
-        //来自转发时flag是1
-        if (getIntent().getFlags() == 1) {
-            isFromForward = true;
-        }
-        //来自名片的请求设置flag==2
-        if (getIntent().getFlags() == 2) {
-            isBusinessCard = true;
-        }
-        mGroupListAdapter = new GroupListAdapter(mContext, infoList, isFromForward, mWidth, isBusinessCard, mUserName, mAppKey, mAvatarPath);
-        mGroupList.setAdapter(mGroupListAdapter);
-    }
-}

+ 0 - 92
o2android/app/src/main/java/jiguang/chat/activity/GroupAvatarActivity.java

@@ -1,92 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.callback.GetGroupInfoCallback;
-import cn.jpush.im.android.api.model.GroupInfo;
-import jiguang.chat.utils.photochoose.ChoosePhoto;
-import jiguang.chat.utils.photochoose.PhotoUtils;
-
-/**
- * Created by ${chenyn} on 2017/9/18.
- */
-
-public class GroupAvatarActivity extends BaseActivity implements View.OnClickListener {
-
-    @BindView(R.id.ll_back)
-    LinearLayout llBack;
-    @BindView(R.id.iv_save)
-    ImageView ivSave;
-    @BindView(R.id.iv_groupAvatar)
-    ImageView ivGroupAvatar;
-
-    ChoosePhoto mChoosePhoto;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_group_avatar);
-        ButterKnife.bind(this);
-
-        llBack.setOnClickListener(this);
-        ivSave.setOnClickListener(this);
-        if (getIntent().getStringExtra("groupAvatar") != null) {
-            ivGroupAvatar.setImageBitmap(BitmapFactory.decodeFile(getIntent().getStringExtra("groupAvatar")));
-        } else {
-            JMessageClient.getGroupInfo(getIntent().getLongExtra("groupID", 0), new GetGroupInfoCallback() {
-                @Override
-                public void gotResult(int i, String s, GroupInfo groupInfo) {
-                    if (i == 0) {
-                        groupInfo.getBigAvatarBitmap(new GetAvatarBitmapCallback() {
-                            @Override
-                            public void gotResult(int i, String s, Bitmap bitmap) {
-                                if (i == 0) {
-                                    ivGroupAvatar.setImageBitmap(bitmap);
-                                }
-                            }
-                        });
-                    }
-                }
-            });
-        }
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.ll_back:
-                finish();
-                break;
-            case R.id.iv_save:
-                mChoosePhoto = new ChoosePhoto();
-                mChoosePhoto.setGroupAvatarChangeListener(GroupAvatarActivity.this, getIntent().getLongExtra("groupID", 0));
-                mChoosePhoto.showPhotoDialog(GroupAvatarActivity.this);
-                break;
-            default:
-                break;
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode) {
-            case PhotoUtils.INTENT_CROP:
-            case PhotoUtils.INTENT_TAKE:
-            case PhotoUtils.INTENT_SELECT:
-                mChoosePhoto.photoUtils.onActivityResult(GroupAvatarActivity.this, requestCode, resultCode, data);
-                break;
-        }
-    }
-}

+ 0 - 215
o2android/app/src/main/java/jiguang/chat/activity/GroupGridViewActivity.java

@@ -1,215 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.GridView;
-import android.widget.LinearLayout;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.adapter.GroupGridViewAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.utils.DialogCreator;
-
-/**
- * Created by ${chenyn} on 2017/5/8.
- */
-
-public class GroupGridViewActivity extends BaseActivity {
-    private static final String TAG = "ChatDetailActivity";
-    private static final int ADD_MEMBERS_TO_GRIDVIEW = 2048;
-
-    private GridView mGroup_gridView;
-    private boolean mIsCreator = false;
-    private long mGroupId;
-    private List<UserInfo> mMemberInfoList = new ArrayList<UserInfo>();
-    private int mCurrentNum;
-    private static final int ADD_FRIEND_REQUEST_CODE = 3;
-    private Dialog mLoadingDialog = null;
-    private final MyHandler myHandler = new MyHandler(this);
-    private GroupGridViewAdapter mGridViewAdapter;
-    private LinearLayout mSearch_title;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.group_gridview);
-        initTitle(true, true, "群成员", "", false, "");
-
-        mGroup_gridView = (GridView) findViewById(R.id.group_gridView);
-        mSearch_title = (LinearLayout) findViewById(R.id.search_title);
-        initData();
-    }
-
-    @Override
-    protected void onResume() {
-        initData();
-        super.onResume();
-    }
-
-    private void initData() {
-        mGroupId = getIntent().getLongExtra(JGApplication.GROUP_ID, 0);
-
-        final Conversation conv = JMessageClient.getGroupConversation(mGroupId);
-        GroupInfo groupInfo = (GroupInfo) conv.getTargetInfo();
-        mMemberInfoList = groupInfo.getGroupMembers();
-
-        mCurrentNum = mMemberInfoList.size();
-        String groupOwner = groupInfo.getGroupOwner();
-        final String userName = JMessageClient.getMyInfo().getUserName();
-        if (groupOwner.equals(userName)) {
-            mIsCreator = true;
-        }
-        mGridViewAdapter = new GroupGridViewAdapter(this, mMemberInfoList, mIsCreator, mAvatarSize);
-        mGroup_gridView.setAdapter(mGridViewAdapter);
-
-        mGroup_gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                Intent intent = new Intent();
-                if (position < mCurrentNum) {
-                    if (mMemberInfoList.get(position).getUserName().equals(userName)) {
-                        intent.setClass(GroupGridViewActivity.this, PersonalActivity.class);
-                    } else {
-                        UserInfo userInfo = mMemberInfoList.get(position);
-                        if (userInfo.isFriend()) {
-                            intent.setClass(GroupGridViewActivity.this, FriendInfoActivity.class);
-                            intent.putExtra("group_grid", true);
-                        } else {
-                            intent.setClass(GroupGridViewActivity.this, GroupNotFriendActivity.class);
-                        }
-                        intent.putExtra(JGApplication.TARGET_ID, userInfo.getUserName());
-                        intent.putExtra(JGApplication.TARGET_APP_KEY, userInfo.getAppKey());
-                        intent.putExtra(JGApplication.GROUP_ID, mGroupId);
-                    }
-                    startActivity(intent);
-                    // 点击添加成员按钮
-                } else if (position == mCurrentNum) {
-                    showContacts();
-
-                    // 是群主, 成员个数大于1并点击删除按钮
-                } else if (position == mCurrentNum + 1 && mIsCreator && mCurrentNum > 1) {
-                    intent.putExtra(JGApplication.DELETE_MODE, true);
-                    intent.putExtra(JGApplication.GROUP_ID, mGroupId);
-                    intent.setClass(GroupGridViewActivity.this, MembersInChatActivity.class);
-                    startActivityForResult(intent, JGApplication.REQUEST_CODE_ALL_MEMBER);
-                }
-            }
-        });
-
-        mSearch_title.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(GroupGridViewActivity.this, SearchGroupActivity.class);
-                JGApplication.mSearchGroup = mMemberInfoList;
-                startActivity(intent);
-            }
-        });
-
-    }
-
-    public void showContacts() {
-        Intent intent = new Intent();
-        intent.putExtra(TAG, 1);
-        //作用是已经在群组中的人默认勾选checkbox
-        intent.putExtra("add_friend_group_id", mGroupId);
-        intent.setClass(this, SelectFriendActivity.class);
-        startActivityForResult(intent, ADD_FRIEND_REQUEST_CODE);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == ADD_FRIEND_REQUEST_CODE && data != null) {
-            ArrayList<String> list = data.getStringArrayListExtra("SelectedUser");
-            if (null != list && list.size() != 0) {
-                addMembersToGroup(list);
-            }
-        }
-    }
-
-    public void addMembersToGroup(ArrayList<String> users) {
-        ArrayList<String> list = new ArrayList<>();
-        for (String username : users) {
-            if (checkIfNotContainUser(username)) {
-                list.add(username);
-            }
-        }
-        if (list.size() > 0) {
-            mLoadingDialog = DialogCreator.createLoadingDialog(GroupGridViewActivity.this,
-                    getString(R.string.adding_hint));
-            mLoadingDialog.show();
-            android.os.Message msg = myHandler.obtainMessage();
-            msg.what = ADD_MEMBERS_TO_GRIDVIEW;
-            msg.obj = list;
-            msg.sendToTarget();
-        }
-    }
-
-    private boolean checkIfNotContainUser(String targetID) {
-        if (mMemberInfoList != null) {
-            for (UserInfo userInfo : mMemberInfoList) {
-                if (userInfo.getUserName().equals(targetID))
-                    return false;
-            }
-            return true;
-        }
-        return true;
-    }
-
-    private static class MyHandler extends Handler {
-        private final WeakReference<GroupGridViewActivity> mActivity;
-
-        public MyHandler(GroupGridViewActivity controller) {
-            mActivity = new WeakReference<>(controller);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            GroupGridViewActivity controller = mActivity.get();
-            if (controller != null) {
-                switch (msg.what) {
-                    //好友模式从通讯录中添加好友
-                    case ADD_MEMBERS_TO_GRIDVIEW:
-                        Log.i(TAG, "Adding Group Members");
-                        ArrayList<String> users = (ArrayList<String>) msg.obj;
-                        controller.addMembers(users);
-                        break;
-                }
-            }
-        }
-    }
-
-    private void addMembers(ArrayList<String> users) {
-        JMessageClient.addGroupMembers(mGroupId, users, new BasicCallback() {
-            @Override
-            public void gotResult(final int status, final String desc) {
-                mLoadingDialog.dismiss();
-                if (status == 0) {
-                    initData();
-                    mGridViewAdapter.notifyDataSetChanged();
-                } else {
-                    Toast.makeText(GroupGridViewActivity.this, "添加失败" + desc, Toast.LENGTH_SHORT).show();
-                }
-            }
-        });
-    }
-
-}

+ 0 - 226
o2android/app/src/main/java/jiguang/chat/activity/GroupNotFriendActivity.java

@@ -1,226 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.eventbus.EventBus;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.ToastUtil;
-
-/**
- * Created by ${chenyn} on 2017/5/10.
- */
-
-public class GroupNotFriendActivity extends BaseActivity implements View.OnClickListener {
-
-    private ImageView mIv_friendPhoto;
-    private TextView mTv_noteName;
-    private TextView mTv_sign;
-    private TextView mTv_userName;
-    private TextView mTv_gender;
-    private TextView mTv_birthday;
-    private TextView mTv_address;
-    private Button mBtn_add_friend;
-    private Button mBtn_send_message;
-    private String mUserName;
-    private UserInfo mUserInfo;
-    private String mMyName;
-    private RelativeLayout mRl_NickName;
-    private TextView mTv_NickName;
-    private String mNickName;
-    private String mAvatarPath;
-    private TextView mTv_additionalMsg;
-    private LinearLayout mLl_additional;
-    private ImageButton mReturnBtn;
-    private ImageView mIvMore;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_group_not_friend);
-
-        initView();
-        initData();
-    }
-
-    private void initData() {
-        final Dialog dialog = DialogCreator.createLoadingDialog(this, this.getString(R.string.jmui_loading));
-        dialog.show();
-        mUserName = getIntent().getStringExtra(JGApplication.TARGET_ID);
-        String reason = getIntent().getStringExtra("reason");
-        if (reason == null) {
-            mLl_additional.setVisibility(View.GONE);
-        } else {
-            mLl_additional.setVisibility(View.VISIBLE);
-            mTv_additionalMsg.setText("附加消息: " + reason);
-        }
-        JMessageClient.getUserInfo(mUserName, new GetUserInfoCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                if (responseCode == 0) {
-                    mUserInfo = info;
-                    File avatar = info.getAvatarFile();
-                    if (avatar != null) {
-                        mAvatarPath = avatar.getAbsolutePath();
-                        mIv_friendPhoto.setImageBitmap(BitmapFactory.decodeFile(mAvatarPath));
-                    } else {
-                        mIv_friendPhoto.setImageResource(R.drawable.rc_default_portrait);
-                    }
-                    String noteName = info.getNotename();
-                    mNickName = info.getNickname();
-                    //有备注 有昵称
-                    mTv_userName.setText(mUserName);
-                    if (!TextUtils.isEmpty(noteName) && !TextUtils.isEmpty(mNickName)) {
-                        mRl_NickName.setVisibility(View.VISIBLE);
-                        mTv_NickName.setText(mNickName);
-                        mTv_noteName.setText("备注名: " + noteName);
-                    }
-                    //没有备注 有昵称
-                    else if (TextUtils.isEmpty(noteName) && !TextUtils.isEmpty(mNickName)) {
-                        mRl_NickName.setVisibility(View.GONE);
-                        mTv_noteName.setText("昵称: " + mNickName);
-                    }
-                    //有备注 没有昵称
-                    else if (!TextUtils.isEmpty(noteName) && TextUtils.isEmpty(mNickName)) {
-                        mRl_NickName.setVisibility(View.VISIBLE);
-                        mTv_NickName.setText(info.getNickname());
-                        mTv_noteName.setText("备注名: " + noteName);
-                    }
-                    //没有备注名 没有昵称
-                    else {
-                        mRl_NickName.setVisibility(View.GONE);
-                        mTv_noteName.setText("用户名: " + mUserName);
-                    }
-                    mTv_sign.setText(info.getSignature());
-                    if (info.getGender() == UserInfo.Gender.male) {
-                        mTv_gender.setText("男");
-                    } else if (info.getGender() == UserInfo.Gender.female) {
-                        mTv_gender.setText("女");
-                    } else {
-                        mTv_gender.setText("未知");
-                    }
-                    mTv_birthday.setText(getBirthday(info));
-                    mTv_address.setText(info.getRegion());
-                }
-                dialog.dismiss();
-            }
-        });
-
-        UserInfo myInfo = JMessageClient.getMyInfo();
-        mMyName = myInfo.getNickname();
-        if (TextUtils.isEmpty(mMyName)) {
-            mMyName = myInfo.getUserName();
-        }
-    }
-
-    private void initView() {
-        mReturnBtn = (ImageButton) findViewById(R.id.return_btn);
-        mIvMore = (ImageView) findViewById(R.id.iv_more);
-        mIv_friendPhoto = (ImageView) findViewById(R.id.iv_friendPhoto);
-        mTv_noteName = (TextView) findViewById(R.id.tv_nickName);
-        mTv_sign = (TextView) findViewById(R.id.tv_sign);
-        mTv_userName = (TextView) findViewById(R.id.tv_userName);
-        mTv_gender = (TextView) findViewById(R.id.tv_gender);
-        mTv_birthday = (TextView) findViewById(R.id.tv_birthday);
-        mTv_address = (TextView) findViewById(R.id.tv_address);
-        mBtn_add_friend = (Button) findViewById(R.id.btn_add_friend);
-        mBtn_send_message = (Button) findViewById(R.id.btn_send_message);
-        mRl_NickName = (RelativeLayout) findViewById(R.id.rl_nickName);
-        mTv_NickName = (TextView) findViewById(R.id.tv_nick);
-
-        mTv_additionalMsg = (TextView) findViewById(R.id.tv_additionalMsg);
-        mLl_additional = (LinearLayout) findViewById(R.id.ll_additional);
-
-        mBtn_add_friend.setOnClickListener(this);
-        mBtn_send_message.setOnClickListener(this);
-        mReturnBtn.setOnClickListener(this);
-        mIvMore.setOnClickListener(this);
-    }
-
-    public String getBirthday(UserInfo info) {
-        long birthday = info.getBirthday();
-        Date date = new Date(birthday);
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-
-        return dateFormat.format(date);
-    }
-
-    @Override
-    public void onClick(View v) {
-        Intent intent = new Intent();
-        switch (v.getId()) {
-            case R.id.btn_add_friend:
-                if (mUserInfo.isFriend()) {
-                    ToastUtil.shortToast(GroupNotFriendActivity.this, "对方已经是你的好友");
-                } else {
-                    intent.setClass(GroupNotFriendActivity.this, VerificationActivity.class);
-                    //对方信息
-                    intent.putExtra("detail_add_friend", mUserName);
-                    intent.putExtra("detail_add_nick_name", mNickName);
-                    intent.putExtra("detail_add_avatar_path", mAvatarPath);
-                    //自己的昵称或者是用户名
-                    intent.putExtra("detail_add_friend_my_nickname", mMyName);
-                    intent.setFlags(1);
-                    startActivity(intent);
-                }
-                break;
-            case R.id.btn_send_message:
-                intent.setClass(GroupNotFriendActivity.this, ChatActivity.class);
-                //创建会话
-                intent.putExtra(JGApplication.TARGET_ID, mUserInfo.getUserName());
-                intent.putExtra(JGApplication.TARGET_APP_KEY, mUserInfo.getAppKey());
-                String notename = mUserInfo.getNotename();
-                if (TextUtils.isEmpty(notename)) {
-                    notename = mUserInfo.getNickname();
-                    if (TextUtils.isEmpty(notename)) {
-                        notename = mUserInfo.getUserName();
-                    }
-                }
-                intent.putExtra(JGApplication.CONV_TITLE, notename);
-                Conversation conv = JMessageClient.getSingleConversation(mUserInfo.getUserName(), mUserInfo.getAppKey());
-                //如果会话为空,使用EventBus通知会话列表添加新会话
-                if (conv == null) {
-                    conv = Conversation.createSingleConversation(mUserInfo.getUserName(), mUserInfo.getAppKey());
-                    EventBus.getDefault().post(new Event.Builder()
-                            .setType(EventType.createConversation)
-                            .setConversation(conv)
-                            .build());
-                }
-                startActivity(intent);
-                break;
-            case R.id.return_btn:
-                finish();
-                break;
-            case R.id.iv_more:
-                intent.setClass(GroupNotFriendActivity.this, NotFriendSettingActivity.class);
-                intent.putExtra("notFriendUserName", mUserName);
-                startActivity(intent);
-                break;
-            default:
-                break;
-        }
-    }
-}

+ 0 - 330
o2android/app/src/main/java/jiguang/chat/activity/LoginActivity.java

@@ -1,330 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.support.annotation.IdRes;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.View;
-import android.view.animation.AlphaAnimation;
-import android.view.animation.Animation;
-import android.view.animation.TranslateAnimation;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RadioButton;
-import android.widget.RadioGroup;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.lang.reflect.Method;
-
-import cn.jpush.im.android.api.JMessageClient;
-import jiguang.chat.controller.LoginController;
-import jiguang.chat.utils.BitmapLoader;
-import jiguang.chat.utils.ClearWriteEditText;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.SoftKeyBoardStateHelper;
-
-public class LoginActivity extends BaseActivity implements View.OnClickListener, View.OnFocusChangeListener {
-    public ClearWriteEditText mLogin_userName;
-    public ClearWriteEditText mLogin_passWord;
-    public Button mBtn_login;
-    public TextView mLogin_register;
-    private LoginController mLoginController;
-    private ImageView mDe_login_logo;
-    private RelativeLayout mTitleBar;
-    private RelativeLayout mBackground;
-    private LinearLayout mLl_name_psw;
-    private boolean mLogoShow = true;
-    public TextView mNewUser;
-    public TextView mLogin_desc;
-    private ImageView mLogin_userLogo;
-    private ImageView mLogin_pswLogo;
-    private View mView;
-    private View mUserLine;
-    private View mPswLine;
-    //内部测试环境使用,发布时会置为false;此处对开发者来说即使打开也是没有效果的.
-    private boolean isTestVisibility = true;
-    private RadioGroup mRadioGroup;
-    private RadioButton mRelease;
-    private RadioButton mTest;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_juim_login);
-        initView();
-        initData();
-
-        mLoginController = new LoginController(this);
-
-        mBtn_login.setOnClickListener(mLoginController);
-        mLogin_register.setOnClickListener(mLoginController);
-        mNewUser.setOnClickListener(mLoginController);
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.background:
-                if (!getLogoShow()) {
-                    InputMethodManager imm = (InputMethodManager)
-                            getSystemService(Context.INPUT_METHOD_SERVICE);
-                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
-                    setLogoShow(false);
-                }
-                break;
-            case R.id.login_userName:
-            case R.id.login_passWord:
-                if (getLogoShow()) {
-                    mTitleBar.setVisibility(View.VISIBLE);
-                    mTitleBar.startAnimation(moveToView(0.0f, 0.0f, -1.0f, 0.0f));
-                    mDe_login_logo.setVisibility(View.GONE);
-                    mLl_name_psw.startAnimation(moveToView(0.0f, 0.0f, 0.32f, 0.0f));
-
-                    mView.setVisibility(View.VISIBLE);
-                    setLogoShow(false);
-                }
-                break;
-            default:
-                break;
-        }
-
-    }
-
-    public void setLogoShow(boolean isLogoShow) {
-        mLogoShow = isLogoShow;
-    }
-
-    public boolean getLogoShow() {
-        return mLogoShow;
-    }
-
-
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-        switch (v.getId()) {
-            case R.id.login_userName:
-                if (hasFocus) {
-                    mLogin_userLogo.setImageResource(R.drawable.login_user_press);
-                    mUserLine.setBackgroundColor(getResources().getColor(R.color.line_press));
-                } else {
-                    mLogin_userLogo.setImageResource(R.drawable.login_user_normal);
-                    mUserLine.setBackgroundColor(getResources().getColor(R.color.line_normal));
-                }
-                if (hasFocus && getLogoShow()) {
-                    mTitleBar.setVisibility(View.VISIBLE);
-                    mTitleBar.startAnimation(moveToView(0.0f, 0.0f, -1.0f, 0.0f));
-                    mDe_login_logo.setVisibility(View.GONE);
-                    mLl_name_psw.startAnimation(moveToView(0.0f, 0.0f, 0.32f, 0.0f));
-                    mView.setVisibility(View.VISIBLE);
-                    setLogoShow(false);
-                }
-                break;
-            case R.id.login_passWord:
-                if (hasFocus) {
-                    mLogin_pswLogo.setImageResource(R.drawable.login_psw_press);
-                    mPswLine.setBackgroundColor(getResources().getColor(R.color.line_press));
-                } else {
-                    mLogin_pswLogo.setImageResource(R.drawable.login_psw_normal);
-                    mPswLine.setBackgroundColor(getResources().getColor(R.color.line_normal));
-                }
-                if (hasFocus && getLogoShow()) {
-                    mTitleBar.setVisibility(View.VISIBLE);
-                    mTitleBar.startAnimation(moveToView(0.0f, 0.0f, -1.0f, 0.0f));
-                    mDe_login_logo.setVisibility(View.GONE);
-                    mLl_name_psw.startAnimation(moveToView(0.0f, 0.0f, 0.32f, 0.0f));
-                    setLogoShow(false);
-                }
-                break;
-        }
-    }
-
-    private void initData() {
-        mLogin_userName.setOnFocusChangeListener(this);
-        mLogin_passWord.setOnFocusChangeListener(this);
-        mLogin_userName.setOnClickListener(this);
-        mLogin_passWord.setOnClickListener(this);
-        mBackground.setOnClickListener(this);
-        SoftKeyBoardStateHelper helper = new SoftKeyBoardStateHelper(findViewById(R.id.background));
-        helper.addSoftKeyboardStateListener(new SoftKeyBoardStateHelper.SoftKeyboardStateListener() {
-            @Override
-            public void onSoftKeyboardOpened(int keyboardHeightInPx) {
-                //软键盘弹起
-            }
-
-            @Override
-            public void onSoftKeyboardClosed() {
-                //软键盘关闭
-                if (!getLogoShow()) {
-                    mTitleBar.setVisibility(View.GONE);
-                    mTitleBar.startAnimation(moveToView(0.0f, 0.0f, 0.0f, -1.0f));
-                    mDe_login_logo.setVisibility(View.VISIBLE);
-                    AlphaAnimation animation = new AlphaAnimation(0, 1);
-                    animation.setDuration(250);
-                    mDe_login_logo.startAnimation(animation);
-                    mLl_name_psw.startAnimation(moveToView(0.0f, 0.0f, -0.09f, 0.003f));
-                    setLogoShow(true);
-                }
-            }
-        });
-
-        mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
-                switch (checkedId) {
-                    case R.id.rb_release:
-                        swapEnvironment(LoginActivity.this.getApplicationContext(), false);
-                        break;
-                    case R.id.rb_test:
-                        swapEnvironment(LoginActivity.this.getApplicationContext(), true);
-                        break;
-                    default:
-                        break;
-                }
-            }
-        });
-    }
-
-
-    public TranslateAnimation moveToView(float a, float b, float c, float d) {
-        TranslateAnimation mHiddenAction = new TranslateAnimation(
-                Animation.RELATIVE_TO_SELF, a,
-                Animation.RELATIVE_TO_SELF, b,
-                Animation.RELATIVE_TO_SELF, c,
-                Animation.RELATIVE_TO_SELF, d);
-        mHiddenAction.setDuration(250);
-        return mHiddenAction;
-    }
-
-
-    private void initView() {
-        mLogin_userName = (ClearWriteEditText) findViewById(R.id.login_userName);
-        mLogin_passWord = (ClearWriteEditText) findViewById(R.id.login_passWord);
-        mBtn_login = (Button) findViewById(R.id.btn_login);
-        mDe_login_logo = (ImageView) findViewById(R.id.de_login_logo);
-        mLogin_register = (TextView) findViewById(R.id.login_register);
-        mTitleBar = (RelativeLayout) findViewById(R.id.titlebar);
-        mBackground = (RelativeLayout) findViewById(R.id.background);
-        mLl_name_psw = (LinearLayout) findViewById(R.id.ll_name_psw);
-        mLogin_userLogo = (ImageView) findViewById(R.id.login_userLogo);
-        mLogin_pswLogo = (ImageView) findViewById(R.id.login_pswLogo);
-        mView = findViewById(R.id.view);
-        mUserLine = findViewById(R.id.user_line);
-        mPswLine = findViewById(R.id.psw_line);
-
-        mNewUser = (TextView) findViewById(R.id.new_user);
-        mLogin_desc = (TextView) findViewById(R.id.login_desc);
-
-        mRadioGroup = (RadioGroup) findViewById(R.id.rg_group);
-        mRelease = (RadioButton) findViewById(R.id.rb_release);
-        mTest = (RadioButton) findViewById(R.id.rb_test);
-
-        if (!isTestVisibility) {
-            mRadioGroup.setVisibility(View.GONE);
-        } else {
-            //供jmessage sdk测试使用,开发者无需关心。
-            Boolean isTestEvn = invokeIsTestEvn();
-            if (isTestEvn) {
-                mTest.setChecked(true);
-            } else {
-                mRelease.setChecked(true);
-            }
-        }
-
-        if (mLogin_userName.getText().length() == 0 || mLogin_passWord.getText().length() == 0) {
-            mBtn_login.setEnabled(false);
-        }
-
-        //退出登录重现上次的账号以及头像
-        String userName = SharePreferenceManager.getCachedUsername();
-        String userAvatar = SharePreferenceManager.getCachedAvatarPath();
-        Bitmap bitmap = BitmapLoader.getBitmapFromFile(userAvatar, mAvatarSize, mAvatarSize);
-        if (bitmap != null) {
-            mDe_login_logo.setImageBitmap(bitmap);
-        } else {
-            mDe_login_logo.setImageResource(R.drawable.no_avatar);
-        }
-        mLogin_userName.setText(userName);
-        if (userName != null)
-            mLogin_userName.setSelection(userName.length());//设置光标位置
-
-        //当把用户名删除后头像要换成默认的
-        mLogin_userName.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                mDe_login_logo.setImageResource(R.drawable.no_avatar);
-                if (mLogin_userName.getText().length() == 0 || mLogin_passWord.getText().length() == 0) {
-                    mBtn_login.setEnabled(false);
-                } else {
-                    mBtn_login.setEnabled(true);
-                }
-
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-
-        mLogin_passWord.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                if (mLogin_userName.getText().length() == 0 || mLogin_passWord.getText().length() == 0) {
-                    mBtn_login.setEnabled(false);
-                } else {
-                    mBtn_login.setEnabled(true);
-                }
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-
-    }
-
-    public String getUserId() {
-        return mLogin_userName.getText().toString().trim();
-    }
-
-    public String getPassword() {
-        return mLogin_passWord.getText().toString().trim();
-    }
-
-    public static Boolean invokeIsTestEvn() {
-        try {
-            Method method = JMessageClient.class.getDeclaredMethod("isTestEnvironment");
-            Object result = method.invoke(null);
-            return (Boolean) result;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    public static void swapEnvironment(Context context, boolean isTest) {
-        try {
-            Method method = JMessageClient.class.getDeclaredMethod("swapEnvironment", Context.class, Boolean.class);
-            method.invoke(null, context, isTest);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-}

+ 0 - 57
o2android/app/src/main/java/jiguang/chat/activity/MainActivity.java

@@ -1,57 +0,0 @@
-package jiguang.chat.activity;
-
-import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentManager;
-import android.view.KeyEvent;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jiguang.api.JCoreInterface;
-import jiguang.chat.controller.MainController;
-import jiguang.chat.view.MainView;
-
-public class MainActivity extends FragmentActivity {
-    private MainController mMainController;
-    private MainView mMainView;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_juim_main);
-
-
-        mMainView = (MainView) findViewById(R.id.main_view);
-        mMainView.initModule();
-        mMainController = new MainController(mMainView, this);
-
-        mMainView.setOnClickListener(mMainController);
-        mMainView.setOnPageChangeListener(mMainController);
-    }
-
-    public FragmentManager getSupportFragmentManger() {
-        return getSupportFragmentManager();
-    }
-
-    @Override
-    protected void onPause() {
-        JCoreInterface.onPause(this);
-        super.onPause();
-    }
-
-    @Override
-    protected void onResume() {
-        JCoreInterface.onResume(this);
-        mMainController.sortConvList();
-        super.onResume();
-    }
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        return keyCode == KeyEvent.KEYCODE_BACK;
-    }
-}

+ 0 - 492
o2android/app/src/main/java/jiguang/chat/activity/MembersInChatActivity.java

@@ -1,492 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.os.Message;
-import android.text.Editable;
-import android.text.SpannableString;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.text.style.ForegroundColorSpan;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.GridView;
-import android.widget.HorizontalScrollView;
-import android.widget.ImageButton;
-import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.adapter.AllMembersAdapter;
-import jiguang.chat.adapter.CreateGroupAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.pinyin.HanyuPinyin;
-import jiguang.chat.utils.sidebar.SideBar;
-
-public class MembersInChatActivity extends BaseActivity {
-
-    private ListView mListView;
-    private Dialog mDialog;
-    private Context mContext;
-    private ImageButton mReturnBtn;
-    private TextView mRightBtn;
-    private EditText mSearchEt;
-    private List<UserInfo> mMemberInfoList = new ArrayList<UserInfo>();
-    private List<ItemModel> mShowUserList = new ArrayList<ItemModel>();
-    private List<String> mPinyinList = new ArrayList<String>();
-    private UIHandler mUIHandler = new UIHandler(this);
-    private BackgroundHandler mBackgroundHandler;
-    private HandlerThread mBackgroundThread;
-    private static final int PROCESS_USER_INFO_TO_BEANS = 0x1000;
-    private static final int SEARCH_MEMBER = 0x1001;
-    private static final int SEARCH_MEMBER_SUCCESS = 0x1002;
-    private static final int INIT_ADAPTER = 0x1003;
-    private static final int ADD_ALL_MEMBER = 0x1004;
-    private AllMembersAdapter mAdapter;
-    private Dialog mLoadingDialog;
-    private long mGroupId;
-    private boolean mIsDeleteMode;
-    private boolean mIsCreator;
-    private String mSearchText;
-    private SideBar mSideBar;
-    private TextView mLetterHintTv;
-    private HorizontalScrollView mHorizontalView;
-    private CreateGroupAdapter mGroupAdapter;
-    private GridView imageSelectedGridView;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = this;
-        setContentView(R.layout.activity_all_members);
-        mListView = (ListView) findViewById(R.id.members_list_view);
-        mReturnBtn = (ImageButton) findViewById(R.id.return_btn);
-        mRightBtn = (TextView) findViewById(R.id.right_btn);
-        mSearchEt = (EditText) findViewById(R.id.search_et);
-        mHorizontalView = (HorizontalScrollView) findViewById(R.id.contact_select_area);
-        mLetterHintTv = (TextView) findViewById(R.id.letter_hint_tv);
-        imageSelectedGridView = (GridView) findViewById(R.id.contact_select_area_grid);
-//        mSideBar = (SideBar) findViewById(R.id.sidebar);
-//        mSideBar.setTextView(mLetterHintTv);
-        mGroupAdapter = new CreateGroupAdapter(MembersInChatActivity.this);
-        imageSelectedGridView.setAdapter(mGroupAdapter);
-
-
-        mBackgroundThread = new HandlerThread("Work on MembersInChatActivity");
-        mBackgroundThread.start();
-        mBackgroundHandler = new BackgroundHandler(mBackgroundThread.getLooper());
-        mGroupId = getIntent().getLongExtra(JGApplication.GROUP_ID, 0);
-        mIsDeleteMode = getIntent().getBooleanExtra(JGApplication.DELETE_MODE, false);
-        final Conversation conv = JMessageClient.getGroupConversation(mGroupId);
-        GroupInfo groupInfo = (GroupInfo) conv.getTargetInfo();
-        mMemberInfoList = groupInfo.getGroupMembers();
-        String groupOwnerId = groupInfo.getGroupOwner();
-        final UserInfo myInfo = JMessageClient.getMyInfo();
-        mIsCreator = groupOwnerId != null && groupOwnerId.equals(myInfo.getUserName());
-
-        mBackgroundHandler.sendEmptyMessage(PROCESS_USER_INFO_TO_BEANS);
-
-        if (mIsDeleteMode) {
-            mRightBtn.setText(this.getString(R.string.jmui_delete));
-        } else {
-            mRightBtn.setText(this.getString(R.string.add));
-        }
-
-        mReturnBtn.setOnClickListener(listener);
-        mRightBtn.setOnClickListener(listener);
-        mSearchEt.addTextChangedListener(watcher);
-    }
-
-    View.OnClickListener listener = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            switch (v.getId()) {
-                case R.id.return_btn:
-                    Intent intent = new Intent();
-                    setResult(JGApplication.RESULT_CODE_ALL_MEMBER, intent);
-                    finish();
-                    break;
-                case R.id.right_btn:
-                    if (mIsDeleteMode) {
-                        List<String> deleteList = mAdapter.getSelectedList();
-                        if (deleteList.size() > 0) {
-                            showDeleteMemberDialog(deleteList);
-                        }else {
-                            ToastUtil.shortToast(MembersInChatActivity.this, "请至少选择一个成员");
-                        }
-                    } else {
-                        addMemberToGroup();
-                    }
-                    break;
-            }
-        }
-    };
-
-    TextWatcher watcher = new TextWatcher() {
-
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-        }
-
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-            mSearchText = s.toString().trim();
-            mBackgroundHandler.removeMessages(SEARCH_MEMBER);
-            mBackgroundHandler.sendMessageDelayed(mBackgroundHandler.obtainMessage(SEARCH_MEMBER), 200);
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {
-
-        }
-    };
-
-
-    private void showDeleteMemberDialog(final List<String> list) {
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                switch (v.getId()) {
-                    case R.id.jmui_cancel_btn:
-                        mDialog.dismiss();
-                        break;
-                    case R.id.jmui_commit_btn:
-                        mDialog.dismiss();
-                        mLoadingDialog = DialogCreator.createLoadingDialog(mContext,
-                                mContext.getString(R.string.deleting_hint));
-                        mLoadingDialog.show();
-                        JMessageClient.removeGroupMembers(mGroupId, list, new BasicCallback() {
-                            @Override
-                            public void gotResult(int status, String desc) {
-                                mLoadingDialog.dismiss();
-                                if (status == 0) {
-                                    Intent intent = new Intent();
-                                    setResult(JGApplication.RESULT_CODE_ALL_MEMBER, intent);
-                                    finish();
-                                } else {
-                                    Toast.makeText(MembersInChatActivity.this, "删除失败" + desc, Toast.LENGTH_SHORT).show();
-                                }
-                            }
-                        });
-                        break;
-
-                }
-            }
-        };
-        mDialog = DialogCreator.createDeleteMemberDialog(mContext, listener, false);
-        mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-        mDialog.show();
-    }
-
-    //点击添加按钮触发事件
-    private void addMemberToGroup() {
-        final Dialog dialog = new Dialog(this, R.style.jmui_default_dialog_style);
-        final View view = LayoutInflater.from(mContext)
-                .inflate(R.layout.dialog_add_friend_to_conv_list, null);
-        dialog.setContentView(view);
-        dialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-        dialog.show();
-        TextView title = (TextView) view.findViewById(R.id.dialog_name);
-        title.setText(mContext.getString(R.string.add_friend_to_group_title));
-        final EditText userNameEt = (EditText) view.findViewById(R.id.user_name_et);
-        final Button cancel = (Button) view.findViewById(R.id.jmui_cancel_btn);
-        final Button commit = (Button) view.findViewById(R.id.jmui_commit_btn);
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                switch (view.getId()) {
-                    case R.id.jmui_cancel_btn:
-                        dialog.cancel();
-                        break;
-                    case R.id.jmui_commit_btn:
-                        final String targetId = userNameEt.getText().toString().trim();
-                        if (TextUtils.isEmpty(targetId)) {
-                            HandleResponseCode.onHandle(mContext, 801001, true);
-                            break;
-                            //检查群组中是否包含该用户
-                        } else if (checkIfNotContainUser(targetId)) {
-                            mLoadingDialog = DialogCreator.createLoadingDialog(mContext,
-                                    mContext.getString(R.string.searching_user));
-                            mLoadingDialog.show();
-                            getUserInfo(targetId, dialog);
-                        } else {
-                            HandleResponseCode.onHandle(mContext, 1002, true);
-                        }
-                        break;
-                }
-            }
-        };
-        cancel.setOnClickListener(listener);
-        commit.setOnClickListener(listener);
-    }
-
-    /**
-     * 添加成员时检查是否存在该群成员
-     *
-     * @param targetId 要添加的用户
-     * @return 返回是否存在该用户
-     */
-    private boolean checkIfNotContainUser(String targetId) {
-        if (mMemberInfoList != null) {
-            for (UserInfo userInfo : mMemberInfoList) {
-                if (userInfo.getUserName().equals(targetId))
-                    return false;
-            }
-            return true;
-        }
-        return true;
-    }
-
-    private void getUserInfo(String targetId, final Dialog dialog) {
-        JMessageClient.getUserInfo(targetId, new GetUserInfoCallback() {
-            @Override
-            public void gotResult(int status, String desc, UserInfo userInfo) {
-                if (mLoadingDialog != null) {
-                    mLoadingDialog.dismiss();
-                }
-                if (status == 0) {
-                    addAMember(userInfo);
-                    dialog.cancel();
-                }
-            }
-        });
-    }
-
-    /**
-     * @param userInfo 要增加的成员的用户名,目前一次只能增加一个
-     */
-    private void addAMember(final UserInfo userInfo) {
-        mLoadingDialog = DialogCreator.createLoadingDialog(mContext,
-                mContext.getString(R.string.adding_hint));
-        mLoadingDialog.show();
-        ArrayList<String> list = new ArrayList<String>();
-        list.add(userInfo.getUserName());
-        JMessageClient.addGroupMembers(mGroupId, list, new BasicCallback() {
-
-            @Override
-            public void gotResult(final int status, final String desc) {
-                mLoadingDialog.dismiss();
-                if (status == 0) {
-                    // 添加群成员
-                    refreshMemberList();
-                    Toast.makeText(mContext, mContext.getString(R.string.added), Toast.LENGTH_SHORT).show();
-                } else {
-                    Toast.makeText(MembersInChatActivity.this, "添加失败" + desc, Toast.LENGTH_SHORT).show();
-                }
-            }
-        });
-    }
-
-    //添加或者删除成员后重新获得MemberInfoList
-    public void refreshMemberList() {
-        mSearchText = "";
-        mSearchEt.setText(mSearchText);
-        Conversation conv = JMessageClient.getGroupConversation(mGroupId);
-        GroupInfo groupInfo = (GroupInfo) conv.getTargetInfo();
-        mMemberInfoList = groupInfo.getGroupMembers();
-//        addAll(true);
-        mBackgroundHandler.sendEmptyMessage(ADD_ALL_MEMBER);
-    }
-
-    /**
-     * 根据输入框输入的字符过滤群成员
-     */
-    private void filterData() {
-        if (TextUtils.isEmpty(mSearchText)) {
-            addAll();
-        } else {
-            String nickname, pinyin;
-            int sort;
-            SpannableString result;
-            ItemModel model;
-            UserInfo userInfo;
-            for (int i = 0; i < mPinyinList.size(); i++) {
-                sort = 0;
-                userInfo = mMemberInfoList.get(i);
-                nickname = userInfo.getNickname();
-                if (TextUtils.isEmpty(nickname)) {
-                    nickname = userInfo.getUserName();
-                }
-                result = new SpannableString(nickname);
-                //先进行拼音匹配
-                pinyin = mPinyinList.get(i).toLowerCase();
-                int offset = pinyin.indexOf(mSearchText.toLowerCase());
-                if (offset != -1) {
-                    model = new ItemModel();
-                    sort += mSearchText.length();
-                    result.setSpan(new ForegroundColorSpan(Color.RED), offset,
-                            offset + mSearchText.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-                    //进行直接匹配
-                    int index = nickname.indexOf(mSearchText);
-                    if (index != -1) {
-                        sort += mSearchText.length();
-                        result.setSpan(new ForegroundColorSpan(Color.RED), index,
-                                index + mSearchText.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-                        model.data = userInfo;
-                        model.highlight = result;
-                        model.sortIndex = sort;
-                        mShowUserList.add(model);
-                        continue;
-                    }
-                    model.data = userInfo;
-                    model.highlight = result;
-                    model.sortIndex = sort;
-                    mShowUserList.add(model);
-                    //进行直接匹配
-                } else {
-                    int index = nickname.indexOf(mSearchText);
-                    if (index != -1) {
-                        sort += mSearchText.length();
-                        result.setSpan(new ForegroundColorSpan(Color.RED), index,
-                                index + mSearchText.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-                        model = new ItemModel();
-                        model.data = userInfo;
-                        model.highlight = result;
-                        model.sortIndex = sort;
-                        mShowUserList.add(model);
-                    }
-                }
-            }
-            Collections.sort(mShowUserList, searchComparator);
-
-        }
-
-        mUIHandler.sendEmptyMessage(SEARCH_MEMBER_SUCCESS);
-    }
-
-    static class UIHandler extends Handler {
-
-        private final WeakReference<MembersInChatActivity> mActivity;
-
-        public UIHandler(MembersInChatActivity activity) {
-            mActivity = new WeakReference<MembersInChatActivity>(activity);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            MembersInChatActivity activity = mActivity.get();
-            if (activity != null) {
-                switch (msg.what) {
-                    case INIT_ADAPTER:
-                        activity.mAdapter = new AllMembersAdapter(activity, activity.mShowUserList,
-                                activity.mIsDeleteMode, activity.mIsCreator, activity.mGroupId, activity.mWidth
-                        ,activity.mHorizontalView, activity.imageSelectedGridView, activity.mGroupAdapter);
-                        activity.mListView.setAdapter(activity.mAdapter);
-                        activity.mListView.requestFocus();
-                        //单击ListView item,跳转到个人详情界面
-                        activity.mListView.setOnItemClickListener(activity.mAdapter);
-                        break;
-                    case SEARCH_MEMBER_SUCCESS:
-                        if (activity.mAdapter != null) {
-                            activity.mAdapter.updateListView(activity.mShowUserList);
-                        }
-                        break;
-                }
-            }
-        }
-    }
-
-    private class BackgroundHandler extends Handler {
-        public BackgroundHandler(Looper looper) {
-            super(looper);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            switch (msg.what) {
-                case SEARCH_MEMBER:
-                    if (mShowUserList != null) {
-                        mShowUserList.clear();
-                    }
-                    filterData();
-                    break;
-                case PROCESS_USER_INFO_TO_BEANS:
-                    addAll();
-                    mUIHandler.sendEmptyMessage(INIT_ADAPTER);
-                    break;
-                case ADD_ALL_MEMBER:
-                    addAll();
-                    break;
-            }
-        }
-    }
-
-    private void addAll() {
-        String nickname, pinyin;
-        ItemModel itemModel;
-        mPinyinList.clear();
-        mShowUserList.clear();
-        for (UserInfo userInfo: mMemberInfoList) {
-            itemModel = new ItemModel();
-            itemModel.data = userInfo;
-            nickname = userInfo.getNickname();
-            if (TextUtils.isEmpty(nickname)) {
-                nickname = userInfo.getUserName();
-            }
-            pinyin = HanyuPinyin.getInstance().getStringPinYin(nickname);
-            mPinyinList.add(pinyin);
-            itemModel.highlight = new SpannableString(nickname);
-            mShowUserList.add(itemModel);
-        }
-        mUIHandler.sendEmptyMessage(SEARCH_MEMBER_SUCCESS);
-    }
-
-    public class ItemModel {
-        public UserInfo data;
-        public SpannableString highlight;
-        public int sortIndex;
-    }
-
-    Comparator<ItemModel> searchComparator = new Comparator<ItemModel>() {
-        @Override
-        public int compare(ItemModel m1, ItemModel m2) {
-            return m2.sortIndex - m1.sortIndex;
-        }
-    };
-
-    @Override
-    public void onBackPressed() {
-        Intent intent = new Intent();
-        setResult(JGApplication.RESULT_CODE_ALL_MEMBER, intent);
-        finish();
-        super.onBackPressed();
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        mUIHandler.removeCallbacksAndMessages(null);
-        mBackgroundHandler.removeCallbacksAndMessages(null);
-        mBackgroundThread.getLooper().quit();
-    }
-}

+ 0 - 179
o2android/app/src/main/java/jiguang/chat/activity/NickSignActivity.java

@@ -1,179 +0,0 @@
-package jiguang.chat.activity;
-
-import android.annotation.SuppressLint;
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.InputFilter;
-import android.text.Spanned;
-import android.text.TextWatcher;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-/**
- * Created by ${chenyn} on 2017/2/27.
- */
-
-public class NickSignActivity extends BaseActivity {
-
-    private EditText mEd_sign;
-    private TextView mTv_count;
-    private LinearLayout mLl_nickSign;
-    private static final int SIGN_COUNT = 250;
-    private static final int NICK_COUNT = 64;
-
-    private static final int GROUP_DESC = 250;
-    private static final int GROUP_NAME = 64;
-    private Button mJmui_commit_btn;
-
-    @SuppressLint("WrongConstant")
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_nick_sign);
-
-        initView();
-        Intent intent = getIntent();
-        if (intent.getFlags() == PersonalActivity.FLAGS_SIGN) {
-            initViewSign("个性签名", SIGN_COUNT);
-            initData(SIGN_COUNT);
-        } else if (intent.getFlags() == PersonalActivity.FLAGS_NICK) {
-            initViewNick("修改昵称", NICK_COUNT);
-            initData(NICK_COUNT);
-        } else if (intent.getFlags() == ChatDetailActivity.FLAGS_GROUP_DESC) {
-            initViewSign("群描述", GROUP_DESC);
-            initData(GROUP_DESC);
-        } else if (intent.getFlags() == ChatDetailActivity.FLAGS_GROUP_NAME) {
-            initViewNick("群名称", GROUP_NAME);
-            initData(GROUP_NAME);
-        }
-        initListener(intent.getFlags());
-    }
-
-    private void initListener(final int flags) {
-        mJmui_commit_btn.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                String sign = mEd_sign.getText().toString();
-                Intent intent = new Intent();
-                if (flags == PersonalActivity.FLAGS_NICK) {//3
-                    intent.putExtra(PersonalActivity.NICK_NAME_KEY, sign);
-                    setResult(PersonalActivity.NICK_NAME, intent);//4
-                } else if (flags == PersonalActivity.FLAGS_SIGN) {//2
-                    intent.putExtra(PersonalActivity.SIGN_KEY, sign);
-                    setResult(PersonalActivity.SIGN, intent);//1
-
-                } else if (flags == ChatDetailActivity.FLAGS_GROUP_DESC) {//71
-                    intent.putExtra(ChatDetailActivity.GROUP_DESC_KEY, sign);
-                    setResult(ChatDetailActivity.GROUP_DESC, intent);//70
-
-                } else if (flags == ChatDetailActivity.FLAGS_GROUP_NAME) {//73
-                    intent.putExtra(ChatDetailActivity.GROUP_NAME_KEY, sign);
-                    setResult(ChatDetailActivity.GROUP_NAME, intent);//72
-
-                }
-                //做更新动作
-                finish();
-            }
-        });
-    }
-
-    int input;
-
-    private void initData(final int countNum) {
-        mEd_sign.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                input = s.toString().substring(start).getBytes().length;
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-                int num = countNum - s.toString().getBytes().length;
-                mTv_count.setText(num + "");
-            }
-        });
-    }
-
-    private void initView() {
-        mEd_sign = (EditText) findViewById(R.id.ed_sign);
-        mLl_nickSign = (LinearLayout) findViewById(R.id.ll_nickSign);
-        mTv_count = (TextView) findViewById(R.id.tv_count);
-        mJmui_commit_btn = (Button) findViewById(R.id.jmui_commit_btn);
-
-        if (getIntent().getStringExtra("group_name") != null) {
-            mEd_sign.setText(getIntent().getStringExtra("group_name"));
-        }
-        if (getIntent().getStringExtra("group_desc") != null) {
-            mEd_sign.setText(getIntent().getStringExtra("group_desc"));
-        }
-        if (getIntent().getStringExtra("old_nick") != null) {
-            mEd_sign.setText(getIntent().getStringExtra("old_nick"));
-        }
-        if (getIntent().getStringExtra("old_sign") != null) {
-            mEd_sign.setText(getIntent().getStringExtra("old_sign"));
-        }
-
-        mEd_sign.setSelection(mEd_sign.getText().length());
-
-    }
-
-    private void initViewSign(String str, int flag) {
-        initTitle(true, true, str, "", true, "完成");
-        //限制输入的最大长度
-        mEd_sign.setFilters(new InputFilter[] {new MyLengthFilter(flag)});
-        //如果初始有昵称/签名,控制右下字符数
-        int length = mEd_sign.getText().toString().getBytes().length;
-        mTv_count.setText(flag - length + "");
-    }
-
-    private void initViewNick(String str, int flag) {
-        initTitle(true, true, str, "", true, "完成");
-        mEd_sign.setFilters(new InputFilter[] {new MyLengthFilter(flag)});
-        int length = mEd_sign.getText().toString().getBytes().length;
-        mTv_count.setText(flag - length + "");
-
-
-        int width = LinearLayout.LayoutParams.MATCH_PARENT;
-        int height = LinearLayout.LayoutParams.WRAP_CONTENT;
-        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
-        mLl_nickSign.setLayoutParams(params);
-    }
-
-    public static class MyLengthFilter implements InputFilter {
-        private final int mMax;
-
-        public MyLengthFilter(int max) {
-            mMax = max;
-        }
-
-        public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
-                                   int dstart, int dend) {
-            int keep = mMax - (dest.toString().getBytes().length - (dend - dstart));
-            if (keep <= 0) {
-                return "";
-            } else if (keep >= source.toString().getBytes().length) {
-                return null; // keep original
-            } else {
-                return "";
-            }
-        }
-
-        /**
-         * @return the maximum length enforced by this input filter
-         */
-        public int getMax() {
-            return mMax;
-        }
-    }
-}

+ 0 - 104
o2android/app/src/main/java/jiguang/chat/activity/NotFriendSettingActivity.java

@@ -1,104 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.dialog.LoadDialog;
-import jiguang.chat.view.SlipButton;
-
-/**
- * Created by ${chenyn} on 2017/9/26.
- */
-
-public class NotFriendSettingActivity extends BaseActivity implements SlipButton.OnChangedListener{
-    private UserInfo mUserInfo;
-    private SlipButton mBtn_addBlackList;
-    private String mUserName;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_not_friend_setting);
-
-        mBtn_addBlackList = (SlipButton) findViewById(R.id.btn_addBlackList);
-        mUserName = getIntent().getStringExtra("notFriendUserName");
-        mBtn_addBlackList.setOnChangedListener(R.id.btn_addBlackList, this);
-        JMessageClient.getUserInfo(mUserName, new GetUserInfoCallback() {
-            @Override
-            public void gotResult(int i, String s, UserInfo userInfo) {
-                if (i == 0) {
-                    mUserInfo = userInfo;
-                    mBtn_addBlackList.setChecked(userInfo.getBlacklist() == 1);
-                }
-            }
-        });
-    }
-
-    public void returnBtn(View view) {
-        finish();
-    }
-
-    public void sendBusinessCard(View view) {
-        //发送此人的名片
-        Intent businessIntent = new Intent(NotFriendSettingActivity.this, ForwardMsgActivity.class);
-        businessIntent.setFlags(1);
-        businessIntent.putExtra("userName", mUserInfo.getUserName());
-        businessIntent.putExtra("appKey", mUserInfo.getAppKey());
-        if (mUserInfo.getAvatarFile() != null) {
-            businessIntent.putExtra("avatar", mUserInfo.getAvatarFile().getAbsolutePath());
-        }
-        startActivity(businessIntent);
-    }
-
-    @Override
-    public void onChanged(int id, boolean checkState) {
-        switch (id) {
-            case R.id.btn_addBlackList:
-                final LoadDialog dialog = new LoadDialog(NotFriendSettingActivity.this, false, "正在设置");
-                dialog.show();
-                List<String> name = new ArrayList<>();
-                name.add(mUserName);
-                if (checkState) {
-                    JMessageClient.addUsersToBlacklist(name, new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            dialog.dismiss();
-                            if (responseCode == 0) {
-                                ToastUtil.shortToast(NotFriendSettingActivity.this, "添加成功");
-                            } else {
-                                mBtn_addBlackList.setChecked(false);
-                                ToastUtil.shortToast(NotFriendSettingActivity.this, "添加失败" + responseMessage);
-                            }
-                        }
-                    });
-                } else {
-                    JMessageClient.delUsersFromBlacklist(name, new BasicCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage) {
-                            dialog.dismiss();
-                            if (responseCode == 0) {
-                                ToastUtil.shortToast(NotFriendSettingActivity.this, "移除成功");
-                            } else {
-                                mBtn_addBlackList.setChecked(true);
-                                ToastUtil.shortToast(NotFriendSettingActivity.this, "移除失败" + responseMessage);
-                            }
-                        }
-                    });
-                }
-                break;
-            default:
-                break;
-        }
-    }
-}

+ 0 - 206
o2android/app/src/main/java/jiguang/chat/activity/Person2CodeActivity.java

@@ -1,206 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.os.Bundle;
-import android.os.Environment;
-import android.provider.MediaStore;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.google.gson.Gson;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.UUID;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import jiguang.chat.model.User;
-import jiguang.chat.model.UserModel;
-import jiguang.chat.pickerimage.utils.AttachmentStore;
-import jiguang.chat.pickerimage.utils.StorageUtil;
-
-/**
- * Created by ${chenyn} on 2017/8/16.
- */
-
-public class Person2CodeActivity extends BaseActivity {
-
-    private static final String SD_PATH = "/sdcard/dskqxt/pic/";
-    private static final String IN_PATH = "/dskqxt/pic/";
-
-    @BindView(R.id.ll_back)
-    LinearLayout llBack;
-    @BindView(R.id.iv_avatar)
-    ImageView ivAvatar;
-    @BindView(R.id.tv_userName)
-    TextView tvUserName;
-    @BindView(R.id.iv_erWeiMa)
-    ImageView ivErWeiMa;
-    @BindView(R.id.iv_save)
-    ImageView ivSave;
-    @BindView(R.id.ll_copy)
-    LinearLayout llCopy;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_person2code);
-        ButterKnife.bind(this);
-
-        initData();
-    }
-
-    private void initData() {
-        Intent intent = getIntent();
-
-        if (intent.getStringExtra("avatar") != null) {
-            ivAvatar.setImageBitmap(BitmapFactory.decodeFile(intent.getStringExtra("avatar")));
-        }
-        //根据用户名和appkey生成二维码bitmap返回
-        String appKey = intent.getStringExtra("appkey");
-        String userName = intent.getStringExtra("username");
-        String platform = "a";
-        tvUserName.setText("用户名: " + userName);
-        Gson gson = new Gson();
-        User user = new User(appKey, userName, platform);
-
-        //生成json然后根据json生成二维码
-        //json格式 {"type":"user","user":{"appkey":"4f7aef34fb361292c566a1cd","platform":"a","username":"nnnn"}}
-        UserModel<User> userModel = new UserModel<>("user", user);
-        String toErWeiMa = gson.toJson(userModel);
-
-        Bitmap bitmap = null;
-        try {
-//            bitmap = EncodingHandler.create2Code(toErWeiMa, 600);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        ivErWeiMa.setImageBitmap(bitmap);
-        ivSave.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                //保存二维码的底部弹窗
-                final Dialog photoDialog = new Dialog(Person2CodeActivity.this, R.style.jmui_default_dialog_style);
-                LayoutInflater inflater = LayoutInflater.from(Person2CodeActivity.this);
-                View view = inflater.inflate(R.layout.save_erweima, null);
-                photoDialog.setContentView(view);
-                Window window = photoDialog.getWindow();
-                window.setWindowAnimations(R.style.mystyle); // 添加动画
-                window.setGravity(Gravity.BOTTOM);
-                window.setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
-                photoDialog.show();
-                photoDialog.setCanceledOnTouchOutside(true);
-                Button savePhoto = (Button) view.findViewById(R.id.btn_save);
-                Button cancel = (Button) view.findViewById(R.id.btn_cancel);
-
-                View.OnClickListener listener = new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        if (v.getId() == R.id.btn_save) {
-                            //截屏dialog并保存到手机
-                            String path = screenShotView(llCopy);
-                            savePicture(path);
-                            photoDialog.dismiss();
-
-                        } else {
-                            photoDialog.cancel();
-                        }
-                    }
-                };
-                savePhoto.setOnClickListener(listener);
-                cancel.setOnClickListener(listener);
-            }
-        });
-
-        llBack.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                finish();
-            }
-        });
-    }
-
-    private String screenShotView(View view) {
-        Bitmap temBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
-        Canvas canvas = new Canvas(temBitmap);
-        view.draw(canvas);
-
-        return saveBitmap(Person2CodeActivity.this, temBitmap);
-    }
-
-
-    public static String saveBitmap(Context context, Bitmap mBitmap) {
-        String savePath;
-        File filePic;
-        if (Environment.getExternalStorageState().equals(
-                Environment.MEDIA_MOUNTED)) {
-            savePath = SD_PATH;
-        } else {
-            savePath = context.getApplicationContext().getFilesDir()
-                    .getAbsolutePath()
-                    + IN_PATH;
-        }
-        try {
-            filePic = new File(savePath + generateFileName() + ".jpg");
-            if (!filePic.exists()) {
-                filePic.getParentFile().mkdirs();
-                filePic.createNewFile();
-            }
-            FileOutputStream fos = new FileOutputStream(filePic);
-            mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
-            fos.flush();
-            fos.close();
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-
-        return filePic.getAbsolutePath();
-    }
-
-    private static String generateFileName() {
-        return UUID.randomUUID().toString();
-    }
-
-    public void savePicture(String path) {
-        if (path == null) {
-            return;
-        }
-
-        String picPath = StorageUtil.getSystemImagePath();
-        String dstPath = picPath + path;
-        if (AttachmentStore.copy(path, dstPath) != -1) {
-            try {
-                ContentValues values = new ContentValues(2);
-                values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
-                values.put(MediaStore.Images.Media.DATA, dstPath);
-                getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
-                Toast.makeText(Person2CodeActivity.this, getString(R.string.picture_save_to), Toast.LENGTH_LONG).show();
-            } catch (Exception e) {
-                Toast.makeText(Person2CodeActivity.this, getString(R.string.picture_save_fail), Toast.LENGTH_LONG).show();
-            }
-        } else {
-            Toast.makeText(Person2CodeActivity.this, getString(R.string.picture_save_fail), Toast.LENGTH_LONG).show();
-        }
-    }
-
-
-}

+ 0 - 328
o2android/app/src/main/java/jiguang/chat/activity/PersonalActivity.java

@@ -1,328 +0,0 @@
-package jiguang.chat.activity;
-
-import android.Manifest;
-import android.app.Dialog;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.support.v4.content.ContextCompat;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.bigkoo.pickerview.TimePickerView;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ThreadUtil;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.citychoose.view.SelectAddressDialog;
-import jiguang.chat.utils.citychoose.view.myinterface.SelectAddressInterface;
-import jiguang.chat.utils.photochoose.ChoosePhoto;
-import jiguang.chat.utils.photochoose.PhotoUtils;
-
-/**
- * Created by ${chenyn} on 2017/2/23.
- */
-
-public class PersonalActivity extends BaseActivity implements SelectAddressInterface, View.OnClickListener {
-
-    public static final int SIGN = 1;
-    public static final int FLAGS_SIGN = 2;
-    public static final String SIGN_KEY = "sign_key";
-
-    public static final int NICK_NAME = 4;
-    public static final int FLAGS_NICK = 3;
-    public static final String NICK_NAME_KEY = "nick_name_key";
-
-    private RelativeLayout mRl_cityChoose;
-    private TextView mTv_city;
-    private SelectAddressDialog dialog;
-    private RelativeLayout mRl_gender;
-    private RelativeLayout mRl_birthday;
-
-    private TextView mTv_birthday;
-    private TextView mTv_gender;
-    private RelativeLayout mSign;
-    private TextView mTv_sign;
-    private RelativeLayout mRl_nickName;
-
-
-    Intent intent;
-    private TextView mTv_nickName;
-    private ImageView mIv_photo;
-    private ChoosePhoto mChoosePhoto;
-    private UserInfo mMyInfo;
-    private TextView mTv_userName;
-    private RelativeLayout mRl_zxing;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_personal);
-
-//        Window window = this.getWindow();
-//        //取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏
-//        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
-//        //需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色
-//        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
-//        //设置状态栏颜色
-//        window.setStatusBarColor(getResources().getColor(R.color.line_normal));
-
-        initView();
-        initListener();
-        initData();
-    }
-
-    private void initData() {
-        final Dialog dialog = DialogCreator.createLoadingDialog(PersonalActivity.this,
-                PersonalActivity.this.getString(R.string.jmui_loading));
-        dialog.show();
-        mMyInfo = JMessageClient.getMyInfo();
-        if (mMyInfo != null) {
-            mTv_nickName.setText(mMyInfo.getNickname());
-            SharePreferenceManager.setRegisterUsername(mMyInfo.getNickname());
-            mTv_userName.setText("用户名:" + mMyInfo.getUserName());
-            mTv_sign.setText(mMyInfo.getSignature());
-            UserInfo.Gender gender = mMyInfo.getGender();
-            if (gender != null) {
-                if (gender.equals(UserInfo.Gender.male)) {
-                    mTv_gender.setText("男");
-                } else if (gender.equals(UserInfo.Gender.female)) {
-                    mTv_gender.setText("女");
-                } else {
-                    mTv_gender.setText("保密");
-                }
-            }
-            long birthday = mMyInfo.getBirthday();
-            if (birthday == 0) {
-                mTv_birthday.setText("");
-            } else {
-                Date date = new Date(mMyInfo.getBirthday());
-                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-                mTv_birthday.setText(format.format(date));
-            }
-            mTv_city.setText(mMyInfo.getAddress());
-            mMyInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                @Override
-                public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                    if (responseCode == 0) {
-                        mIv_photo.setImageBitmap(avatarBitmap);
-                    } else {
-                        mIv_photo.setImageResource(R.drawable.rc_default_portrait);
-                    }
-                }
-            });
-            dialog.dismiss();
-        }
-    }
-
-    private void initListener() {
-        mRl_cityChoose.setOnClickListener(this);
-        mRl_birthday.setOnClickListener(this);
-        mRl_gender.setOnClickListener(this);
-        mSign.setOnClickListener(this);
-        mRl_nickName.setOnClickListener(this);
-        mIv_photo.setOnClickListener(this);
-        mRl_zxing.setOnClickListener(this);
-    }
-
-    private void initView() {
-        initTitle(true, true, "个人信息", "", false, "");
-        mRl_cityChoose = (RelativeLayout) findViewById(R.id.rl_cityChoose);
-        mTv_city = (TextView) findViewById(R.id.tv_city);
-        mRl_gender = (RelativeLayout) findViewById(R.id.rl_gender);
-        mRl_birthday = (RelativeLayout) findViewById(R.id.rl_birthday);
-        mTv_birthday = (TextView) findViewById(R.id.tv_birthday);
-        mTv_gender = (TextView) findViewById(R.id.tv_gender);
-        mSign = (RelativeLayout) findViewById(R.id.sign);
-        mTv_sign = (TextView) findViewById(R.id.tv_sign);
-        mRl_nickName = (RelativeLayout) findViewById(R.id.rl_nickName);
-        mTv_nickName = (TextView) findViewById(R.id.tv_nickName);
-        mIv_photo = (ImageView) findViewById(R.id.iv_photo);
-        mTv_userName = (TextView) findViewById(R.id.tv_userName);
-        mRl_zxing = (RelativeLayout) findViewById(R.id.rl_zxing);
-
-        mChoosePhoto = new ChoosePhoto();
-        mChoosePhoto.setPortraitChangeListener(PersonalActivity.this, mIv_photo, 2);
-
-    }
-
-    @Override
-    public void setAreaString(String area) {
-        mTv_city.setText(area);
-    }
-
-    @Override
-    public void setTime(String time) {
-    }
-
-    @Override
-    public void setGender(String gender) {
-        mTv_gender.setText(gender);
-    }
-
-    @Override
-    public void onClick(View v) {
-        intent = new Intent(PersonalActivity.this, NickSignActivity.class);
-        switch (v.getId()) {
-            case R.id.iv_photo:
-                //头像
-                if ((ContextCompat.checkSelfPermission(PersonalActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) ||
-                        (ContextCompat.checkSelfPermission(PersonalActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
-                    Toast.makeText(PersonalActivity.this, "请在应用管理中打开“读写存储”和“相机”访问权限!", Toast.LENGTH_SHORT).show();
-                }
-                mChoosePhoto.setInfo(PersonalActivity.this, true);
-                mChoosePhoto.showPhotoDialog(PersonalActivity.this);
-                break;
-            case R.id.rl_nickName:
-                //昵称
-                intent.setFlags(FLAGS_NICK);
-                intent.putExtra("old_nick", mMyInfo.getNickname());
-                startActivityForResult(intent, NICK_NAME);
-                break;
-            case R.id.sign:
-                //签名
-                intent.setFlags(FLAGS_SIGN);
-                intent.putExtra("old_sign", mMyInfo.getSignature());
-                startActivityForResult(intent, SIGN);
-                break;
-            case R.id.rl_gender:
-                //弹出性别选择器
-                dialog = new SelectAddressDialog(PersonalActivity.this);
-                dialog.showGenderDialog(PersonalActivity.this, mMyInfo);
-                break;
-            case R.id.rl_birthday:
-                //弹出时间选择器选择生日
-                TimePickerView timePickerView = new TimePickerView.Builder(PersonalActivity.this, new TimePickerView.OnTimeSelectListener() {
-                    @Override
-                    public void onTimeSelect(final Date date, View v) {
-                        mMyInfo.setBirthday(date.getTime());
-                        JMessageClient.updateMyInfo(UserInfo.Field.birthday, mMyInfo, new BasicCallback() {
-                            @Override
-                            public void gotResult(int responseCode, String responseMessage) {
-                                if (responseCode == 0) {
-                                    mTv_birthday.setText(getDataTime(date));
-                                    Toast.makeText(PersonalActivity.this, "更新成功", Toast.LENGTH_SHORT).show();
-                                } else {
-                                    Toast.makeText(PersonalActivity.this, "更新失败", Toast.LENGTH_SHORT).show();
-                                }
-                            }
-                        });
-                    }
-                })
-                        .setType(TimePickerView.Type.YEAR_MONTH_DAY)
-                        .setCancelText("取消")
-                        .setSubmitText("确定")
-                        .setContentSize(20)//滚轮文字大小
-                        .setTitleSize(20)//标题文字大小
-                        .setOutSideCancelable(true)
-                        .isCyclic(true)
-                        .setTextColorCenter(Color.BLACK)//设置选中项的颜色
-                        .setSubmitColor(Color.GRAY)//确定按钮文字颜色
-                        .setCancelColor(Color.GRAY)//取消按钮文字颜色
-                        .isCenterLabel(false)
-                        .build();
-                timePickerView.show();
-//                dialog = new SelectAddressDialog(PersonalActivity.this);
-//                dialog.showDateDialog(PersonalActivity.this, mMyInfo);
-                break;
-            case R.id.rl_cityChoose:
-                //点击选择省市
-                dialog = new SelectAddressDialog(PersonalActivity.this,
-                        PersonalActivity.this, SelectAddressDialog.STYLE_THREE, null, mMyInfo);
-                dialog.showDialog();
-                break;
-            case R.id.rl_zxing:
-                //二维码
-                Intent intent = new Intent(PersonalActivity.this, Person2CodeActivity.class);
-                intent.putExtra("appkey", mMyInfo.getAppKey());
-                intent.putExtra("username", mMyInfo.getUserName());
-                if (mMyInfo.getAvatarFile() != null) {
-                    intent.putExtra("avatar", mMyInfo.getAvatarFile().getAbsolutePath());
-                }
-                startActivity(intent);
-                break;
-            default:
-                break;
-        }
-    }
-
-    @Override
-    protected void onActivityResult(final int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            Bundle bundle = data.getExtras();
-            switch (resultCode) {
-                case SIGN:
-                    final String sign = bundle.getString(SIGN_KEY);
-                    ThreadUtil.runInThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            mMyInfo.setSignature(sign);
-                            JMessageClient.updateMyInfo(UserInfo.Field.signature, mMyInfo, new BasicCallback() {
-                                @Override
-                                public void gotResult(int responseCode, String responseMessage) {
-                                    if (responseCode == 0) {
-                                        mTv_sign.setText(sign);
-                                        ToastUtil.shortToast(PersonalActivity.this, "更新成功");
-                                    } else {
-                                        ToastUtil.shortToast(PersonalActivity.this, "更新失败");
-                                    }
-                                }
-                            });
-                        }
-                    });
-                    break;
-                case NICK_NAME:
-                    final String nick = bundle.getString(NICK_NAME_KEY);
-                    ThreadUtil.runInThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            mMyInfo.setNickname(nick);
-                            JMessageClient.updateMyInfo(UserInfo.Field.nickname, mMyInfo, new BasicCallback() {
-                                @Override
-                                public void gotResult(int responseCode, String responseMessage) {
-                                    if (responseCode == 0) {
-                                        mTv_nickName.setText(nick);
-                                        ToastUtil.shortToast(PersonalActivity.this, "更新成功");
-                                    } else {
-                                        ToastUtil.shortToast(PersonalActivity.this, "更新失败,请正确输入");
-                                    }
-                                }
-                            });
-                        }
-                    });
-                    break;
-                default:
-                    break;
-            }
-        }
-        switch (requestCode) {
-            case PhotoUtils.INTENT_CROP:
-            case PhotoUtils.INTENT_TAKE:
-            case PhotoUtils.INTENT_SELECT:
-                mChoosePhoto.photoUtils.onActivityResult(PersonalActivity.this, requestCode, resultCode, data);
-                break;
-        }
-    }
-
-    public String getDataTime(Date date) {
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-        return format.format(date);
-    }
-
-}

+ 0 - 66
o2android/app/src/main/java/jiguang/chat/activity/PlayVideoActivity.java

@@ -1,66 +0,0 @@
-package jiguang.chat.activity;
-
-
-import android.os.Bundle;
-import android.view.View;
-import android.widget.MediaController;
-import android.widget.VideoView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.util.ArrayList;
-
-
-public class PlayVideoActivity extends BaseActivity {
-
-    private VideoView mPlayVideoVV;
-    private MediaController mController;
-    private int mCurrentPos;
-    private ArrayList<String> mPathList;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_play_video);
-        mPlayVideoVV = (VideoView) findViewById(R.id.play_video_vv);
-        mController = new MediaController(this);
-        String path = getIntent().getStringExtra("videoPath");
-        mPathList = getIntent().getStringArrayListExtra("videoPathList");
-        mCurrentPos = mPathList.indexOf(path);
-        File file = new File(path);
-        if (file.exists() && file.isFile()) {
-            mPlayVideoVV.setVideoPath(path);
-            mPlayVideoVV.setMediaController(mController);
-            mController.setMediaPlayer(mPlayVideoVV);
-            mPlayVideoVV.start();
-            mController.setPrevNextListeners(new View.OnClickListener() {
-                @Override
-                public void onClick(View view) {
-                    int nextPos;
-                    if (mCurrentPos + 1 == mPathList.size()) {
-                        nextPos = 0;
-                    } else {
-                        nextPos = mCurrentPos + 1;
-                    }
-                    mPlayVideoVV.setVideoPath(mPathList.get(nextPos));
-                    mPlayVideoVV.start();
-                    mCurrentPos = nextPos;
-                }
-            }, new View.OnClickListener() {
-                @Override
-                public void onClick(View view) {
-                    int prevPos;
-                    if (mCurrentPos != 0) {
-                        prevPos = mCurrentPos - 1;
-                    } else {
-                        prevPos = mPathList.size() - 1;
-                    }
-                    mPlayVideoVV.setVideoPath(mPathList.get(prevPos));
-                    mPlayVideoVV.start();
-                    mCurrentPos = prevPos;
-                }
-            });
-        }
-    }
-}

+ 0 - 81
o2android/app/src/main/java/jiguang/chat/activity/ResetPasswordActivity.java

@@ -1,81 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.ProgressDialog;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.utils.CommonUtils;
-import jiguang.chat.utils.ToastUtil;
-
-public class ResetPasswordActivity extends BaseActivity {
-
-    private EditText mOld_password;
-    private EditText mNew_password;
-    private EditText mRe_newPassword;
-    private Button mBtn_sure;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_reset_password);
-
-        initView();
-        initData();
-
-    }
-
-    private void initView() {
-        initTitle(true, true, "修改密码", "", false, "保存");
-        mOld_password = (EditText) findViewById(R.id.old_password);
-        mNew_password = (EditText) findViewById(R.id.new_password);
-        mRe_newPassword = (EditText) findViewById(R.id.re_newPassword);
-        mBtn_sure = (Button) findViewById(R.id.btn_sure);
-    }
-
-    private void initData() {
-        mBtn_sure.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                String oldPsw = mOld_password.getText().toString().trim();
-                String newPsw = mNew_password.getText().toString().trim();
-                String reNewPsw = mRe_newPassword.getText().toString().trim();
-
-                boolean passwordValid = JMessageClient.isCurrentUserPasswordValid(oldPsw);
-                if (passwordValid) {
-                    if (newPsw.equals(reNewPsw)) {
-                        final ProgressDialog dialog = new ProgressDialog(ResetPasswordActivity.this);
-                        dialog.setMessage(getString(R.string.modifying_hint));
-                        dialog.show();
-                        JMessageClient.updateUserPassword(oldPsw, newPsw, new BasicCallback() {
-                            @Override
-                            public void gotResult(int responseCode, String responseMessage) {
-                                dialog.dismiss();
-                                if (responseCode == 0) {
-                                    ToastUtil.shortToast(ResetPasswordActivity.this, "修改成功");
-                                }else {
-                                    ToastUtil.shortToast(ResetPasswordActivity.this, "修改失败, 新密码要在4-128字节之间");
-                                }
-                            }
-                        });
-                    } else {
-                        ToastUtil.shortToast(ResetPasswordActivity.this, "两次输入不相同");
-                    }
-                } else {
-                    ToastUtil.shortToast(ResetPasswordActivity.this, "原密码不正确");
-                }
-            }
-        });
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        CommonUtils.hideKeyboard(this);
-    }
-}

+ 0 - 27
o2android/app/src/main/java/jiguang/chat/activity/ScanResultActivity.java

@@ -1,27 +0,0 @@
-package jiguang.chat.activity;
-
-import android.os.Bundle;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-/**
- * Created by ${chenyn} on 2017/8/16.
- */
-
-public class ScanResultActivity extends BaseActivity {
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_scan_result);
-        initTitle(true,true, "扫描结果", "", false,"");
-
-        TextView tv_scanResult = (TextView) findViewById(R.id.tv_scanResult);
-
-        String result = getIntent().getStringExtra("result");
-
-        tv_scanResult.setText(result);
-    }
-}

+ 0 - 356
o2android/app/src/main/java/jiguang/chat/activity/SearchAtMemberActivity.java

@@ -1,356 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.text.style.ForegroundColorSpan;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.model.SearchResult;
-import jiguang.chat.utils.photochoose.SelectableRoundedImageView;
-import jiguang.chat.utils.pinyin.CharacterParser;
-import jiguang.chat.utils.query.TextSearcher;
-
-/**
- * Created by ${chenyn} on 2017/7/13.
- */
-
-public class SearchAtMemberActivity extends BaseActivity implements View.OnClickListener {
-
-    private NetworkReceiver mReceiver;
-    private TextView mNoConnect;
-    private EditText mEtSearch;
-    private LinearLayout mIvBack;
-    private ImageView mIvClear;
-    private TextView mSearchNoResultsTextView;
-    private ListView mLv_searchGroup;
-    private ArrayList<UserInfo> mFilterFriendList;
-    private AsyncTask mAsyncTask;
-    private String mFilterString;
-    private ThreadPoolExecutor mExecutor;
-    private CharacterParser mCharacterParser;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_search_at_member);
-
-        initReceiver();
-        initView();
-        initData();
-        initListener();
-    }
-
-    private void initData() {
-        mEtSearch.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                mFilterFriendList = new ArrayList<>();
-                mFilterString = s.toString();
-                mAsyncTask = new AsyncTask<String, Void, SearchResult>() {
-
-                    @Override
-                    protected void onPreExecute() {
-                    }
-
-                    @Override
-                    protected SearchResult doInBackground(String... params) {
-                        return filterInfo(mFilterString);
-                    }
-
-                    @Override
-                    protected void onPostExecute(SearchResult searchResult) {
-                        if (searchResult.getFilterStr().equals(mFilterString)) {
-                            List<UserInfo> friendList = searchResult.getFriendList();
-                            for (UserInfo friend : friendList) {
-                                mFilterFriendList.add(friend);
-                            }
-
-                            if (mFilterFriendList.size() == 0) {
-                                if (mFilterString.equals("")) {
-                                    mSearchNoResultsTextView.setVisibility(View.GONE);
-                                } else {
-                                    mSearchNoResultsTextView.setVisibility(View.VISIBLE);
-                                    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_pre));
-                                    SpannableStringBuilder colorFilterStr = new SpannableStringBuilder(mFilterString);
-                                    colorFilterStr.setSpan(new ForegroundColorSpan(Color.parseColor("#2DD0CF")), 0, mFilterString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-                                    spannableStringBuilder.append(colorFilterStr);
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_suffix));
-                                    mSearchNoResultsTextView.setText(spannableStringBuilder);
-                                }
-                            } else {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                            if (mFilterFriendList.size() > 0) {
-                                mLv_searchGroup.setVisibility(View.VISIBLE);
-                                FriendListAdapter friendListAdapter = new FriendListAdapter(mFilterFriendList);
-                                mLv_searchGroup.setAdapter(friendListAdapter);
-                            } else {
-                                mLv_searchGroup.setVisibility(View.GONE);
-                            }
-                        }
-                    }
-                }.executeOnExecutor(mExecutor, s.toString());
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-        mExecutor = new ThreadPoolExecutor(3, 5, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-        mCharacterParser = CharacterParser.getInstance();
-    }
-
-    private SearchResult filterInfo(String filterStr) {
-        SearchResult searchResult = new SearchResult();
-        List<UserInfo> filterFriend = new ArrayList<>();
-
-        if (filterStr.equals("")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr("");
-            result.setFriendList(filterFriend);
-            return result;
-        }
-        if (filterStr.equals("'")) {
-            SearchResult result = new SearchResult();
-            result.setFriendList(filterFriend);
-            return result;
-        }
-
-        //所有好友名单
-        for (UserInfo friendInfo : JGApplication.mSearchAtMember) {
-            //如果好友名 包含 搜索内容 就把这个人的userinfo添加
-            if (TextSearcher.contains(false, friendInfo.getNickname(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getNotename(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getUserName(), filterStr)) {
-                filterFriend.add(friendInfo);
-            }
-        }
-        searchResult.setFilterStr(filterStr);
-        searchResult.setFriendList(filterFriend);
-
-        return searchResult;
-    }
-
-    private class FriendListAdapter extends BaseAdapter {
-        private List<UserInfo> filterFriendList;
-
-        public FriendListAdapter(List<UserInfo> filterFriendList) {
-            this.filterFriendList = filterFriendList;
-        }
-
-        @Override
-        public int getCount() {
-            return filterFriendList.size();
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-
-            final ViewHolder viewHolder;
-            final UserInfo friendInfo = (UserInfo) getItem(position);
-            if (convertView == null) {
-                viewHolder = new ViewHolder();
-                convertView = View.inflate(SearchAtMemberActivity.this, R.layout.item_filter_friend_list, null);
-                viewHolder.portraitImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.item_aiv_friend_image);//头像
-                viewHolder.nameSingleTextView = (TextView) convertView.findViewById(R.id.item_tv_friend_name_single);
-                convertView.setTag(viewHolder);
-            } else {
-                viewHolder = (ViewHolder) convertView.getTag();
-            }
-            if (friendInfo != null) {
-                viewHolder.nameSingleTextView.setVisibility(View.VISIBLE);
-                String noteName = friendInfo.getNotename();
-                String nickName = friendInfo.getNickname();
-                String userName = friendInfo.getUserName();
-                String name = "";
-                if (TextSearcher.contains(false, friendInfo.getNotename(), mFilterString)) {
-                    name = noteName;
-                } else if (TextSearcher.contains(false, friendInfo.getNickname(), mFilterString)) {
-                    name = nickName;
-                } else if (TextSearcher.contains(false, friendInfo.getUserName(), mFilterString)) {
-                    name = userName;
-                }
-                friendInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                        if (responseCode == 0) {
-                            viewHolder.portraitImageView.setImageBitmap(avatarBitmap);
-                        } else {
-                            //没有头像给个默认的
-                            viewHolder.portraitImageView.setImageResource(R.drawable.jmui_head_icon);
-                        }
-                    }
-                });
-                viewHolder.nameSingleTextView.setText(mCharacterParser.getColoredName(mFilterString, name));
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public Object getItem(int position) {
-            if (filterFriendList == null)
-                return null;
-
-            if (position >= filterFriendList.size())
-                return null;
-
-            return filterFriendList.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-    }
-
-    class ViewHolder {
-        SelectableRoundedImageView portraitImageView;
-        TextView nameSingleTextView;
-    }
-
-    private void initView() {
-        mNoConnect = (TextView) findViewById(R.id.no_connect);
-        mEtSearch = (EditText) findViewById(R.id.ac_et_search);
-        mIvBack = (LinearLayout) findViewById(R.id.ac_iv_press_back);
-        mIvClear = (ImageView) findViewById(R.id.iv_clear);
-        mSearchNoResultsTextView = (TextView) findViewById(R.id.ac_tv_search_no_results);
-
-        mIvBack.setOnClickListener(this);
-        mIvClear.setOnClickListener(this);
-
-        mLv_searchGroup = (ListView) findViewById(R.id.lv_searchGroup);
-    }
-
-    private void initReceiver() {
-        mReceiver = new NetworkReceiver();
-        IntentFilter filter = new IntentFilter();
-        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
-        registerReceiver(mReceiver, filter);
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.ac_iv_press_back:
-                finish();
-                break;
-            case R.id.iv_clear:
-                mEtSearch.setText("");
-                break;
-            default:
-                break;
-        }
-    }
-
-    //监听网络状态的广播
-    private class NetworkReceiver extends BroadcastReceiver {
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (intent != null && intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) {
-                ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-                NetworkInfo activeInfo = manager.getActiveNetworkInfo();
-                if (null == activeInfo) {
-                    mNoConnect.setVisibility(View.VISIBLE);
-                } else {
-                    mNoConnect.setVisibility(View.GONE);
-                }
-            }
-        }
-    }
-
-    private void initListener() {
-        mLv_searchGroup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                Object itemAtPosition = parent.getItemAtPosition(position);
-                if (itemAtPosition instanceof UserInfo) {
-                    UserInfo userInfo = ((UserInfo) itemAtPosition);
-                    Intent intent = new Intent();
-
-                    String atName = userInfo.getNotename();
-                    if (TextUtils.isEmpty(atName)) {
-                        atName = userInfo.getNickname();
-                        if (TextUtils.isEmpty(atName)) {
-                            atName = userInfo.getUserName();
-                        }
-                    }
-                    intent.putExtra(JGApplication.SEARCH_AT_MEMBER_NAME, atName);
-                    intent.putExtra(JGApplication.SEARCH_AT_MEMBER_USERNAME, userInfo.getUserName());
-                    intent.putExtra(JGApplication.SEARCH_AT_APPKEY, userInfo.getAppKey());
-                    setResult(JGApplication.SEARCH_AT_MEMBER_CODE, intent);
-                    finish();
-                }
-            }
-        });
-    }
-
-    @Override
-    public void onDestroy() {
-        if (mAsyncTask != null) {
-            mAsyncTask.cancel(true);
-            mAsyncTask = null;
-        }
-        unregisterReceiver(mReceiver);
-        super.onDestroy();
-    }
-
-    @Override
-    protected void onPause() {
-        hintKbTwo();
-        super.onPause();
-    }
-
-    private void hintKbTwo() {
-        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
-        if (imm.isActive() && getCurrentFocus() != null) {
-            if (getCurrentFocus().getWindowToken() != null) {
-                imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
-            }
-        }
-    }
-
-
-}

+ 0 - 779
o2android/app/src/main/java/jiguang/chat/activity/SearchContactsActivity.java

@@ -1,779 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.text.style.ForegroundColorSpan;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.ScrollView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.content.TextContent;
-import cn.jpush.im.android.api.enums.ConversationType;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.api.options.MessageSendingOptions;
-import cn.jpush.im.android.eventbus.EventBus;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.ActivityController;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.model.SearchResult;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.photochoose.SelectableRoundedImageView;
-import jiguang.chat.utils.pinyin.CharacterParser;
-import jiguang.chat.utils.query.TextSearcher;
-
-/**
- * Created by ${chenyn} on 2017/4/1.
- */
-
-public class SearchContactsActivity extends BaseActivity {
-
-    private EditText mSearchEditText;
-    private LinearLayout mFriendListLinearLayout;
-    private ListView mFriendListView;
-    private LinearLayout mMoreFriendLinearLayout;
-    private LinearLayout mGroupListLinearLayout;
-    private ListView mGroupsListView;
-    private LinearLayout mMoreGroupsLinearLayout;
-    private TextView mSearchNoResultsTextView;
-    private LinearLayout mPressBackImageView;
-
-    private CharacterParser mCharacterParser;
-    private NetworkReceiver mReceiver;
-
-    private String mFilterString;
-    private AsyncTask mAsyncTask;
-    private ThreadPoolExecutor mExecutor;
-    private ArrayList<UserInfo> mFilterFriendList;
-    private ArrayList<GroupInfo> mFilterGroupList;
-    private ScrollView mSearchView;
-    private TextView mNoConnect;
-    private Map<String, String> user = new HashMap<>();
-    private Map<Long, String> group = new HashMap<>();
-    private List<UserInfo> allUser = new ArrayList<>();
-    private Dialog mDialog;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_search_contacts);
-        ActivityController.addActivity(this);
-
-        initView();
-        initData();
-
-        initReceiver();
-    }
-
-
-    private void initReceiver() {
-        mReceiver = new NetworkReceiver();
-        IntentFilter filter = new IntentFilter();
-        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
-        registerReceiver(mReceiver, filter);
-    }
-
-    //监听网络状态的广播
-    private class NetworkReceiver extends BroadcastReceiver {
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (intent != null && intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) {
-                ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-                NetworkInfo activeInfo = manager.getActiveNetworkInfo();
-                if (null == activeInfo) {
-                    mNoConnect.setVisibility(View.VISIBLE);
-                    mSearchView.setVisibility(View.GONE);
-                } else {
-                    mNoConnect.setVisibility(View.GONE);
-                    mSearchView.setVisibility(View.VISIBLE);
-                }
-            }
-        }
-
-    }
-
-    private void initView() {
-        mSearchEditText = (EditText) findViewById(R.id.ac_et_search);
-        mFriendListLinearLayout = (LinearLayout) findViewById(R.id.ac_ll_filtered_friend_list);
-        mFriendListView = (ListView) findViewById(R.id.ac_lv_filtered_friends_list);
-        mMoreFriendLinearLayout = (LinearLayout) findViewById(R.id.ac_ll_more_friends);
-        mGroupListLinearLayout = (LinearLayout) findViewById(R.id.ac_ll_filtered_group_list);
-        mGroupsListView = (ListView) findViewById(R.id.ac_lv_filtered_groups_list);
-        mMoreGroupsLinearLayout = (LinearLayout) findViewById(R.id.ac_ll_more_groups);
-        mSearchNoResultsTextView = (TextView) findViewById(R.id.ac_tv_search_no_results);
-        mPressBackImageView = (LinearLayout) findViewById(R.id.ac_iv_press_back);
-        mSearchView = (ScrollView) findViewById(R.id.search_view);
-        mNoConnect = (TextView) findViewById(R.id.no_connect);
-
-        initListener();
-
-        mSearchEditText.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                mFilterFriendList = new ArrayList<>();
-                mFilterGroupList = new ArrayList<>();
-                mFilterString = s.toString();
-                mAsyncTask = new AsyncTask<String, Void, SearchResult>() {
-                    @Override
-                    protected void onPreExecute() {
-                    }
-
-                    @Override
-                    protected SearchResult doInBackground(String... params) {
-                        return filterInfo(mFilterString);
-                    }
-
-                    @Override
-                    protected void onPostExecute(SearchResult searchResult) {
-                        if (searchResult.getFilterStr().equals(mFilterString)) {
-                            List<UserInfo> friendList = searchResult.getFriendList();
-                            for (UserInfo friend : friendList) {
-                                mFilterFriendList.add(friend);
-                            }
-
-                            List<GroupInfo> groupList = searchResult.getGroupList();
-                            for (GroupInfo group : groupList) {
-                                mFilterGroupList.add(group);
-                            }
-
-                            if (mFilterFriendList.size() == 0 && mFilterGroupList.size() == 0) {
-                                if (mFilterString.equals("")) {
-                                    mSearchNoResultsTextView.setVisibility(View.GONE);
-                                } else {
-                                    mSearchNoResultsTextView.setVisibility(View.VISIBLE);
-                                    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_pre));
-                                    SpannableStringBuilder colorFilterStr = new SpannableStringBuilder(mFilterString);
-                                    colorFilterStr.setSpan(new ForegroundColorSpan(Color.parseColor("#2DD0CF")), 0, mFilterString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-                                    spannableStringBuilder.append(colorFilterStr);
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_suffix));
-                                    mSearchNoResultsTextView.setText(spannableStringBuilder);
-                                }
-                            } else {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                            if (mFilterFriendList.size() > 0) {
-                                mFriendListLinearLayout.setVisibility(View.VISIBLE);
-                                FriendListAdapter friendListAdapter = new FriendListAdapter(mFilterFriendList, mFilterString);
-                                mFriendListView.setAdapter(friendListAdapter);
-                                if (mFilterFriendList.size() > 3) {
-                                    mMoreFriendLinearLayout.setVisibility(View.VISIBLE);
-                                } else {
-                                    mMoreFriendLinearLayout.setVisibility(View.GONE);
-                                }
-                            } else {
-                                mFriendListLinearLayout.setVisibility(View.GONE);
-                            }
-
-                            if (mFilterGroupList.size() > 0) {
-                                mGroupListLinearLayout.setVisibility(View.VISIBLE);
-                                SearchGroupListAdapter groupListAdapter = new SearchGroupListAdapter(mFilterGroupList);
-                                mGroupsListView.setAdapter(groupListAdapter);
-                                if (mFilterGroupList.size() > 3) {
-                                    mMoreGroupsLinearLayout.setVisibility(View.VISIBLE);
-                                } else {
-                                    mMoreGroupsLinearLayout.setVisibility(View.GONE);
-                                }
-                            } else {
-                                mGroupListLinearLayout.setVisibility(View.GONE);
-                            }
-                        }
-
-                    }
-                }.executeOnExecutor(mExecutor, s.toString());
-
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-
-
-        mSearchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
-            @Override
-            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-                if (actionId == EditorInfo.IME_ACTION_SEARCH) {
-                    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
-                    inputMethodManager.hideSoftInputFromWindow(mSearchEditText.getWindowToken(), 0);
-                    filterInfo(String.valueOf(mSearchEditText.getText()));
-                    return true;
-                }
-                return false;
-            }
-        });
-
-        mSearchEditText.setOnTouchListener(new View.OnTouchListener() {
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                final int DRAWABLE_RIGHT = 2;
-                if (event.getAction() == MotionEvent.ACTION_UP) {
-                    if (event.getRawX() >= (mSearchEditText.getRight() - 2 * mSearchEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
-                        filterInfo("");
-                        mSearchEditText.setText("");
-                        mSearchEditText.clearFocus();
-                        return true;
-                    }
-                }
-                return false;
-            }
-        });
-
-        mPressBackImageView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                finish();
-            }
-        });
-
-    }
-
-    private void initListener() {
-        //转发消息
-        if (getIntent().getFlags() == 1) {
-            mFriendListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    Object selectObject = parent.getItemAtPosition(position);
-                    if (selectObject instanceof UserInfo) {
-                        UserInfo userInfo = (UserInfo) selectObject;
-                        DialogCreator.createForwardMsg(SearchContactsActivity.this, mWidth, true, null, null, user.get(userInfo.getUserName()), userInfo);
-                    }
-                }
-            });
-            mGroupsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    Object selectObject = parent.getItemAtPosition(position);
-                    if (selectObject instanceof GroupInfo) {
-                        GroupInfo groupInfo = (GroupInfo) selectObject;
-                        DialogCreator.createForwardMsg(SearchContactsActivity.this, mWidth, false, null, groupInfo, group.get(groupInfo.getGroupID()), null);
-                    }
-                }
-            });
-            //发送名片
-        } else if (getIntent().getFlags() == 2) {
-            mFriendListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    Object selectObject = parent.getItemAtPosition(position);
-                    if (selectObject instanceof UserInfo) {
-                        final UserInfo userInfo = (UserInfo) selectObject;
-                        Intent intent = getIntent();
-                        setSearchContactsBusiness(SearchContactsActivity.this, mWidth, intent, null, userInfo);
-                    }
-                }
-            });
-            mGroupsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    Object selectObject = parent.getItemAtPosition(position);
-                    if (selectObject instanceof GroupInfo) {
-                        final GroupInfo groupInfo = (GroupInfo) selectObject;
-                        Intent intent = getIntent();
-                        setSearchContactsBusiness(SearchContactsActivity.this, mWidth, intent, groupInfo, null);
-                    }
-                }
-            });
-        } else {
-            mFriendListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    Object selectObject = parent.getItemAtPosition(position);
-                    if (selectObject instanceof UserInfo) {
-//                        Intent intent = new Intent(SearchContactsActivity.this, FriendInfoActivity.class);
-                        UserInfo friend = (UserInfo) selectObject;
-//                        intent.putExtra(JGApplication.TARGET_ID, friend.getUserName());
-//                        intent.putExtra(JGApplication.TARGET_APP_KEY, friend.getAppKey());
-//                        intent.putExtra("fromSearch", true);
-//                        startActivity(intent);
-
-                        //
-                        Intent intent = new Intent();
-                        intent.setAction("o2_person");
-                        intent.setClassName("net.zoneland.x.bpm.mobile.v1.zoneXBPM", "net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.person.PersonActivity");
-                        intent.putExtra("name", friend.getUserName());
-                        startActivity(intent);
-
-                        finish();
-                    }
-                }
-            });
-            mGroupsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    Object selectObject = parent.getItemAtPosition(position);
-                    if (selectObject instanceof GroupInfo) {
-                        Intent intent = new Intent(SearchContactsActivity.this, ChatActivity.class);
-                        GroupInfo groupInfo = (GroupInfo) selectObject;
-                        long groupID = groupInfo.getGroupID();
-
-                        Conversation conversation = JMessageClient.getGroupConversation(groupID);
-                        if (conversation == null) {
-                            conversation = Conversation.createGroupConversation(groupID);
-                            EventBus.getDefault().post(new Event.Builder()
-                                    .setType(EventType.createConversation)
-                                    .setConversation(conversation)
-                                    .build());
-                        }
-                        intent.putExtra(JGApplication.GROUP_ID, groupID);
-                        intent.putExtra(JGApplication.CONV_TITLE, conversation.getTitle());
-                        startActivity(intent);
-                    }
-                }
-            });
-        }
-
-        //搜索出的好友数量超过三条 点击加载更多
-        mMoreFriendLinearLayout.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(SearchContactsActivity.this, SearchMoreFriendsActivity.class);
-                intent.putExtra("filterString", mFilterString);
-                if (getIntent().getFlags() == 1) {
-                    intent.putExtra("forwardMsg", true);
-                } else if (getIntent().getFlags() == 2) {
-                    intent.putExtra("businessCard", true);
-                    intent.putExtra("userName", getIntent().getStringExtra("userName"));
-                    intent.putExtra("appKey", getIntent().getStringExtra("appKey"));
-                    intent.putExtra("avatar", getIntent().getStringExtra("avatar"));
-                }
-                startActivity(intent);
-            }
-        });
-        //搜索出的群组数量超过三条,点击加载更多
-        mMoreGroupsLinearLayout.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(SearchContactsActivity.this, SearchMoreGroupActivity.class);
-                intent.putExtra("filterString", mFilterString);
-                if (getIntent().getFlags() == 1) {
-                    intent.putExtra("forwardMsg", true);
-                } else if (getIntent().getFlags() == 2) {
-                    intent.putExtra("businessCard", true);
-                    intent.putExtra("userName", getIntent().getStringExtra("userName"));
-                    intent.putExtra("appKey", getIntent().getStringExtra("appKey"));
-                    intent.putExtra("avatar", getIntent().getStringExtra("avatar"));
-                }
-                startActivity(intent);
-            }
-        });
-    }
-
-    public void setSearchContactsBusiness(final SearchContactsActivity context, int width,
-                                          final Intent intent, final GroupInfo groupInfo, final UserInfo userInfo) {
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                int i = v.getId();
-                if (i == R.id.btn_cancel) {
-                    mDialog.dismiss();
-
-                } else if (i == R.id.btn_sure) {
-                    mDialog.dismiss();
-                    //把名片的userName和appKey通过extra发送给对方
-                    TextContent content = new TextContent("推荐了一张名片");
-                    content.setStringExtra("userName", intent.getStringExtra("userName"));
-                    content.setStringExtra("appKey", intent.getStringExtra("appKey"));
-                    content.setStringExtra("businessCard", "businessCard");
-                    Conversation conversation;
-                    if (userInfo == null) {
-                        conversation = JMessageClient.getGroupConversation(groupInfo.getGroupID());
-                        if (conversation == null) {
-                            conversation = Conversation.createGroupConversation(groupInfo.getGroupID());
-                            EventBus.getDefault().post(new Event.Builder()
-                                    .setType(EventType.createConversation)
-                                    .setConversation(conversation)
-                                    .build());
-                        }
-                    } else {
-                        conversation = JMessageClient.getSingleConversation(userInfo.getUserName(), userInfo.getAppKey());
-                        if (conversation == null) {
-                            conversation = Conversation.createSingleConversation(userInfo.getUserName(), userInfo.getAppKey());
-                            EventBus.getDefault().post(new Event.Builder()
-                                    .setType(EventType.createConversation)
-                                    .setConversation(conversation)
-                                    .build());
-                        }
-                    }
-
-                    Message textMessage = conversation.createSendMessage(content);
-                    MessageSendingOptions options = new MessageSendingOptions();
-                    options.setNeedReadReceipt(false);
-                    JMessageClient.sendMessage(textMessage, options);
-                    textMessage.setOnSendCompleteCallback(new BasicCallback() {
-                        @Override
-                        public void gotResult(int i, String s) {
-                            if (i == 0) {
-                                Toast.makeText(context, "发送成功", Toast.LENGTH_SHORT).show();
-                            } else {
-                                HandleResponseCode.onHandle(context, i, false);
-                            }
-                        }
-                    });
-
-                }
-            }
-        };
-        String name;
-        if (userInfo == null) {
-            name = groupInfo.getGroupName();
-        } else {
-            name = userInfo.getDisplayName();
-        }
-        mDialog = DialogCreator.createBusinessCardDialog(context, listener, name,
-                intent.getStringExtra("userName"), intent.getStringExtra("avatar"));
-        mDialog.getWindow().setLayout((int) (0.8 * width), WindowManager.LayoutParams.WRAP_CONTENT);
-        mDialog.show();
-    }
-
-    private class FriendListAdapter extends BaseAdapter {
-        private List<UserInfo> filterFriendList;
-        private String mFilterString;
-
-        public FriendListAdapter(List<UserInfo> filterFriendList, String filterString) {
-            this.filterFriendList = filterFriendList;
-            this.mFilterString = filterString;
-        }
-
-        @Override
-        public int getCount() {
-            if (filterFriendList != null) {
-                return filterFriendList.size() > 3 ? 3 : filterFriendList.size();
-            }
-            return 0;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-
-            final ViewHolder viewHolder;
-            final UserInfo friendInfo = (UserInfo) getItem(position);
-            if (convertView == null) {
-                viewHolder = new ViewHolder();
-                convertView = View.inflate(SearchContactsActivity.this, R.layout.item_filter_friend_list, null);
-                viewHolder.portraitImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.item_aiv_friend_image);//头像
-                viewHolder.nameSingleTextView = (TextView) convertView.findViewById(R.id.item_tv_friend_name_single);
-                convertView.setTag(viewHolder);
-            } else {
-                viewHolder = (ViewHolder) convertView.getTag();
-            }
-            if (friendInfo != null) {
-                viewHolder.nameSingleTextView.setVisibility(View.VISIBLE);
-                String noteName = friendInfo.getNotename();
-                String nickName = friendInfo.getNickname();
-                String userName = friendInfo.getUserName();
-                String name = "";
-                if (TextSearcher.contains(false, noteName, mFilterString)) {
-                    name = noteName;
-                } else if (TextSearcher.contains(false, nickName, mFilterString)) {
-                    name = nickName;
-                } else if (TextSearcher.contains(false, userName, mFilterString)) {
-                    name = userName;
-                }
-                friendInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                        if (responseCode == 0) {
-                            viewHolder.portraitImageView.setImageBitmap(avatarBitmap);
-                        } else {
-                            //没有头像给个默认的
-                            viewHolder.portraitImageView.setImageResource(R.drawable.jmui_head_icon);
-                        }
-                    }
-                });
-                user.put(userName, name);
-                viewHolder.nameSingleTextView.setText(mCharacterParser.getColoredName(mFilterString, name));
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public Object getItem(int position) {
-            if (filterFriendList == null)
-                return null;
-
-            if (position >= filterFriendList.size())
-                return null;
-
-            return filterFriendList.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-    }
-
-    class ViewHolder {
-        SelectableRoundedImageView portraitImageView;
-        TextView nameSingleTextView;
-    }
-
-    public class SearchGroupListAdapter extends BaseAdapter {
-        private List<GroupInfo> filterGroupInfoList;
-
-        public SearchGroupListAdapter(ArrayList<GroupInfo> filterGroupList) {
-            this.filterGroupInfoList = filterGroupList;
-        }
-
-        @Override
-        public int getCount() {
-            if (filterGroupInfoList != null) {
-                return filterGroupInfoList.size() > 3 ? 3 : filterGroupInfoList.size();
-            }
-            return 0;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            GroupViewHolder viewHolder;
-            GroupInfo groupInfo = (GroupInfo) getItem(position);
-            String groupName;
-            if (convertView == null) {
-                viewHolder = new GroupViewHolder();
-                convertView = View.inflate(SearchContactsActivity.this, R.layout.item_filter_group_list, null);
-                viewHolder.portraitImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.item_iv_group_image);
-                viewHolder.nameSingleTextView = (TextView) convertView.findViewById(R.id.item_tv_group_name_single);
-                convertView.setTag(viewHolder);
-            } else {
-                viewHolder = (GroupViewHolder) convertView.getTag();
-            }
-            if (groupInfo != null) {
-                viewHolder.nameSingleTextView.setVisibility(View.VISIBLE);
-
-                if (TextUtils.isEmpty(groupInfo.getGroupName())) {
-                    //Conversation groupConversation = JMessageClient.getGroupConversation(groupId);
-                    //群组名是null的话,手动拿出5个名字拼接
-                    List<UserInfo> groupMembers = groupInfo.getGroupMembers();
-                    StringBuilder builder = new StringBuilder();
-                    if (groupMembers.size() <= 5) {
-                        groupName = getGroupName(groupMembers, builder);
-                    } else {
-                        List<UserInfo> newGroupMember = groupMembers.subList(0, 5);
-                        groupName = getGroupName(newGroupMember, builder);
-                    }
-                } else {
-                    groupName = groupInfo.getGroupName();
-                }
-                group.put(groupInfo.getGroupID(), groupName);
-                viewHolder.nameSingleTextView.setText(mCharacterParser.getColoredGroupName(mFilterString, groupName));
-
-            } else {
-                viewHolder.nameSingleTextView.setVisibility(View.GONE);
-            }
-            return convertView;
-        }
-
-        @Override
-        public Object getItem(int position) {
-            if (filterGroupInfoList == null)
-                return null;
-
-            if (position >= filterGroupInfoList.size())
-                return null;
-
-            return filterGroupInfoList.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        private String getGroupName(List<UserInfo> groupMembers, StringBuilder builder) {
-            for (UserInfo info : groupMembers) {
-                String noteName = info.getDisplayName();
-                builder.append(noteName);
-                builder.append(",");
-            }
-
-            return builder.substring(0, builder.lastIndexOf(","));
-        }
-    }
-
-    class GroupViewHolder {
-        SelectableRoundedImageView portraitImageView;
-        TextView nameSingleTextView;
-    }
-
-
-    private void initData() {
-        mExecutor = new ThreadPoolExecutor(3, 5, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-        mCharacterParser = CharacterParser.getInstance();
-    }
-
-    private SearchResult filterInfo(String filterStr) {
-        allUser.clear();
-        SearchResult searchResult = new SearchResult();
-        List<GroupInfo> filterGroup = new ArrayList<>();
-        List<UserInfo> filterFriend = new ArrayList<>();
-
-        if (filterStr.equals("")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr("");
-            result.setFriendList(filterFriend);
-            result.setGroupList(filterGroup);
-            return result;
-        }
-        if (filterStr.equals("'")) {
-            SearchResult result = new SearchResult();
-            result.setFriendList(filterFriend);
-            result.setGroupList(filterGroup);
-            return result;
-        }
-
-        //所有的群组
-        List<GroupInfo> mGroupInfoList = JGApplication.mGroupInfoList;
-        String groupName;
-        for (GroupInfo groupInfo : mGroupInfoList) {
-            if (TextUtils.isEmpty(groupInfo.getGroupName())) {
-                //Conversation groupConversation = JMessageClient.getGroupConversation(groupId);
-                //群组名是null的话,手动拿出5个名字拼接
-                List<UserInfo> groupMembers = groupInfo.getGroupMembers();
-                StringBuilder builder = new StringBuilder();
-                if (groupMembers.size() <= 5) {
-                    groupName = getGroupName(groupMembers, builder);
-                } else {
-                    List<UserInfo> newGroupMember = groupMembers.subList(0, 5);
-                    groupName = getGroupName(newGroupMember, builder);
-                }
-            } else {
-                groupName = groupInfo.getGroupName();
-            }
-
-            if (TextSearcher.contains(false, groupName, filterStr)) {
-                //如果群组名中包含输入的字符,就把这个群组的groupinfo加入list
-                filterGroup.add(groupInfo);
-            }
-        }
-
-        //所有的单聊会话非好友名单
-        List<Conversation> conversationList = JMessageClient.getConversationList();
-        for (Conversation conv : conversationList) {
-            if (conv.getType() == ConversationType.single) {
-                UserInfo convUserInfo = (UserInfo) conv.getTargetInfo();
-                if (!convUserInfo.isFriend()) {
-                    allUser.add(convUserInfo);
-                }
-            }
-        }
-
-        //所有好友名单
-        allUser.addAll(JGApplication.mFriendInfoList);
-
-        for (UserInfo friendInfo : allUser) {
-            String userName = friendInfo.getUserName();
-            String noteName = friendInfo.getNotename();
-            String nickName = friendInfo.getNickname();
-            //如果好友名 包含 搜索内容 就把这个人的userinfo添加
-            if (TextSearcher.contains(false, noteName, filterStr) ||
-                    TextSearcher.contains(false, nickName, filterStr) ||
-                    TextSearcher.contains(false, userName, filterStr)) {
-                filterFriend.add(friendInfo);
-            }
-        }
-
-        searchResult.setFilterStr(filterStr);
-        searchResult.setGroupList(filterGroup);
-        searchResult.setFriendList(filterFriend);
-
-        return searchResult;
-    }
-
-    private String getGroupName(List<UserInfo> groupMembers, StringBuilder builder) {
-        for (UserInfo info : groupMembers) {
-            String noteName = info.getDisplayName();
-            builder.append(noteName);
-            builder.append(",");
-        }
-
-        return builder.substring(0, builder.lastIndexOf(","));
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        if (null != this.getCurrentFocus()) {
-            InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
-            return mInputMethodManager.hideSoftInputFromWindow(mSearchEditText.getWindowToken(), 0);
-        }
-        return super.onTouchEvent(event);
-    }
-
-    @Override
-    protected void onResume() {
-        mSearchEditText.requestFocus();
-        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
-        inputMethodManager.showSoftInput(mSearchEditText, 0);
-        super.onResume();
-    }
-
-    @Override
-    protected void onPause() {
-        allUser.clear();
-        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
-        inputMethodManager.hideSoftInputFromWindow(mSearchEditText.getWindowToken(), 0);
-        super.onPause();
-    }
-
-    @Override
-    public void onDestroy() {
-        if (mAsyncTask != null) {
-            mAsyncTask.cancel(true);
-            mAsyncTask = null;
-        }
-        unregisterReceiver(mReceiver);
-        super.onDestroy();
-    }
-}

+ 0 - 184
o2android/app/src/main/java/jiguang/chat/activity/SearchForAddFriendActivity.java

@@ -1,184 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.View;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.model.InfoModel;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.dialog.LoadDialog;
-import jiguang.chat.utils.photochoose.SelectableRoundedImageView;
-
-/**
- * Created by ${chenyn} on 2017/3/13.
- */
-
-public class SearchForAddFriendActivity extends BaseActivity implements View.OnClickListener {
-
-    private EditText mEt_searchUser;
-    private Button mBtn_search;
-    private LinearLayout mSearch_result;
-    private SelectableRoundedImageView mSearch_header;
-    private TextView mSearch_name;
-    private Button mSearch_addBtn;
-    private ImageView mIv_clear;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_search_for_add_friend);
-
-        initView();
-        initListener();
-    }
-
-    private void initListener() {
-        mEt_searchUser.addTextChangedListener(new TextChange());
-        mBtn_search.setOnClickListener(this);
-        mSearch_result.setOnClickListener(this);
-        mSearch_addBtn.setOnClickListener(this);
-        mIv_clear.setOnClickListener(this);
-    }
-
-    private void initView() {
-        mEt_searchUser = (EditText) findViewById(R.id.et_searchUser);
-        mBtn_search = (Button) findViewById(R.id.btn_search);
-        mSearch_result = (LinearLayout) findViewById(R.id.search_result);
-        mSearch_header = (SelectableRoundedImageView) findViewById(R.id.search_header);
-        mSearch_name = (TextView) findViewById(R.id.search_name);
-        mSearch_addBtn = (Button) findViewById(R.id.search_addBtn);
-        mIv_clear = (ImageView) findViewById(R.id.iv_clear);
-        mBtn_search.setEnabled(false);
-        Intent intent = getIntent();
-        if (intent.getFlags() == 2) {
-            initTitle(true, true, "发起单聊", "", false, "");
-            mSearch_addBtn.setVisibility(View.GONE);
-        } else {
-            initTitle(true, true, "添加好友", "", false, "");
-        }
-    }
-
-    @Override
-    public void onClick(View v) {
-        final Intent intent = new Intent();
-        switch (v.getId()) {
-            case R.id.btn_search:
-                hintKbTwo();
-                String searchUserName = mEt_searchUser.getText().toString();
-                if (!TextUtils.isEmpty(searchUserName)) {
-                    LoadDialog.show(this);
-                    JMessageClient.getUserInfo(searchUserName, new GetUserInfoCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                            LoadDialog.dismiss(SearchForAddFriendActivity.this);
-                            if (responseCode == 0) {
-                                InfoModel.getInstance().friendInfo = info;
-                                mSearch_result.setVisibility(View.VISIBLE);
-                                //已经是好友则不显示"加好友"按钮
-                                if (info.isFriend()) {
-                                    mSearch_addBtn.setVisibility(View.GONE);
-                                    //如果是发起单聊.那么不能显示加好友按钮
-                                } else if (!info.isFriend() && getIntent().getFlags() != 2) {
-                                    mSearch_addBtn.setVisibility(View.VISIBLE);
-                                }
-                                //这个接口会在本地寻找头像文件,不存在就异步拉取
-                                File avatarFile = info.getAvatarFile();
-                                if (avatarFile != null) {
-                                    mSearch_header.setImageBitmap(BitmapFactory.decodeFile(avatarFile.getAbsolutePath()));
-                                    InfoModel.getInstance().setBitmap(BitmapFactory.decodeFile(avatarFile.getAbsolutePath()));
-                                } else {
-                                    mSearch_header.setImageResource(R.drawable.rc_default_portrait);
-                                    InfoModel.getInstance().setBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.rc_default_portrait));
-                                }
-                                mSearch_name.setText(TextUtils.isEmpty(info.getNickname()) ? info.getUserName() : info.getNickname());
-                            } else {
-                                ToastUtil.shortToast(SearchForAddFriendActivity.this, "该用户不存在");
-                                mSearch_result.setVisibility(View.GONE);
-                            }
-                        }
-                    });
-                }
-                break;
-            case R.id.search_result:
-                //详细资料
-                if (InfoModel.getInstance().isFriend()) {
-                    //已经是好友
-                    intent.setClass(SearchForAddFriendActivity.this, FriendInfoActivity.class);
-                    intent.putExtra("addFriend", true);
-                    intent.putExtra("targetId", InfoModel.getInstance().friendInfo.getUserName());
-                    //直接发起单聊
-                } else if (getIntent().getFlags() == 2){
-                    intent.setClass(SearchForAddFriendActivity.this, GroupNotFriendActivity.class);
-                    intent.putExtra(JGApplication.TARGET_ID, InfoModel.getInstance().friendInfo.getUserName());
-                    intent.putExtra(JGApplication.TARGET_APP_KEY, InfoModel.getInstance().friendInfo.getAppKey());
-                }else {
-                    //添加好友
-                    intent.setClass(SearchForAddFriendActivity.this, SearchFriendInfoActivity.class);
-                }
-                startActivity(intent);
-                break;
-            case R.id.search_addBtn:
-                //添加申请
-                intent.setClass(SearchForAddFriendActivity.this, VerificationActivity.class);
-                startActivity(intent);
-                break;
-            case R.id.iv_clear:
-                mEt_searchUser.setText("");
-                break;
-        }
-    }
-
-
-    private class TextChange implements TextWatcher {
-
-        @Override
-        public void afterTextChanged(Editable arg0) {
-        }
-
-        @Override
-        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
-                                      int arg3) {
-        }
-
-        @Override
-        public void onTextChanged(CharSequence cs, int start, int before,
-                                  int count) {
-            boolean feedback = mEt_searchUser.getText().length() > 0;
-            if (feedback) {
-                mIv_clear.setVisibility(View.VISIBLE);
-                mBtn_search.setEnabled(true);
-            } else {
-                mIv_clear.setVisibility(View.GONE);
-                mBtn_search.setEnabled(false);
-            }
-        }
-    }
-
-    private void hintKbTwo() {
-        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
-        if (imm.isActive() && getCurrentFocus() != null) {
-            if (getCurrentFocus().getWindowToken() != null) {
-                imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
-            }
-        }
-    }
-}

+ 0 - 354
o2android/app/src/main/java/jiguang/chat/activity/SearchFriendBusinessActivity.java

@@ -1,354 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.text.Editable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextWatcher;
-import android.text.style.ForegroundColorSpan;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.content.TextContent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.api.options.MessageSendingOptions;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.ActivityController;
-import jiguang.chat.model.SearchResult;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.photochoose.SelectableRoundedImageView;
-import jiguang.chat.utils.pinyin.CharacterParser;
-import jiguang.chat.utils.query.TextSearcher;
-
-
-public class SearchFriendBusinessActivity extends BaseActivity implements AdapterView.OnItemClickListener {
-
-    private String mFilterString;
-
-    private EditText mSearchEditText;
-    private ListView mFriendListView;
-    private TextView mSearchNoResultsTextView;
-    private LinearLayout mPressBackImageView;
-    private LinearLayout mFriendListResultLinearLayout;
-
-    private AsyncTask mAsyncTask;
-    private ThreadPoolExecutor mExecutor;
-    private Dialog mDialog;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_more_friends_detail_info);
-        ActivityController.addActivity(this);
-
-        initView();
-        initData();
-    }
-
-
-    public void initView() {
-        mSearchEditText = (EditText) findViewById(R.id.ac_et_search);
-        mFriendListView = (ListView) findViewById(R.id.ac_lv_friend_list_detail_info);
-        mSearchNoResultsTextView = (TextView) findViewById(R.id.ac_tv_search_no_results);
-        mPressBackImageView = (LinearLayout) findViewById(R.id.ac_iv_press_back);
-        mFriendListResultLinearLayout = (LinearLayout) findViewById(R.id.ac_ll_friend_list_result);
-    }
-
-    public void initData() {
-        mExecutor = new ThreadPoolExecutor(3, 5, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-        mSearchEditText.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                mFilterString = s.toString();
-                mAsyncTask = new AsyncTask<String, Void, SearchResult>() {
-
-                    @Override
-                    protected SearchResult doInBackground(String... params) {
-                        return filterInfo(mFilterString);
-                    }
-
-                    @Override
-                    protected void onPostExecute(SearchResult searchResult) {
-
-                        if (searchResult.getFilterStr().equals(mFilterString)) {
-                            List<UserInfo> filterFriendList = searchResult.getFriendList();
-                            if (filterFriendList.size() > 0) {
-                                mFriendListResultLinearLayout.setVisibility(View.VISIBLE);
-                                mFriendListView.setVisibility(View.VISIBLE);
-                                FriendListAdapter friendListAdapter = new FriendListAdapter(filterFriendList);
-                                mFriendListView.setAdapter(friendListAdapter);
-                            } else {
-                                mFriendListResultLinearLayout.setVisibility(View.GONE);
-                                mFriendListView.setVisibility(View.GONE);
-                            }
-
-                            if (mFilterString.equals("")) {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                            if (filterFriendList.size() == 0) {
-                                if (mFilterString.equals("")) {
-                                    mSearchNoResultsTextView.setVisibility(View.GONE);
-                                } else {
-                                    mSearchNoResultsTextView.setVisibility(View.VISIBLE);
-                                    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_pre));
-                                    SpannableStringBuilder colorFilterStr = new SpannableStringBuilder(mFilterString);
-                                    colorFilterStr.setSpan(new ForegroundColorSpan(Color.parseColor("#2DD0CF")), 0, mFilterString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-                                    spannableStringBuilder.append(colorFilterStr);
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_suffix));
-                                    mSearchNoResultsTextView.setText(spannableStringBuilder);
-                                }
-                            } else {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                        }
-                    }
-                }.executeOnExecutor(mExecutor, s.toString());
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-
-        mSearchEditText.setOnTouchListener(new View.OnTouchListener() {
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                final int DRAWABLE_RIGHT = 2;
-
-                if (event.getAction() == MotionEvent.ACTION_UP) {
-                    if (event.getRawX() >= (mSearchEditText.getRight() - 2 * mSearchEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
-                        filterInfo("");
-                        mSearchEditText.setText("");
-                        return true;
-                    }
-                }
-                return false;
-            }
-        });
-
-        mPressBackImageView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                SearchFriendBusinessActivity.this.finish();
-            }
-        });
-
-        mFriendListView.setOnItemClickListener(this);
-
-        mSearchEditText.setText(mFilterString);
-    }
-
-    @Override
-    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        Object selectObject = parent.getItemAtPosition(position);
-        if (selectObject instanceof UserInfo) {
-            UserInfo friend = (UserInfo) selectObject;
-            if (getIntent().getBooleanExtra("isSingle", false)) {
-                setBusinessCard(friend, JMessageClient.getSingleConversation(getIntent().getStringExtra("userId")));
-            } else {
-                setBusinessCard(friend, JMessageClient.getGroupConversation(getIntent().getLongExtra("groupId", 0)));
-            }
-        }
-    }
-
-    private void setBusinessCard(final UserInfo info, final Conversation conversation) {
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                switch (v.getId()) {
-                    case R.id.btn_cancel:
-                        mDialog.dismiss();
-                        break;
-                    case R.id.btn_sure:
-                        mDialog.dismiss();
-                        //把名片的userName和appKey通过extra发送给对方
-                        TextContent content = new TextContent("推荐了一张名片");
-                        content.setStringExtra("userName", info.getUserName());
-                        content.setStringExtra("appKey", info.getAppKey());
-                        content.setStringExtra("businessCard", "businessCard");
-
-                        Message textMessage = conversation.createSendMessage(content);
-                        MessageSendingOptions options = new MessageSendingOptions();
-                        options.setNeedReadReceipt(false);
-                        JMessageClient.sendMessage(textMessage, options);
-                        textMessage.setOnSendCompleteCallback(new BasicCallback() {
-                            @Override
-                            public void gotResult(int i, String s) {
-                                if (i == 0) {
-                                    SharePreferenceManager.setIsOpen(true);
-                                    Toast.makeText(SearchFriendBusinessActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
-                                    finish();
-                                } else {
-                                    HandleResponseCode.onHandle(SearchFriendBusinessActivity.this, i, false);
-                                }
-                            }
-                        });
-                        break;
-                }
-            }
-        };
-        mDialog = DialogCreator.createBusinessCardDialog(SearchFriendBusinessActivity.this, listener, conversation.getTitle(),
-                info.getUserName(), info.getAvatarFile().getAbsolutePath());
-        mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-        mDialog.show();
-    }
-
-    private class FriendListAdapter extends BaseAdapter {
-
-        private List<UserInfo> filterFriendList;
-
-        public FriendListAdapter(List<UserInfo> filterFriendList) {
-            this.filterFriendList = filterFriendList;
-        }
-
-        @Override
-        public int getCount() {
-            if (filterFriendList != null) {
-                return filterFriendList.size();
-            }
-            return 0;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            final ViewHolder viewHolder;
-            UserInfo friend = (UserInfo) getItem(position);
-            if (convertView == null) {
-                viewHolder = new ViewHolder();
-                convertView = View.inflate(SearchFriendBusinessActivity.this, R.layout.item_filter_friend_list, null);
-                viewHolder.portraitImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.item_aiv_friend_image);
-                viewHolder.nameSingleTextView = (TextView) convertView.findViewById(R.id.item_tv_friend_name_single);
-                convertView.setTag(viewHolder);
-            } else {
-                viewHolder = (ViewHolder) convertView.getTag();
-            }
-
-            if (friend != null) {
-                viewHolder.nameSingleTextView.setVisibility(View.VISIBLE);
-                String noteName = friend.getNotename();
-                String nickName = friend.getNickname();
-                String userName = friend.getUserName();
-                String name = "";
-                if (TextSearcher.contains(false, noteName, mFilterString)) {
-                    name = noteName;
-                } else if (TextSearcher.contains(false, nickName, mFilterString)) {
-                    name = nickName;
-                } else if (TextSearcher.contains(false, userName, mFilterString)) {
-                    name = userName;
-                }
-                friend.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                        if (responseCode == 0) {
-                            viewHolder.portraitImageView.setImageBitmap(avatarBitmap);
-                        } else {
-                            //没有头像给个默认的
-                            viewHolder.portraitImageView.setImageResource(R.drawable.jmui_head_icon);
-                        }
-                    }
-                });
-                viewHolder.nameSingleTextView.setText(CharacterParser.getInstance().getColoredName(mFilterString, name));
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public Object getItem(int position) {
-            if (filterFriendList == null)
-                return null;
-
-            if (position >= filterFriendList.size())
-                return null;
-
-            return filterFriendList.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-    }
-
-    class ViewHolder {
-        SelectableRoundedImageView portraitImageView;
-        TextView nameSingleTextView;
-    }
-
-    @Override
-    public void onDestroy() {
-        if (mAsyncTask != null) {
-            mAsyncTask.cancel(true);
-            mAsyncTask = null;
-        }
-        super.onDestroy();
-    }
-
-    private synchronized SearchResult filterInfo(String filterStr) {
-        List<UserInfo> filterFriendList = new ArrayList<>();
-        SearchResult searchResult = new SearchResult();
-
-        if (filterStr.equals("")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr("");
-            result.setFriendList(filterFriendList);
-            return result;
-        }
-        if (filterStr.contains("'")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr(filterStr);
-            result.setFriendList(filterFriendList);
-            return result;
-        }
-
-        //所有好友名单
-        List<UserInfo> mFriendInfoList = JGApplication.mFriendInfoList;
-        for (UserInfo friendInfo : mFriendInfoList) {
-            if (TextSearcher.contains(false, friendInfo.getNotename(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getNickname(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getUserName(), filterStr)) {
-                filterFriendList.add(friendInfo);
-            }
-        }
-
-        searchResult.setFriendList(filterFriendList);
-        searchResult.setFilterStr(filterStr);
-        return searchResult;
-    }
-}

+ 0 - 196
o2android/app/src/main/java/jiguang/chat/activity/SearchFriendDetailActivity.java

@@ -1,196 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import cn.jpush.im.android.api.ContactManager;
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.eventbus.EventBus;
-import cn.jpush.im.api.BasicCallback;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.NativeImageLoader;
-import jiguang.chat.utils.SharePreferenceManager;
-
-/**
- * Created by ${chenyn} on 2017/3/21.
- */
-
-public class SearchFriendDetailActivity extends BaseActivity {
-
-    private ImageView mIv_friendPhoto;
-    private TextView mTv_nickName;
-    private TextView mTv_additionalMsg;
-    private TextView mTv_signature;
-    private TextView mTv_gender;
-    private TextView mTv_birthday;
-    private TextView mTv_address;
-    private Button mBtn_refusal;
-    private Button mBtn_agree;
-    private String mUsername;
-    private String mAppKey;
-    private UserInfo mToUserInfo;
-
-    private String mAvatarPath;
-    private String mDisplayName;
-    private TextView mUserName;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_search_result_detail);
-
-        initView();
-    }
-
-    private void initView() {
-        initTitle(true, true, "详细资料", "", false, "");
-        mIv_friendPhoto = (ImageView) findViewById(R.id.iv_friendPhoto);
-        mTv_nickName = (TextView) findViewById(R.id.tv_nickName);
-        mTv_additionalMsg = (TextView) findViewById(R.id.tv_additionalMsg);
-        mTv_signature = (TextView) findViewById(R.id.tv_sign);
-        mTv_gender = (TextView) findViewById(R.id.tv_gender);
-        mTv_birthday = (TextView) findViewById(R.id.tv_birthday);
-        mTv_address = (TextView) findViewById(R.id.tv_address);
-        mBtn_refusal = (Button) findViewById(R.id.btn_refusal);
-        mBtn_agree = (Button) findViewById(R.id.btn_agree);
-        mUserName = (TextView) findViewById(R.id.tv_userName);
-
-        initModel();
-
-    }
-
-    private void initModel() {
-        final Dialog dialog = DialogCreator.createLoadingDialog(this, this.getString(R.string.jmui_loading));
-        dialog.show();
-        final Intent intent = getIntent();
-        mUsername = intent.getStringExtra(JGApplication.TARGET_ID);
-        mAppKey = intent.getStringExtra(JGApplication.TARGET_APP_KEY);
-        JMessageClient.getUserInfo(mUsername, mAppKey, new GetUserInfoCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                dialog.dismiss();
-                if (responseCode == 0) {
-                    mToUserInfo = info;
-                    Bitmap bitmap = NativeImageLoader.getInstance().getBitmapFromMemCache(mUsername);
-                    if (bitmap != null) {
-                        mIv_friendPhoto.setImageBitmap(bitmap);
-                    } else if (!TextUtils.isEmpty(info.getAvatar())) {
-                        mAvatarPath = info.getAvatarFile().getPath();
-                        info.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                            @Override
-                            public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                                if (responseCode == 0) {
-                                    mIv_friendPhoto.setImageBitmap(avatarBitmap);
-                                    NativeImageLoader.getInstance().updateBitmapFromCache(mUsername, avatarBitmap);
-                                } else {
-                                    mIv_friendPhoto.setImageResource(R.drawable.rc_default_portrait);
-                                }
-                            }
-                        });
-                    } else {
-                        mIv_friendPhoto.setImageResource(R.drawable.rc_default_portrait);
-                    }
-                    mDisplayName = info.getNickname();
-                    if (TextUtils.isEmpty(mDisplayName)) {
-                        mDisplayName = info.getUserName();
-                    }
-                    mTv_nickName.setText(mDisplayName);
-                    if (info.getGender() == UserInfo.Gender.male) {
-                        mTv_gender.setText("男");
-                    } else if (info.getGender() == UserInfo.Gender.female) {
-                        mTv_gender.setText("女");
-                    } else {
-                        mTv_gender.setText("保密");
-                    }
-                    mTv_additionalMsg.setText("附加消息: " + intent.getStringExtra("reason"));
-                    mTv_signature.setText(info.getSignature());
-                    mUserName.setText(mUsername);
-                    long birthday = info.getBirthday();
-                    if (birthday == 0) {
-                        mTv_birthday.setText("");
-                    } else {
-                        Date date = new Date(birthday);
-                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-                        mTv_birthday.setText(dateFormat.format(date));
-                    }
-                    mTv_address.setText(info.getRegion());
-                }
-            }
-        });
-
-        final int position = intent.getIntExtra("position", -1);
-
-        View.OnClickListener listener = new View.OnClickListener() {
-            final Dialog dialog = DialogCreator.createLoadingDialog(SearchFriendDetailActivity.this, "正在加载");
-
-            @Override
-            public void onClick(View v) {
-                switch (v.getId()) {
-                    case R.id.btn_refusal:
-                        //拒绝添加
-                        dialog.show();
-                        ContactManager.declineInvitation(mToUserInfo.getUserName(), mToUserInfo.getAppKey(), "拒绝了您的好友请求", new BasicCallback() {
-                            @Override
-                            public void gotResult(int responseCode, String responseMessage) {
-                                dialog.dismiss();
-                                if (responseCode == 0) {
-                                    //拒绝时候要修改button数据库状态,并更新内存
-                                    Intent btnIntent = new Intent();
-                                    btnIntent.putExtra("position", position);
-                                    btnIntent.putExtra("btn_state", 1);
-                                    setResult(JGApplication.RESULT_BUTTON, btnIntent);
-                                    finish();
-                                }
-                            }
-                        });
-                        break;
-                    case R.id.btn_agree:
-                        //同意添加
-                        dialog.show();
-                        ContactManager.acceptInvitation(mToUserInfo.getUserName(), mToUserInfo.getAppKey(), new BasicCallback() {
-                            @Override
-                            public void gotResult(int responseCode, String responseMessage) {
-                                dialog.dismiss();
-                                if (responseCode == 0) {
-                                    Intent btnIntent2 = new Intent();
-                                    btnIntent2.putExtra("position", position);
-                                    btnIntent2.putExtra("btn_state", 2);
-                                    setResult(JGApplication.RESULT_BUTTON, btnIntent2);
-                                    EventBus.getDefault().post(new Event.Builder().setType(EventType.addFriend)
-                                            .setFriendId(SharePreferenceManager.getItem()).build());
-                                    finish();
-                                }
-                            }
-                        });
-                        break;
-                    default:
-                        break;
-                }
-
-            }
-        };
-        mBtn_agree.setOnClickListener(listener);
-        mBtn_refusal.setOnClickListener(listener);
-    }
-
-
-}

+ 0 - 83
o2android/app/src/main/java/jiguang/chat/activity/SearchFriendInfoActivity.java

@@ -1,83 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.model.InfoModel;
-
-/**
- * Created by ${chenyn} on 2017/3/14.
- */
-
-public class SearchFriendInfoActivity extends BaseActivity implements View.OnClickListener {
-
-    private ImageView mIv_photo;
-    private TextView mTv_nickName;
-    private TextView mTv_userName;
-    private TextView mTv_sign;
-    private TextView mTv_gender;
-    private TextView mTv_birthday;
-    private TextView mTv_city;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_search_friend_info);
-
-        initView();
-        initData();
-    }
-
-    private void initView() {
-        initTitle(true, true, "详细资料", "", false, "保存");
-        mIv_photo = (ImageView) findViewById(R.id.iv_photo);
-        mTv_nickName = (TextView) findViewById(R.id.tv_nickName);
-        mTv_userName = (TextView) findViewById(R.id.tv_userName);
-        mTv_sign = (TextView) findViewById(R.id.tv_sign);
-        mTv_gender = (TextView) findViewById(R.id.tv_gender);
-        mTv_birthday = (TextView) findViewById(R.id.tv_birthday);
-        mTv_city = (TextView) findViewById(R.id.tv_city);
-
-        findViewById(R.id.btn_addFriend).setOnClickListener(this);
-    }
-
-    private void initData() {
-        InfoModel instance = InfoModel.getInstance();
-        if (instance.getAvatar() == null) {
-            mIv_photo.setImageResource(R.drawable.rc_default_portrait);
-        } else {
-            mIv_photo.setImageBitmap(instance.getAvatar());
-        }
-        if (TextUtils.isEmpty(instance.getNickName())) {
-            mTv_nickName.setText("用户名: " + instance.getUserName());
-        } else {
-            mTv_nickName.setText("昵称:" + instance.getNickName());
-        }
-        mTv_userName.setText(instance.getUserName());
-        mTv_sign.setText(instance.getSign());
-        mTv_gender.setText(instance.getGender());
-        mTv_birthday.setText(instance.getBirthday());
-        mTv_city.setText(instance.getCity());
-    }
-
-    @Override
-    public void onClick(View v) {
-        Intent intent;
-        switch (v.getId()) {
-            case R.id.btn_addFriend:
-                //添加好友界面
-                intent = new Intent(SearchFriendInfoActivity.this, VerificationActivity.class);
-                startActivity(intent);
-                break;
-            default:
-                break;
-        }
-
-    }
-}

+ 0 - 335
o2android/app/src/main/java/jiguang/chat/activity/SearchGroupActivity.java

@@ -1,335 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextWatcher;
-import android.text.style.ForegroundColorSpan;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.model.SearchResult;
-import jiguang.chat.utils.photochoose.SelectableRoundedImageView;
-import jiguang.chat.utils.pinyin.CharacterParser;
-import jiguang.chat.utils.query.TextSearcher;
-
-/**
- * Created by ${chenyn} on 2017/6/22.
- */
-
-public class SearchGroupActivity extends BaseActivity implements View.OnClickListener {
-
-    private LinearLayout mIvBack;
-    private ImageView mIvClear;
-    private EditText mEtSearch;
-    private ListView mLv_searchGroup;
-    private NetworkReceiver mReceiver;
-    private TextView mNoConnect;
-    private ArrayList<UserInfo> mFilterFriendList;
-    private AsyncTask mAsyncTask;
-    private ThreadPoolExecutor mExecutor;
-    private CharacterParser mCharacterParser;
-    private String mFilterString;
-    private TextView mSearchNoResultsTextView;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_search_group);
-        initReceiver();
-        initView();
-        initData();
-        initListener();
-    }
-
-    private void initReceiver() {
-        mReceiver = new NetworkReceiver();
-        IntentFilter filter = new IntentFilter();
-        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
-        registerReceiver(mReceiver, filter);
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()) {
-            case R.id.ac_iv_press_back:
-                finish();
-                break;
-            case R.id.iv_clear:
-                mEtSearch.setText("");
-                break;
-            default:
-                break;
-        }
-    }
-
-    //监听网络状态的广播
-    private class NetworkReceiver extends BroadcastReceiver {
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (intent != null && intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) {
-                ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-                NetworkInfo activeInfo = manager.getActiveNetworkInfo();
-                if (null == activeInfo) {
-                    mNoConnect.setVisibility(View.VISIBLE);
-                } else {
-                    mNoConnect.setVisibility(View.GONE);
-                }
-            }
-        }
-
-    }
-
-    private void initView() {
-        mIvBack = (LinearLayout) findViewById(R.id.ac_iv_press_back);
-        mIvClear = (ImageView) findViewById(R.id.iv_clear);
-        mEtSearch = (EditText) findViewById(R.id.ac_et_search);
-        mNoConnect = (TextView) findViewById(R.id.no_connect);
-        mSearchNoResultsTextView = (TextView) findViewById(R.id.ac_tv_search_no_results);
-
-
-        mIvBack.setOnClickListener(this);
-        mIvClear.setOnClickListener(this);
-
-        mLv_searchGroup = (ListView) findViewById(R.id.lv_searchGroup);
-    }
-
-    private void initData() {
-        mEtSearch.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                mFilterFriendList = new ArrayList<>();
-                mFilterString = s.toString();
-                mAsyncTask = new AsyncTask<String, Void, SearchResult>() {
-                    @Override
-                    protected void onPreExecute() {
-                    }
-
-                    @Override
-                    protected SearchResult doInBackground(String... params) {
-                        return filterInfo(mFilterString);
-                    }
-
-                    @Override
-                    protected void onPostExecute(SearchResult searchResult) {
-                        if (searchResult.getFilterStr().equals(mFilterString)) {
-                            List<UserInfo> friendList = searchResult.getFriendList();
-                            for (UserInfo friend : friendList) {
-                                mFilterFriendList.add(friend);
-                            }
-
-                            if (mFilterFriendList.size() == 0) {
-                                if (mFilterString.equals("")) {
-                                    mSearchNoResultsTextView.setVisibility(View.GONE);
-                                } else {
-                                    mSearchNoResultsTextView.setVisibility(View.VISIBLE);
-                                    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_pre));
-                                    SpannableStringBuilder colorFilterStr = new SpannableStringBuilder(mFilterString);
-                                    colorFilterStr.setSpan(new ForegroundColorSpan(Color.parseColor("#2DD0CF")), 0, mFilterString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-                                    spannableStringBuilder.append(colorFilterStr);
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_suffix));
-                                    mSearchNoResultsTextView.setText(spannableStringBuilder);
-                                }
-                            } else {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                            if (mFilterFriendList.size() > 0) {
-                                mLv_searchGroup.setVisibility(View.VISIBLE);
-                                FriendListAdapter friendListAdapter = new FriendListAdapter(mFilterFriendList);
-                                mLv_searchGroup.setAdapter(friendListAdapter);
-                            } else {
-                                mLv_searchGroup.setVisibility(View.GONE);
-                            }
-                        }
-                    }
-                }.executeOnExecutor(mExecutor, s.toString());
-
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-
-        mExecutor = new ThreadPoolExecutor(3, 5, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-        mCharacterParser = CharacterParser.getInstance();
-    }
-
-    private SearchResult filterInfo(String filterStr) {
-        SearchResult searchResult = new SearchResult();
-        List<UserInfo> filterFriend = new ArrayList<>();
-
-        if (filterStr.equals("")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr("");
-            result.setFriendList(filterFriend);
-            return result;
-        }
-        if (filterStr.equals("'")) {
-            SearchResult result = new SearchResult();
-            result.setFriendList(filterFriend);
-            return result;
-        }
-
-        //所有好友名单
-        for (UserInfo friendInfo : JGApplication.mSearchGroup) {
-            //如果好友名 包含 搜索内容 就把这个人的userinfo添加
-            if (TextSearcher.contains(false, friendInfo.getNickname(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getNotename(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getUserName(), filterStr)) {
-                filterFriend.add(friendInfo);
-            }
-        }
-        searchResult.setFilterStr(filterStr);
-        searchResult.setFriendList(filterFriend);
-
-        return searchResult;
-    }
-
-    private class FriendListAdapter extends BaseAdapter {
-        private List<UserInfo> filterFriendList;
-
-        public FriendListAdapter(List<UserInfo> filterFriendList) {
-            this.filterFriendList = filterFriendList;
-        }
-
-        @Override
-        public int getCount() {
-            return filterFriendList.size();
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-
-            final ViewHolder viewHolder;
-            final UserInfo friendInfo = (UserInfo) getItem(position);
-            if (convertView == null) {
-                viewHolder = new ViewHolder();
-                convertView = View.inflate(SearchGroupActivity.this, R.layout.item_filter_friend_list, null);
-                viewHolder.portraitImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.item_aiv_friend_image);//头像
-                viewHolder.nameSingleTextView = (TextView) convertView.findViewById(R.id.item_tv_friend_name_single);
-                convertView.setTag(viewHolder);
-            } else {
-                viewHolder = (ViewHolder) convertView.getTag();
-            }
-            if (friendInfo != null) {
-                viewHolder.nameSingleTextView.setVisibility(View.VISIBLE);
-                String noteName = friendInfo.getNotename();
-                String nickName = friendInfo.getNickname();
-                String userName = friendInfo.getUserName();
-                String name = "";
-                if (TextSearcher.contains(false, friendInfo.getNotename(), mFilterString)) {
-                    name = noteName;
-                } else if (TextSearcher.contains(false, friendInfo.getNickname(), mFilterString)) {
-                    name = nickName;
-                } else if (TextSearcher.contains(false, friendInfo.getUserName(), mFilterString)) {
-                    name = userName;
-                }
-                friendInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                        if (responseCode == 0) {
-                            viewHolder.portraitImageView.setImageBitmap(avatarBitmap);
-                        } else {
-                            //没有头像给个默认的
-                            viewHolder.portraitImageView.setImageResource(R.drawable.jmui_head_icon);
-                        }
-                    }
-                });
-                viewHolder.nameSingleTextView.setText(mCharacterParser.getColoredName(mFilterString, name));
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public Object getItem(int position) {
-            if (filterFriendList == null)
-                return null;
-
-            if (position >= filterFriendList.size())
-                return null;
-
-            return filterFriendList.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-    }
-
-    class ViewHolder {
-        SelectableRoundedImageView portraitImageView;
-        TextView nameSingleTextView;
-    }
-
-    @Override
-    public void onDestroy() {
-        if (mAsyncTask != null) {
-            mAsyncTask.cancel(true);
-            mAsyncTask = null;
-        }
-        unregisterReceiver(mReceiver);
-        super.onDestroy();
-    }
-
-    private void initListener() {
-        final Intent intent = new Intent();
-        mLv_searchGroup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                Object itemAtPosition = parent.getItemAtPosition(position);
-                if (itemAtPosition instanceof UserInfo) {
-                    UserInfo info = ((UserInfo) itemAtPosition);
-                    if (info.isFriend()) {
-                        intent.setClass(SearchGroupActivity.this, FriendInfoActivity.class);
-                        intent.putExtra("fromSearch", true);
-                    } else {
-                        intent.setClass(SearchGroupActivity.this, GroupNotFriendActivity.class);
-                    }
-                    intent.putExtra(JGApplication.TARGET_ID, info.getUserName());
-                    intent.putExtra(JGApplication.TARGET_APP_KEY, info.getAppKey());
-                    startActivity(intent);
-                }
-            }
-        });
-    }
-}

+ 0 - 406
o2android/app/src/main/java/jiguang/chat/activity/SearchMoreFriendsActivity.java

@@ -1,406 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.text.Editable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextWatcher;
-import android.text.style.ForegroundColorSpan;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.content.TextContent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.api.options.MessageSendingOptions;
-import cn.jpush.im.android.eventbus.EventBus;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.ActivityController;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.model.SearchResult;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.photochoose.SelectableRoundedImageView;
-import jiguang.chat.utils.pinyin.CharacterParser;
-import jiguang.chat.utils.query.TextSearcher;
-
-
-public class SearchMoreFriendsActivity extends BaseActivity implements AdapterView.OnItemClickListener {
-
-    private String mFilterString;
-
-    private EditText mSearchEditText;
-    private ListView mFriendListView;
-    private TextView mSearchNoResultsTextView;
-    private LinearLayout mPressBackImageView;
-    private LinearLayout mFriendListResultLinearLayout;
-
-    private AsyncTask mAsyncTask;
-    private ThreadPoolExecutor mExecutor;
-    private boolean isForwardMsg;
-    private boolean isBusinessCard;
-    private Dialog mDialog;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_more_friends_detail_info);
-        ActivityController.addActivity(this);
-
-        Intent intent = getIntent();
-        mFilterString = intent.getStringExtra("filterString");
-        isForwardMsg = intent.getBooleanExtra("forwardMsg", false);
-        isBusinessCard = intent.getBooleanExtra("businessCard", false);
-        initView();
-        initData();
-    }
-
-
-    public void initView() {
-        mSearchEditText = (EditText) findViewById(R.id.ac_et_search);
-        mFriendListView = (ListView) findViewById(R.id.ac_lv_friend_list_detail_info);
-        mSearchNoResultsTextView = (TextView) findViewById(R.id.ac_tv_search_no_results);
-        mPressBackImageView = (LinearLayout) findViewById(R.id.ac_iv_press_back);
-        mFriendListResultLinearLayout = (LinearLayout) findViewById(R.id.ac_ll_friend_list_result);
-    }
-
-    public void initData() {
-        mExecutor = new ThreadPoolExecutor(3, 5, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-        mSearchEditText.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                mFilterString = s.toString();
-                mAsyncTask = new AsyncTask<String, Void, SearchResult>() {
-
-                    @Override
-                    protected SearchResult doInBackground(String... params) {
-                        return filterInfo(mFilterString);
-                    }
-
-                    @Override
-                    protected void onPostExecute(SearchResult searchResult) {
-
-                        if (searchResult.getFilterStr().equals(mFilterString)) {
-                            List<UserInfo> filterFriendList = searchResult.getFriendList();
-                            if (filterFriendList.size() > 0) {
-                                mFriendListResultLinearLayout.setVisibility(View.VISIBLE);
-                                mFriendListView.setVisibility(View.VISIBLE);
-                                FriendListAdapter friendListAdapter = new FriendListAdapter(filterFriendList);
-                                mFriendListView.setAdapter(friendListAdapter);
-                            } else {
-                                mFriendListResultLinearLayout.setVisibility(View.GONE);
-                                mFriendListView.setVisibility(View.GONE);
-                            }
-
-                            if (mFilterString.equals("")) {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                            if (filterFriendList.size() == 0) {
-                                if (mFilterString.equals("")) {
-                                    mSearchNoResultsTextView.setVisibility(View.GONE);
-                                } else {
-                                    mSearchNoResultsTextView.setVisibility(View.VISIBLE);
-                                    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_pre));
-                                    SpannableStringBuilder colorFilterStr = new SpannableStringBuilder(mFilterString);
-                                    colorFilterStr.setSpan(new ForegroundColorSpan(Color.parseColor("#2DD0CF")), 0, mFilterString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-                                    spannableStringBuilder.append(colorFilterStr);
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_suffix));
-                                    mSearchNoResultsTextView.setText(spannableStringBuilder);
-                                }
-                            } else {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                        }
-                    }
-                }.executeOnExecutor(mExecutor, s.toString());
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-
-        mSearchEditText.setOnTouchListener(new View.OnTouchListener() {
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                final int DRAWABLE_RIGHT = 2;
-
-                if (event.getAction() == MotionEvent.ACTION_UP) {
-                    if (event.getRawX() >= (mSearchEditText.getRight() - 2 * mSearchEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
-                        filterInfo("");
-                        mSearchEditText.setText("");
-                        return true;
-                    }
-                }
-                return false;
-            }
-        });
-
-        mPressBackImageView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                SearchMoreFriendsActivity.this.finish();
-            }
-        });
-
-        mFriendListView.setOnItemClickListener(this);
-
-        mSearchEditText.setText(mFilterString);
-    }
-
-    @Override
-    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        Object selectObject = parent.getItemAtPosition(position);
-        if (selectObject instanceof UserInfo) {
-            UserInfo friend = (UserInfo) selectObject;
-            final Intent intent = new Intent(SearchMoreFriendsActivity.this, ChatActivity.class);
-            String notename = friend.getDisplayName();
-            Conversation conv = JMessageClient.getSingleConversation(friend.getUserName(), friend.getAppKey());
-            //如果会话为空,使用EventBus通知会话列表添加新会话
-            if (conv == null) {
-                conv = Conversation.createSingleConversation(friend.getUserName(), friend.getAppKey());
-                EventBus.getDefault().post(new Event.Builder()
-                        .setType(EventType.createConversation)
-                        .setConversation(conv)
-                        .build());
-            }
-            //转发消息
-            if (isForwardMsg) {
-                DialogCreator.createForwardMsg(SearchMoreFriendsActivity.this, mWidth, true, null, null, notename, friend);
-                //进入聊天界面
-            } else if (isBusinessCard) {
-                setSearchContactsBusiness(getIntent(), null, friend);
-            } else {
-                intent.putExtra(JGApplication.TARGET_ID, friend.getUserName());
-                intent.putExtra(JGApplication.TARGET_APP_KEY, friend.getAppKey());
-                intent.putExtra(JGApplication.CONV_TITLE, notename);
-                startActivity(intent);
-            }
-        }
-    }
-
-    public void setSearchContactsBusiness(final Intent intent, final GroupInfo groupInfo, final UserInfo userInfo) {
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                switch (v.getId()) {
-                    case R.id.btn_cancel:
-                        mDialog.dismiss();
-                        break;
-                    case R.id.btn_sure:
-                        mDialog.dismiss();
-                        //把名片的userName和appKey通过extra发送给对方
-                        TextContent content = new TextContent("推荐了一张名片");
-                        content.setStringExtra("userName", intent.getStringExtra("userName"));
-                        content.setStringExtra("appKey", intent.getStringExtra("appKey"));
-                        content.setStringExtra("businessCard", "businessCard");
-                        Conversation conversation;
-                        if (userInfo == null) {
-                            conversation = JMessageClient.getGroupConversation(groupInfo.getGroupID());
-                            if (conversation == null) {
-                                conversation = Conversation.createGroupConversation(groupInfo.getGroupID());
-                                EventBus.getDefault().post(new Event.Builder()
-                                        .setType(EventType.createConversation)
-                                        .setConversation(conversation)
-                                        .build());
-                            }
-                        } else {
-                            conversation = JMessageClient.getSingleConversation(userInfo.getUserName(), userInfo.getAppKey());
-                            if (conversation == null) {
-                                conversation = Conversation.createSingleConversation(userInfo.getUserName(), userInfo.getAppKey());
-                                EventBus.getDefault().post(new Event.Builder()
-                                        .setType(EventType.createConversation)
-                                        .setConversation(conversation)
-                                        .build());
-                            }
-                        }
-
-                        Message textMessage = conversation.createSendMessage(content);
-                        MessageSendingOptions options = new MessageSendingOptions();
-                        options.setNeedReadReceipt(false);
-                        JMessageClient.sendMessage(textMessage, options);
-                        textMessage.setOnSendCompleteCallback(new BasicCallback() {
-                            @Override
-                            public void gotResult(int i, String s) {
-                                if (i == 0) {
-                                    Toast.makeText(SearchMoreFriendsActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
-                                } else {
-                                    HandleResponseCode.onHandle(SearchMoreFriendsActivity.this, i, false);
-                                }
-                            }
-                        });
-                        break;
-                }
-            }
-        };
-        String name;
-        if (userInfo == null) {
-            name = groupInfo.getGroupName();
-        } else {
-            name = userInfo.getDisplayName();
-        }
-        mDialog = DialogCreator.createBusinessCardDialog(SearchMoreFriendsActivity.this, listener, name,
-                intent.getStringExtra("userName"), intent.getStringExtra("avatar"));
-        mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-        mDialog.show();
-    }
-
-    private class FriendListAdapter extends BaseAdapter {
-
-        private List<UserInfo> filterFriendList;
-
-        public FriendListAdapter(List<UserInfo> filterFriendList) {
-            this.filterFriendList = filterFriendList;
-        }
-
-        @Override
-        public int getCount() {
-            if (filterFriendList != null) {
-                return filterFriendList.size();
-            }
-            return 0;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            final ViewHolder viewHolder;
-            UserInfo friend = (UserInfo) getItem(position);
-            if (convertView == null) {
-                viewHolder = new ViewHolder();
-                convertView = View.inflate(SearchMoreFriendsActivity.this, R.layout.item_filter_friend_list, null);
-                viewHolder.portraitImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.item_aiv_friend_image);
-                viewHolder.nameSingleTextView = (TextView) convertView.findViewById(R.id.item_tv_friend_name_single);
-                convertView.setTag(viewHolder);
-            } else {
-                viewHolder = (ViewHolder) convertView.getTag();
-            }
-
-            if (friend != null) {
-                viewHolder.nameSingleTextView.setVisibility(View.VISIBLE);
-                String noteName = friend.getNotename();
-                String nickName = friend.getNickname();
-                String userName = friend.getUserName();
-                String name = "";
-                if (TextSearcher.contains(false, noteName, mFilterString)) {
-                    name = noteName;
-                } else if (TextSearcher.contains(false, nickName, mFilterString)) {
-                    name = nickName;
-                } else if (TextSearcher.contains(false, userName, mFilterString)) {
-                    name = userName;
-                }
-                friend.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                        if (responseCode == 0) {
-                            viewHolder.portraitImageView.setImageBitmap(avatarBitmap);
-                        } else {
-                            //没有头像给个默认的
-                            viewHolder.portraitImageView.setImageResource(R.drawable.jmui_head_icon);
-                        }
-                    }
-                });
-                viewHolder.nameSingleTextView.setText(CharacterParser.getInstance().getColoredName(mFilterString, name));
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public Object getItem(int position) {
-            if (filterFriendList == null)
-                return null;
-
-            if (position >= filterFriendList.size())
-                return null;
-
-            return filterFriendList.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-    }
-
-    class ViewHolder {
-        SelectableRoundedImageView portraitImageView;
-        TextView nameSingleTextView;
-    }
-
-    @Override
-    public void onDestroy() {
-        if (mAsyncTask != null) {
-            mAsyncTask.cancel(true);
-            mAsyncTask = null;
-        }
-        super.onDestroy();
-    }
-
-    private synchronized SearchResult filterInfo(String filterStr) {
-        List<UserInfo> filterFriendList = new ArrayList<>();
-        SearchResult searchResult = new SearchResult();
-
-        if (filterStr.equals("")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr("");
-            result.setFriendList(filterFriendList);
-            return result;
-        }
-        if (filterStr.contains("'")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr(filterStr);
-            result.setFriendList(filterFriendList);
-            return result;
-        }
-
-        //所有好友名单
-        List<UserInfo> mFriendInfoList = JGApplication.mFriendInfoList;
-        for (UserInfo friendInfo : mFriendInfoList) {
-            if (TextSearcher.contains(false, friendInfo.getNotename(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getNickname(), filterStr) ||
-                    TextSearcher.contains(false, friendInfo.getUserName(), filterStr)) {
-                filterFriendList.add(friendInfo);
-            }
-        }
-
-        searchResult.setFriendList(filterFriendList);
-        searchResult.setFilterStr(filterStr);
-        return searchResult;
-    }
-}

+ 0 - 345
o2android/app/src/main/java/jiguang/chat/activity/SearchMoreGroupActivity.java

@@ -1,345 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.graphics.Color;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.text.style.ForegroundColorSpan;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.TextContent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.api.options.MessageSendingOptions;
-import cn.jpush.im.android.eventbus.EventBus;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.adapter.SearchGroupListAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.ActivityController;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.model.SearchResult;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.HandleResponseCode;
-import jiguang.chat.utils.query.TextSearcher;
-
-/**
- * Created by ${chenyn} on 2017/5/2.
- */
-
-public class SearchMoreGroupActivity extends BaseActivity {
-
-    private EditText mSearchEditText;
-    private ListView mGroupsListView;
-    private TextView mSearchNoResultsTextView;
-    private LinearLayout mPressBackImageView;
-    private LinearLayout mGroupListResultsLinearLayout;
-
-    private String mFilterString;
-
-    private AsyncTask mAsyncTask;
-    private ThreadPoolExecutor mExecutor;
-    private boolean isForwardMsg;
-    private boolean isBusinessCard;
-    private Dialog mDialog;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_more_groups_info);
-        ActivityController.addActivity(this);
-
-        Intent intent = getIntent();
-        mFilterString = intent.getStringExtra("filterString");
-        isForwardMsg = intent.getBooleanExtra("forwardMsg", false);
-        isBusinessCard = intent.getBooleanExtra("businessCard", false);
-
-        initView();
-        initData();
-    }
-
-    public void initView() {
-        mSearchEditText = (EditText) findViewById(R.id.ac_et_search);
-        mGroupsListView = (ListView) findViewById(R.id.ac_lv_group_list_detail_info);
-        mSearchNoResultsTextView = (TextView) findViewById(R.id.ac_tv_search_no_results);
-        mPressBackImageView = (LinearLayout) findViewById(R.id.ac_iv_press_back);
-        mGroupListResultsLinearLayout = (LinearLayout) findViewById(R.id.ac_ll_group_list_result);
-    }
-
-    public void initData() {
-        mExecutor = new ThreadPoolExecutor(3, 5, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-
-        mSearchEditText.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-            }
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                mFilterString = s.toString();
-                mAsyncTask = new AsyncTask<String, Void, SearchResult>() {
-
-                    @Override
-                    protected SearchResult doInBackground(String... params) {
-                        return filterInfo(mFilterString);
-                    }
-
-                    @Override
-                    protected void onPostExecute(SearchResult searchResult) {
-
-                        if (searchResult.getFilterStr().equals(mFilterString)) {
-
-                            List<GroupInfo> filterGroupId = searchResult.getGroupList();
-                            if (filterGroupId.size() > 0) {
-                                mGroupListResultsLinearLayout.setVisibility(View.VISIBLE);
-                                mGroupsListView.setVisibility(View.VISIBLE);
-                                SearchGroupListAdapter groupListAdapter = new SearchGroupListAdapter(SearchMoreGroupActivity.this, filterGroupId, mFilterString);
-                                mGroupsListView.setAdapter(groupListAdapter);
-                            } else {
-                                mGroupListResultsLinearLayout.setVisibility(View.GONE);
-                                mGroupsListView.setVisibility(View.GONE);
-                            }
-                            if (mFilterString.equals("")) {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                            if (filterGroupId.size() == 0) {
-                                if (mFilterString.equals("")) {
-                                    mSearchNoResultsTextView.setVisibility(View.GONE);
-                                } else {
-                                    mSearchNoResultsTextView.setVisibility(View.VISIBLE);
-                                    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_pre));
-                                    SpannableStringBuilder colorFilterStr = new SpannableStringBuilder(mFilterString);
-                                    colorFilterStr.setSpan(new ForegroundColorSpan(Color.parseColor("#2DD0CF")), 0, mFilterString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-                                    spannableStringBuilder.append(colorFilterStr);
-                                    spannableStringBuilder.append(getResources().getString(R.string.ac_search_no_result_suffix));
-                                    mSearchNoResultsTextView.setText(spannableStringBuilder);
-                                }
-                            } else {
-                                mSearchNoResultsTextView.setVisibility(View.GONE);
-                            }
-                        }
-                    }
-                }.executeOnExecutor(mExecutor, s.toString());
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-
-            }
-        });
-
-        mSearchEditText.setOnTouchListener(new View.OnTouchListener() {
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                final int DRAWABLE_RIGHT = 2;
-
-                if (event.getAction() == MotionEvent.ACTION_UP) {
-                    if (event.getRawX() >= (mSearchEditText.getRight() - 2 * mSearchEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
-                        mSearchEditText.setText("");
-                        mSearchEditText.clearFocus();
-                        return true;
-                    }
-                }
-                return false;
-            }
-        });
-
-        mPressBackImageView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                SearchMoreGroupActivity.this.finish();
-            }
-        });
-
-        mGroupsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                Object selectObject = parent.getItemAtPosition(position);
-                if (selectObject instanceof GroupInfo) {
-                    GroupInfo groupInfo = (GroupInfo) selectObject;
-                    long groupID = groupInfo.getGroupID();
-                    Conversation conversation = JMessageClient.getGroupConversation(groupID);
-                    if (conversation == null) {
-                        conversation = Conversation.createGroupConversation(groupID);
-                        EventBus.getDefault().post(new Event.Builder()
-                                .setType(EventType.createConversation)
-                                .setConversation(conversation)
-                                .build());
-                    }
-                    if (isForwardMsg) {
-                        DialogCreator.createForwardMsg(SearchMoreGroupActivity.this, mWidth, false, null, groupInfo, conversation.getTitle(), null);
-                    }else if (isBusinessCard) {
-                        setSearchContactsBusiness(getIntent(), groupInfo, null);
-                    } else {
-                        final Intent intent = new Intent(SearchMoreGroupActivity.this, ChatActivity.class);
-                        intent.putExtra(JGApplication.GROUP_ID, groupID);
-                        intent.putExtra(JGApplication.MEMBERS_COUNT, groupInfo.getGroupMembers().size());
-                        intent.putExtra(JGApplication.CONV_TITLE, conversation.getTitle());
-                        startActivity(intent);
-                    }
-                }
-            }
-        });
-
-        mSearchEditText.setText(mFilterString);
-    }
-
-    public void setSearchContactsBusiness(final Intent intent, final GroupInfo groupInfo, final UserInfo userInfo) {
-        View.OnClickListener listener = new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                switch (v.getId()) {
-                    case R.id.btn_cancel:
-                        mDialog.dismiss();
-                        break;
-                    case R.id.btn_sure:
-                        mDialog.dismiss();
-                        //把名片的userName和appKey通过extra发送给对方
-                        TextContent content = new TextContent("推荐了一张名片");
-                        content.setStringExtra("userName", intent.getStringExtra("userName"));
-                        content.setStringExtra("appKey", intent.getStringExtra("appKey"));
-                        content.setStringExtra("businessCard", "businessCard");
-                        Conversation conversation;
-                        if (userInfo == null) {
-                            conversation = JMessageClient.getGroupConversation(groupInfo.getGroupID());
-                            if (conversation == null) {
-                                conversation = Conversation.createGroupConversation(groupInfo.getGroupID());
-                                EventBus.getDefault().post(new Event.Builder()
-                                        .setType(EventType.createConversation)
-                                        .setConversation(conversation)
-                                        .build());
-                            }
-                        } else {
-                            conversation = JMessageClient.getSingleConversation(userInfo.getUserName(), userInfo.getAppKey());
-                            if (conversation == null) {
-                                conversation = Conversation.createSingleConversation(userInfo.getUserName(), userInfo.getAppKey());
-                                EventBus.getDefault().post(new Event.Builder()
-                                        .setType(EventType.createConversation)
-                                        .setConversation(conversation)
-                                        .build());
-                            }
-                        }
-
-                        Message textMessage = conversation.createSendMessage(content);
-                        MessageSendingOptions options = new MessageSendingOptions();
-                        options.setNeedReadReceipt(false);
-                        JMessageClient.sendMessage(textMessage, options);
-                        textMessage.setOnSendCompleteCallback(new BasicCallback() {
-                            @Override
-                            public void gotResult(int i, String s) {
-                                if (i == 0) {
-                                    Toast.makeText(SearchMoreGroupActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
-                                } else {
-                                    HandleResponseCode.onHandle(SearchMoreGroupActivity.this, i, false);
-                                }
-                            }
-                        });
-                        break;
-                }
-            }
-        };
-        String name;
-        if (userInfo == null) {
-            name = groupInfo.getGroupName();
-        } else {
-            name = userInfo.getDisplayName();
-        }
-        mDialog = DialogCreator.createBusinessCardDialog(SearchMoreGroupActivity.this, listener, name,
-                intent.getStringExtra("userName"), intent.getStringExtra("avatar"));
-        mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-        mDialog.show();
-    }
-
-
-    private synchronized SearchResult filterInfo(String filterStr) {
-        SearchResult searchResult = new SearchResult();
-        List<GroupInfo> groupInfoList = new ArrayList<>();
-
-        if (filterStr.equals("")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr("");
-            result.setGroupList(groupInfoList);
-            return result;
-        }
-        if (filterStr.contains("'")) {
-            SearchResult result = new SearchResult();
-            result.setFilterStr(filterStr);
-            result.setGroupList(groupInfoList);
-            return result;
-        }
-
-        //所有的群组
-        List<GroupInfo> mGroupInfoList = JGApplication.mGroupInfoList;
-        String groupName;
-        for (GroupInfo groupInfo : mGroupInfoList) {
-            if (TextUtils.isEmpty(groupInfo.getGroupName())) {
-                //Conversation groupConversation = JMessageClient.getGroupConversation(groupId);
-                //群组名是null的话,手动拿出5个名字拼接
-                List<UserInfo> groupMembers = groupInfo.getGroupMembers();
-                StringBuilder builder = new StringBuilder();
-                if (groupMembers.size() <= 5) {
-                    groupName = getGroupName(groupMembers, builder);
-                } else {
-                    List<UserInfo> newGroupMember = groupMembers.subList(0, 5);
-                    groupName = getGroupName(newGroupMember, builder);
-                }
-            } else {
-                groupName = groupInfo.getGroupName();
-            }
-
-            if (TextSearcher.contains(false, groupName, mFilterString)) {
-                //如果群组名中包含输入的字符,就把这个群组的groupinfo加入list
-                groupInfoList.add(groupInfo);
-            }
-        }
-        searchResult.setGroupList(groupInfoList);
-        searchResult.setFilterStr(filterStr);
-        return searchResult;
-    }
-
-    private String getGroupName(List<UserInfo> groupMembers, StringBuilder builder) {
-        for (UserInfo info : groupMembers) {
-            String noteName = info.getDisplayName();
-            builder.append(noteName);
-            builder.append(",");
-        }
-
-        return builder.substring(0, builder.lastIndexOf(","));
-    }
-
-    @Override
-    public void onDestroy() {
-        if (mAsyncTask != null) {
-            mAsyncTask.cancel(true);
-            mAsyncTask = null;
-        }
-        super.onDestroy();
-    }
-}

+ 0 - 62
o2android/app/src/main/java/jiguang/chat/activity/SelectFriendActivity.java

@@ -1,62 +0,0 @@
-package jiguang.chat.activity;
-
-import android.os.Bundle;
-import android.widget.GridView;
-import android.widget.HorizontalScrollView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.adapter.CreateGroupAdapter;
-import jiguang.chat.controller.SelectFriendController;
-import jiguang.chat.utils.SoftKeyBoardStateHelper;
-import jiguang.chat.view.SelectFriendView;
-
-
-public class SelectFriendActivity extends BaseActivity{
-
-    private SelectFriendView mView;
-    private SelectFriendController mController;
-
-    private HorizontalScrollView scrollViewSelected;
-    private GridView imageSelectedGridView;
-    private CreateGroupAdapter mGroupAdapter;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_create_group);
-
-        mView = (SelectFriendView) findViewById(R.id.select_friend_view);
-
-        mGroupAdapter = new CreateGroupAdapter(SelectFriendActivity.this);
-        scrollViewSelected = (HorizontalScrollView) findViewById(R.id.contact_select_area);
-        imageSelectedGridView = (GridView) findViewById(R.id.contact_select_area_grid);
-        imageSelectedGridView.setAdapter(mGroupAdapter);
-        mView.initModule(mRatio, mDensity);
-
-        mController = new SelectFriendController(mView, this, getIntent().getLongExtra("add_friend_group_id", 0), scrollViewSelected, mGroupAdapter, imageSelectedGridView);
-        mView.setListeners(mController);
-        mView.setSideBarTouchListener(mController);
-        mView.setTextWatcher(mController);
-        mView.setGoneSideBar(false);
-
-
-        SoftKeyBoardStateHelper helper = new SoftKeyBoardStateHelper(findViewById(R.id.select_friend_view));
-        helper.addSoftKeyboardStateListener(new SoftKeyBoardStateHelper.SoftKeyboardStateListener() {
-            @Override
-            public void onSoftKeyboardOpened(int keyboardHeightInPx) {
-                mView.setGoneSideBar(true);
-            }
-
-            @Override
-            public void onSoftKeyboardClosed() {
-                mView.setGoneSideBar(false);
-            }
-        });
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mController.delNotFriend();
-    }
-}

+ 0 - 47
o2android/app/src/main/java/jiguang/chat/activity/SendFileActivity.java

@@ -1,47 +0,0 @@
-package jiguang.chat.activity;
-
-
-import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentManager;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.controller.SendFileController;
-import jiguang.chat.view.SendFileView;
-
-
-public class SendFileActivity extends FragmentActivity {
-
-    private SendFileView mView;
-    private SendFileController mController;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_send_file);
-        mView = (SendFileView) findViewById(R.id.send_file_view);
-        mView.initModule();
-        mController = new SendFileController(this, mView);
-        mView.setOnClickListener(mController);
-        mView.setOnPageChangeListener(mController);
-
-        //设置文件选择界面viewpager能左右滑动..在 会话 通讯录 我  主界面是不能左右滑动的
-        mView.setScroll(true);
-    }
-
-    public FragmentManager getSupportFragmentManger() {
-        // TODO Auto-generated method stub
-        return getSupportFragmentManager();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mView.setScroll(false);
-    }
-}

+ 0 - 75
o2android/app/src/main/java/jiguang/chat/activity/SetNoteNameActivity.java

@@ -1,75 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-
-import com.activeandroid.query.Update;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.database.FriendEntry;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.pinyin.HanyuPinyin;
-
-/**
- * Created by ${chenyn} on 2017/5/7.
- */
-
-public class SetNoteNameActivity extends BaseActivity {
-
-    private EditText mNote_name;
-    private Button mJmui_commit_btn;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_note_name);
-
-        initTitle(true, true, "备注名", "", true, "完成");
-        mNote_name = (EditText) findViewById(R.id.note_name);
-        mJmui_commit_btn = (Button) findViewById(R.id.jmui_commit_btn);
-        mNote_name.setText(getIntent().getStringExtra("note"));
-        final String userName = getIntent().getStringExtra("user");
-        mJmui_commit_btn.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                final String name = mNote_name.getText().toString();
-
-                JMessageClient.getUserInfo(userName, new GetUserInfoCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, final UserInfo info) {
-                        if (responseCode == 0) {
-                            info.updateNoteName(name, new BasicCallback() {
-                                @Override
-                                public void gotResult(int responseCode, String responseMessage) {
-                                    if (responseCode == 0) {
-                                        Intent intent = new Intent();
-                                        intent.putExtra("updateName", name);
-                                        setResult(1, intent);
-                                        ToastUtil.shortToast(SetNoteNameActivity.this, "更新成功");
-                                        //更新备注名时候同时更新数据库中的名字和letter
-                                        new Update(FriendEntry.class).set("DisplayName=?", name).where("Username=?", userName).execute();
-                                        new Update(FriendEntry.class).set("NoteName=?", name).where("Username=?", userName).execute();
-                                        String newNote = HanyuPinyin.getInstance().getStringPinYin(name.substring(0, 1));
-                                        new Update(FriendEntry.class).set("Letter=?", newNote.toUpperCase()).where("Username=?", userName).execute();
-                                        finish();
-                                    } else {
-                                        ToastUtil.shortToast(SetNoteNameActivity.this, "更新失败" + responseMessage);
-                                    }
-                                }
-                            });
-                        }
-                    }
-                });
-            }
-        });
-    }
-
-}

+ 0 - 146
o2android/app/src/main/java/jiguang/chat/activity/VerificationActivity.java

@@ -1,146 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Dialog;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.inputmethod.EditorInfo;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.ContactManager;
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.database.FriendRecommendEntry;
-import jiguang.chat.database.UserEntry;
-import jiguang.chat.entity.FriendInvitation;
-import jiguang.chat.model.InfoModel;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.ToastUtil;
-
-/**
- * Created by ${chenyn} on 2017/3/14.
- */
-
-public class VerificationActivity extends BaseActivity {
-
-    private EditText mEt_reason;
-    private UserInfo mMyInfo;
-    private String mTargetAppKey;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_verification);
-
-        initView();
-        initData();
-    }
-
-    private void initData() {
-        mEt_reason.setOnEditorActionListener(new TextView.OnEditorActionListener() {
-            @Override
-            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-                if (actionId == EditorInfo.IME_ACTION_SEND) {
-                    sendAddReason();
-                }
-                return false;
-            }
-        });
-
-        mJmui_commit_btn.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                sendAddReason();
-            }
-        });
-    }
-
-    private void sendAddReason() {
-        final String userName;
-        String displayName;
-        String targetAvatar;
-        Long targetUid;
-        if (getIntent().getFlags() == 1) {
-            //添加好友申请时对方信息
-            userName = getIntent().getStringExtra("detail_add_friend");
-            displayName = getIntent().getStringExtra("detail_add_nick_name");
-            targetAvatar = getIntent().getStringExtra("detail_add_avatar_path");
-            targetUid = getIntent().getLongExtra("detail_add_uid", 0);
-            if (TextUtils.isEmpty(displayName)) {
-                displayName = userName;
-            }
-            //搜索方式添加好友
-        } else {
-            targetAvatar = InfoModel.getInstance().getAvatarPath();
-            displayName = InfoModel.getInstance().getNickName();
-            targetUid = InfoModel.getInstance().getUid();
-            if (TextUtils.isEmpty(displayName)) {
-                displayName = InfoModel.getInstance().getUserName();
-            }
-            userName = InfoModel.getInstance().getUserName();
-        }
-        final String reason = mEt_reason.getText().toString();
-        final String finalTargetAvatar = targetAvatar;
-        final String finalDisplayName = displayName;
-        final Long finalUid = targetUid;
-        final Dialog dialog = DialogCreator.createLoadingDialog(this, this.getString(R.string.jmui_loading));
-        dialog.show();
-        ContactManager.sendInvitationRequest(userName, null, reason, new BasicCallback() {
-            @Override
-            public void gotResult(int responseCode, String responseMessage) {
-                dialog.dismiss();
-                if (responseCode == 0) {
-                    UserEntry userEntry = UserEntry.getUser(mMyInfo.getUserName(), mMyInfo.getAppKey());
-                    FriendRecommendEntry entry = FriendRecommendEntry.getEntry(userEntry,
-                            userName, mTargetAppKey);
-                    if (null == entry) {
-                        entry = new FriendRecommendEntry(finalUid, userName, "", finalDisplayName, mTargetAppKey,
-                                finalTargetAvatar, finalDisplayName, reason, FriendInvitation.INVITING.getValue(), userEntry, 100);
-                    } else {
-                        entry.state = FriendInvitation.INVITING.getValue();
-                        entry.reason = reason;
-                    }
-                    entry.save();
-                    ToastUtil.shortToast(VerificationActivity.this, "申请成功");
-                    finish();
-                } else if (responseCode == 871317) {
-                    ToastUtil.shortToast(VerificationActivity.this, "不能添加自己为好友");
-                } else {
-                    ToastUtil.shortToast(VerificationActivity.this, "申请失败");
-                }
-            }
-        });
-    }
-
-    private void initView() {
-        initTitle(true, true, "验证信息", "", true, "发送");
-        mEt_reason = (EditText) findViewById(R.id.et_reason);
-        mMyInfo = JMessageClient.getMyInfo();
-        mTargetAppKey = mMyInfo.getAppKey();
-        String name;
-        //群组详细信息点击非好友头像,跳转到此添加界面
-        if (getIntent().getFlags() == 1) {
-            name = getIntent().getStringExtra("detail_add_friend_my_nickname");
-            if (TextUtils.isEmpty(name)) {
-                mEt_reason.setText("我是");
-            } else {
-                mEt_reason.setText("我是" + name);
-            }
-            //搜索用户发送添加申请
-        } else {
-            name = mMyInfo.getNickname();
-            if (TextUtils.isEmpty(name)) {
-                mEt_reason.setText("我是");
-            } else {
-                mEt_reason.setText("我是" + name);
-            }
-        }
-
-    }
-}

+ 0 - 31
o2android/app/src/main/java/jiguang/chat/activity/WatchVideoActivity.java

@@ -1,31 +0,0 @@
-package jiguang.chat.activity;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.widget.VideoView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-
-/**
- * 视频播放界面
- */
-public class WatchVideoActivity extends Activity{
-
-    private VideoView mVv_video;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_watch_video);
-
-        mVv_video = (VideoView) findViewById(R.id.vv_video);
-
-        String videoPath = getIntent().getStringExtra("video_path");
-
-        mVv_video.setVideoPath(videoPath);
-        mVv_video.start();
-    }
-}

+ 0 - 43
o2android/app/src/main/java/jiguang/chat/activity/WelcomeActivity.java

@@ -1,43 +0,0 @@
-package jiguang.chat.activity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.model.UserInfo;
-
-public class WelcomeActivity extends AppCompatActivity {
-    private Context mContext;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_welcome);
-        mContext = this;
-        initData();
-    }
-
-    private void initData() {
-        //检测账号是否登陆
-        UserInfo myInfo = JMessageClient.getMyInfo();
-        if (myInfo == null) {
-            goToRegisterAndLoginActivity();
-        }else {
-            goToMainActivity();
-        }
-    }
-
-    private void goToMainActivity() {
-        startActivity(new Intent(mContext, MainActivity.class));
-        finish();
-    }
-
-    private void goToRegisterAndLoginActivity() {
-        startActivity(new Intent(mContext, LoginActivity.class));
-        finish();
-    }
-}

+ 0 - 174
o2android/app/src/main/java/jiguang/chat/activity/fragment/AudioFragment.java

@@ -1,174 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.ContentResolver;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.MediaStore;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import jiguang.chat.adapter.AudioAdapter;
-import jiguang.chat.controller.SendFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.SendAudioView;
-
-
-public class AudioFragment extends BaseFragment {
-
-    private Activity mContext;
-    private View mRootView;
-    private SendAudioView mSAView;
-    private AudioAdapter mAdapter;
-    private List<FileItem> mAudios = new ArrayList<>();
-    private ProgressDialog mProgressDialog;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private final MyHandler myHandler = new MyHandler(this);
-    private SendFileController mController;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.fragment_send_audio,
-                (ViewGroup) mContext.findViewById(R.id.send_doc_view), false);
-        mSAView = (SendAudioView) mRootView.findViewById(R.id.send_audio_view);
-        mSAView.initModule();
-        getAudios();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // TODO Auto-generated method stub
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    private void getAudios() {
-        //显示进度条
-        mProgressDialog = ProgressDialog.show(AudioFragment.this.getContext(), null,
-                mContext.getString(R.string.jmui_loading));
-
-        new Thread(new Runnable() {
-
-            @Override
-            public void run() {
-                ContentResolver contentResolver = mContext.getContentResolver();
-                String[] projection = new String[] {MediaStore.Audio.AudioColumns.DATA,
-                        MediaStore.Audio.AudioColumns.DISPLAY_NAME, MediaStore.Audio.AudioColumns.SIZE,
-                        MediaStore.Audio.AudioColumns.DATE_MODIFIED, MediaStore.Audio.AudioColumns.MIME_TYPE};
-
-                String selection = MediaStore.Audio.AudioColumns.MIME_TYPE + "= ? "
-                        + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? ";
-
-                String[] selectionArgs = new String[] {
-                        "audio/mpeg", "audio/x-ms-wma", "audio/x-wav", "audio/midi"};
-
-                Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
-                        projection, selection, selectionArgs, MediaStore.Audio.AudioColumns.DATE_MODIFIED + " desc");
-
-                if (cursor != null) {
-                    while (cursor.moveToNext()) {
-                        String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DISPLAY_NAME));
-                        String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA));
-                        String size = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.SIZE));
-                        String date = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATE_MODIFIED));
-                        if (scannerFile(filePath)) {
-                            FileItem fileItem = new FileItem(filePath, fileName, size, date, 0);
-                            mAudios.add(fileItem);
-                        }
-
-                    }
-                    cursor.close();
-                    cursor = null;
-                    //通知Handler扫描图片完成
-                    myHandler.sendEmptyMessage(SCAN_OK);
-                } else {
-                    myHandler.sendEmptyMessage(SCAN_ERROR);
-                }
-            }
-        }).start();
-
-    }
-
-    private File file;
-
-    private boolean scannerFile(String path) {
-        file = new File(path);
-        if (file.exists()) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public void setController(SendFileController controller) {
-        this.mController = controller;
-    }
-
-    public int getTotalCount() {
-        return mController.getPathListSize();
-    }
-
-    public long getTotalSize() {
-        return mController.getTotalSize();
-    }
-
-    private static class MyHandler extends Handler {
-        private final WeakReference<AudioFragment> mFragment;
-
-        public MyHandler(AudioFragment fragment) {
-            mFragment = new WeakReference<AudioFragment>(fragment);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            AudioFragment fragment = mFragment.get();
-            if (fragment != null) {
-                switch (msg.what) {
-                    case SCAN_OK:
-                        fragment.mProgressDialog.dismiss();
-                        fragment.mAdapter = new AudioAdapter(fragment, fragment.mAudios);
-                        fragment.mSAView.setAdapter(fragment.mAdapter);
-                        fragment.mAdapter.setUpdateListener(fragment.mController);
-                        break;
-                    case SCAN_ERROR:
-                        fragment.mProgressDialog.dismiss();
-                        Toast.makeText(fragment.getActivity(), fragment.getString(R.string.sdcard_not_prepare_toast),
-                                Toast.LENGTH_SHORT).show();
-                        break;
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (null != mProgressDialog) {
-            mProgressDialog.dismiss();
-        }
-    }
-
-}

+ 0 - 127
o2android/app/src/main/java/jiguang/chat/activity/fragment/BaseFragment.java

@@ -1,127 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-import android.app.Activity;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.util.DisplayMetrics;
-import android.view.View;
-import android.view.WindowManager;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.event.LoginStateChangeEvent;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.activity.LoginActivity;
-import jiguang.chat.activity.MainActivity;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.FileHelper;
-import jiguang.chat.utils.SharePreferenceManager;
-
-/**
- * Created by ${chenyn} on 2017/2/20.
- */
-
-public class BaseFragment extends Fragment {
-    private Dialog dialog;
-
-    private UserInfo myInfo;
-    protected float mDensity;
-    protected int mDensityDpi;
-    protected int mWidth;
-    protected int mHeight;
-    protected float mRatio;
-    protected int mAvatarSize;
-    private Context mContext;
-    public Activity mActivity;
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = this.getActivity();
-        //订阅接收消息,子类只要重写onEvent就能收到消息
-        JMessageClient.registerEventReceiver(this);
-        DisplayMetrics dm = new DisplayMetrics();
-        getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
-        mDensity = dm.density;
-        mDensityDpi = dm.densityDpi;
-        mWidth = dm.widthPixels;
-        mHeight = dm.heightPixels;
-        mRatio = Math.min((float) mWidth / 720, (float) mHeight / 1280);
-        mAvatarSize = (int) (50 * mDensity);
-
-    }
-
-    public void onEventMainThread(LoginStateChangeEvent event) {
-        final LoginStateChangeEvent.Reason reason = event.getReason();
-        UserInfo myInfo = event.getMyInfo();
-        if (myInfo != null) {
-            String path;
-            File avatar = myInfo.getAvatarFile();
-            if (avatar != null && avatar.exists()) {
-                path = avatar.getAbsolutePath();
-            } else {
-                path = FileHelper.getUserAvatarPath(myInfo.getUserName());
-            }
-            SharePreferenceManager.setCachedUsername(myInfo.getUserName());
-            SharePreferenceManager.setCachedAvatarPath(path);
-            JMessageClient.logout();
-        }
-        switch (reason) {
-            case user_logout:
-                View.OnClickListener listener = new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        switch (v.getId()) {
-                            case R.id.jmui_cancel_btn:
-                                Intent intent = new Intent(mContext, LoginActivity.class);
-                                startActivity(intent);
-                                break;
-                            case R.id.jmui_commit_btn:
-                                JMessageClient.login(SharePreferenceManager.getCachedUsername(), SharePreferenceManager.getCachedPsw(), new BasicCallback() {
-                                    @Override
-                                    public void gotResult(int responseCode, String responseMessage) {
-                                        if (responseCode == 0) {
-                                            Intent intent = new Intent(mContext, MainActivity.class);
-                                            startActivity(intent);
-                                        }
-                                    }
-                                });
-                                break;
-                        }
-                    }
-                };
-                dialog = DialogCreator.createLogoutStatusDialog(mContext, "您的账号在其他设备上登陆", listener);
-                dialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-                dialog.setCanceledOnTouchOutside(false);
-                dialog.setCancelable(false);
-                dialog.show();
-                break;
-            case user_password_change:
-                Intent intent = new Intent(mContext, LoginActivity.class);
-                startActivity(intent);
-                break;
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        //注销消息接收
-        JMessageClient.unRegisterEventReceiver(this);
-        if (dialog != null) {
-            dialog.dismiss();
-        }
-        super.onDestroy();
-    }
-
-    @Override
-    public void onAttach(Activity context) {
-        super.onAttach(context);
-        mActivity = context;
-    }
-}

+ 0 - 265
o2android/app/src/main/java/jiguang/chat/activity/fragment/ContactsFragment.java

@@ -1,265 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.ContactManager;
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetGroupIDListCallback;
-import cn.jpush.im.android.api.callback.GetGroupInfoCallback;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.callback.GetUserInfoListCallback;
-import cn.jpush.im.android.api.event.ContactNotifyEvent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.eventbus.EventBus;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.ContactsController;
-import jiguang.chat.database.FriendEntry;
-import jiguang.chat.database.FriendRecommendEntry;
-import jiguang.chat.database.UserEntry;
-import jiguang.chat.entity.Event;
-import jiguang.chat.entity.EventType;
-import jiguang.chat.entity.FriendInvitation;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ThreadUtil;
-import jiguang.chat.utils.pinyin.HanziToPinyin;
-import jiguang.chat.view.ContactsView;
-
-/**
- * Created by ${chenyn} on 2017/2/20.
- */
-
-public class ContactsFragment extends BaseFragment {
-    private View mRootView;
-    private ContactsView mContactsView;
-    private ContactsController mContactsController;
-    private Activity mContext;
-
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = this.getActivity();
-
-        LayoutInflater layoutInflater = getActivity().getLayoutInflater();
-        mRootView = layoutInflater.inflate(R.layout.fragment_contacts,
-                (ViewGroup) getActivity().findViewById(R.id.main_view), false);
-
-        mContactsView = (ContactsView) mRootView.findViewById(R.id.contacts_view);
-
-        mContactsView.initModule(mRatio, mDensity);
-        mContactsController = new ContactsController(mContactsView, this.getActivity());
-
-        mContactsView.setOnClickListener(mContactsController);
-        mContactsView.setListener(mContactsController);
-        mContactsView.setSideBarTouchListener(mContactsController);
-        mContactsController.initContacts();
-
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        mContactsView.showContact();
-        mContactsController.refreshContact();
-        //如果放到数据库做.能提高效率和网络状态不好的情况,但是不能实时获取在其他终端修改后的搜索匹配.
-        //为搜索群组做准备
-        JGApplication.mGroupInfoList.clear();
-        ThreadUtil.runInThread(new Runnable() {
-            @Override
-            public void run() {
-                JMessageClient.getGroupIDList(new GetGroupIDListCallback() {
-                    @Override
-                    public void gotResult(int responseCode, String responseMessage, List<Long> groupIDList) {
-                        if (responseCode == 0) {
-                            for (final Long groupID : groupIDList) {
-                                JMessageClient.getGroupInfo(groupID, new GetGroupInfoCallback() {
-                                    @Override
-                                    public void gotResult(int responseCode, String responseMessage, GroupInfo groupInfo) {
-                                        if (responseCode == 0) {
-                                            JGApplication.mGroupInfoList.add(groupInfo);
-                                        }
-                                    }
-                                });
-                            }
-                        }
-                    }
-                });
-            }
-        });
-        //为搜索好友做准备
-        if (JGApplication.mFriendInfoList != null)
-            JGApplication.mFriendInfoList.clear();
-        ContactManager.getFriendList(new GetUserInfoListCallback() {
-            @Override
-            public void gotResult(int i, String s, List<UserInfo> list) {
-                if (i == 0) {
-                    JGApplication.mFriendInfoList = list;
-                }
-            }
-        });
-    }
-
-    //接收到好友事件
-    public void onEvent(ContactNotifyEvent event) {
-        final UserEntry user = JGApplication.getUserEntry();
-        final String reason = event.getReason();
-        final String username = event.getFromUsername();
-        final String appKey = event.getfromUserAppKey();
-        //对方接收了你的好友请求
-        if (event.getType() == ContactNotifyEvent.Type.invite_accepted) {
-            JMessageClient.getUserInfo(username, appKey, new GetUserInfoCallback() {
-                @Override
-                public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                    if (responseCode == 0) {
-                        String name = info.getNickname();
-                        if (TextUtils.isEmpty(name)) {
-                            name = info.getUserName();
-                        }
-                        FriendEntry friendEntry = FriendEntry.getFriend(user, username, appKey);
-                        if (friendEntry == null) {
-                            final FriendEntry newFriend = new FriendEntry(info.getUserID(), username, info.getNotename(), info.getNickname(), appKey, info.getAvatar(), name, getLetter(name), user);
-                            newFriend.save();
-                            mContext.runOnUiThread(new Runnable() {
-                                @Override
-                                public void run() {
-                                    mContactsController.refresh(newFriend);
-                                }
-                            });
-                        }
-                    }
-                }
-            });
-            FriendRecommendEntry entry = FriendRecommendEntry.getEntry(user, username, appKey);
-            entry.state = FriendInvitation.ACCEPTED.getValue();
-            entry.save();
-
-            Conversation conversation = JMessageClient.getSingleConversation(username);
-            if (conversation == null) {
-                conversation = Conversation.createSingleConversation(username);
-                EventBus.getDefault().post(new Event.Builder()
-                        .setType(EventType.createConversation)
-                        .setConversation(conversation)
-                        .build());
-            }
-
-            //拒绝好友请求
-        } else if (event.getType() == ContactNotifyEvent.Type.invite_declined) {
-            JGApplication.forAddFriend.remove(username);
-            FriendRecommendEntry entry = FriendRecommendEntry.getEntry(user, username, appKey);
-            entry.state = FriendInvitation.BE_REFUSED.getValue();
-            entry.reason = reason;
-            entry.save();
-            //收到好友邀请
-        } else if (event.getType() == ContactNotifyEvent.Type.invite_received) {
-            //如果同一个人申请多次,则只会出现一次;当点击进验证消息界面后,同一个人再次申请则可以收到
-            if (JGApplication.forAddFriend.size() > 0) {
-                for (String forAdd : JGApplication.forAddFriend) {
-                    if (forAdd.equals(username)) {
-                        return;
-                    } else {
-                        JGApplication.forAddFriend.add(username);
-                    }
-                }
-            } else {
-                JGApplication.forAddFriend.add(username);
-            }
-            JMessageClient.getUserInfo(username, appKey, new GetUserInfoCallback() {
-                @Override
-                public void gotResult(int status, String desc, UserInfo userInfo) {
-                    if (status == 0) {
-                        String name = userInfo.getNickname();
-                        if (TextUtils.isEmpty(name)) {
-                            name = userInfo.getUserName();
-                        }
-                        FriendRecommendEntry entry = FriendRecommendEntry.getEntry(user, username, appKey);
-                        if (null == entry) {
-                            if (null != userInfo.getAvatar()) {
-                                String path = userInfo.getAvatarFile().getPath();
-                                entry = new FriendRecommendEntry(userInfo.getUserID(), username, userInfo.getNotename(), userInfo.getNickname(), appKey, path,
-                                        name, reason, FriendInvitation.INVITED.getValue(), user, 0);
-                            } else {
-                                entry = new FriendRecommendEntry(userInfo.getUserID(), username, userInfo.getNotename(), userInfo.getNickname(), appKey, null,
-                                        username, reason, FriendInvitation.INVITED.getValue(), user, 0);
-                            }
-                        } else {
-                            entry.state = FriendInvitation.INVITED.getValue();
-                            entry.reason = reason;
-                        }
-                        entry.save();
-                        //收到好友请求数字 +1
-                        int showNum = SharePreferenceManager.getCachedNewFriendNum() + 1;
-                        mContactsView.showNewFriends(showNum);
-                        SharePreferenceManager.setCachedNewFriendNum(showNum);
-                    }
-                }
-            });
-        } else if (event.getType() == ContactNotifyEvent.Type.contact_deleted) {
-            JGApplication.forAddFriend.remove(username);
-            FriendEntry friendEntry = FriendEntry.getFriend(user, username, appKey);
-            friendEntry.delete();
-            mContactsController.refreshContact();
-        }
-    }
-
-    public void onEventMainThread(Event event) {
-        if (event.getType() == EventType.addFriend) {
-            FriendRecommendEntry recommendEntry = FriendRecommendEntry.getEntry(event.getFriendId());
-            if (null != recommendEntry) {
-                FriendEntry friendEntry = FriendEntry.getFriend(recommendEntry.user,
-                        recommendEntry.username, recommendEntry.appKey);
-                if (null == friendEntry) {
-                    friendEntry = new FriendEntry(recommendEntry.uid, recommendEntry.username, recommendEntry.noteName, recommendEntry.nickName, recommendEntry.appKey,
-                            recommendEntry.avatar, recommendEntry.displayName,
-                            getLetter(recommendEntry.displayName), recommendEntry.user);
-                    friendEntry.save();
-                    mContactsController.refresh(friendEntry);
-                }
-            }
-        }
-    }
-
-    private String getLetter(String name) {
-        String letter;
-        ArrayList<HanziToPinyin.Token> tokens = HanziToPinyin.getInstance()
-                .get(name);
-        StringBuilder sb = new StringBuilder();
-        if (tokens != null && tokens.size() > 0) {
-            for (HanziToPinyin.Token token : tokens) {
-                if (token.type == HanziToPinyin.Token.PINYIN) {
-                    sb.append(token.target);
-                } else {
-                    sb.append(token.source);
-                }
-            }
-        }
-        String sortString = sb.toString().substring(0, 1).toUpperCase();
-        if (sortString.matches("[A-Z]")) {
-            letter = sortString.toUpperCase();
-        } else {
-            letter = "#";
-        }
-        return letter;
-    }
-}

+ 0 - 339
o2android/app/src/main/java/jiguang/chat/activity/fragment/ConversationListFragment.java

@@ -1,339 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.PopupWindow;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.enums.ConversationType;
-import cn.jpush.im.android.api.event.ConversationRefreshEvent;
-import cn.jpush.im.android.api.event.MessageEvent;
-import cn.jpush.im.android.api.event.MessageReceiptStatusChangeEvent;
-import cn.jpush.im.android.api.event.MessageRetractEvent;
-import cn.jpush.im.android.api.event.OfflineMessageEvent;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.GroupInfo;
-import cn.jpush.im.android.api.model.Message;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.android.eventbus.EventBus;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.controller.ConversationListController;
-import jiguang.chat.controller.MenuItemController;
-import jiguang.chat.entity.Event;
-import jiguang.chat.view.ConversationListView;
-import jiguang.chat.view.MenuItemView;
-
-/**
- * Created by ${chenyn} on 2017/2/20.
- */
-
-public class ConversationListFragment extends BaseFragment {
-
-    private Activity mContext;
-    private View mRootView;
-    private ConversationListView mConvListView;
-    private ConversationListController mConvListController;
-    private HandlerThread mThread;
-    private static final int REFRESH_CONVERSATION_LIST = 0x3000;
-    private static final int DISMISS_REFRESH_HEADER = 0x3001;
-    private static final int ROAM_COMPLETED = 0x3002;
-    private BackgroundHandler mBackgroundHandler;
-    private View mMenuView;
-    private PopupWindow mMenuPopWindow;
-    private MenuItemView mMenuItemView;
-    private NetworkReceiver mReceiver;
-    private MenuItemController mMenuController;
-    protected boolean isCreate = false;
-
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        isCreate = true;
-        mContext = this.getActivity();
-
-        LayoutInflater layoutInflater = getActivity().getLayoutInflater();
-        mRootView = layoutInflater.inflate(R.layout.fragment_conv_list,
-                (ViewGroup) getActivity().findViewById(R.id.main_view), false);
-        mConvListView = new ConversationListView(mRootView, this.getActivity(), this);
-        mConvListView.initModule();
-        mThread = new HandlerThread("MainActivity");
-        mThread.start();
-        mBackgroundHandler = new BackgroundHandler(mThread.getLooper());
-        mMenuView = getActivity().getLayoutInflater().inflate(R.layout.drop_down_menu, null);
-        mConvListController = new ConversationListController(mConvListView, this, mWidth);
-        mConvListView.setListener(mConvListController);
-        mConvListView.setItemListeners(mConvListController);
-        mConvListView.setLongClickListener(mConvListController);
-        mMenuPopWindow = new PopupWindow(mMenuView, WindowManager.LayoutParams.WRAP_CONTENT,
-                WindowManager.LayoutParams.WRAP_CONTENT, true);
-        mMenuItemView = new MenuItemView(mMenuView);
-        mMenuItemView.initModule();
-
-        mMenuController = new MenuItemController(this);
-        mMenuItemView.setListeners(mMenuController);
-
-
-        ConnectivityManager manager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
-        NetworkInfo activeInfo = manager.getActiveNetworkInfo();
-        if (null == activeInfo) {
-            mConvListView.showHeaderView();
-        } else {
-            mConvListView.dismissHeaderView();
-            mConvListView.showLoadingHeader();
-            mBackgroundHandler.sendEmptyMessageDelayed(DISMISS_REFRESH_HEADER, 1000);
-        }
-        initReceiver();
-
-    }
-
-    private void initReceiver() {
-        mReceiver = new NetworkReceiver();
-        IntentFilter filter = new IntentFilter();
-        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
-        mContext.registerReceiver(mReceiver, filter);
-    }
-
-    //监听网络状态的广播
-    private class NetworkReceiver extends BroadcastReceiver {
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (intent != null && intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) {
-                ConnectivityManager manager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
-                NetworkInfo activeInfo = manager.getActiveNetworkInfo();
-                if (null == activeInfo) {
-                    mConvListView.showHeaderView();
-                } else {
-                    mConvListView.dismissHeaderView();
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-    }
-
-    public void showPopWindow() {
-        mMenuPopWindow.setTouchable(true);
-        mMenuPopWindow.setOutsideTouchable(true);
-        mMenuPopWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null));
-        if (mMenuPopWindow.isShowing()) {
-            mMenuPopWindow.dismiss();
-        } else {
-            mMenuPopWindow.showAsDropDown(mRootView.findViewById(R.id.create_group_btn), -10, -5);
-        }
-    }
-
-    /**
-     * 收到消息
-     */
-    public void onEvent(MessageEvent event) {
-        mConvListView.setUnReadMsg(JMessageClient.getAllUnReadMsgCount());
-        Message msg = event.getMessage();
-        if (msg.getTargetType() == ConversationType.group) {
-            long groupId = ((GroupInfo) msg.getTargetInfo()).getGroupID();
-            Conversation conv = JMessageClient.getGroupConversation(groupId);
-            if (conv != null && mConvListController != null) {
-                if (msg.isAtMe()) {
-                    JGApplication.isAtMe.put(groupId, true);
-                    mConvListController.getAdapter().putAtConv(conv, msg.getId());
-                }
-                if (msg.isAtAll()) {
-                    JGApplication.isAtall.put(groupId, true);
-                    mConvListController.getAdapter().putAtAllConv(conv, msg.getId());
-                }
-                mBackgroundHandler.sendMessage(mBackgroundHandler.obtainMessage(REFRESH_CONVERSATION_LIST,
-                        conv));
-            }
-        } else {
-            final UserInfo userInfo = (UserInfo) msg.getTargetInfo();
-            String targetId = userInfo.getUserName();
-            Conversation conv = JMessageClient.getSingleConversation(targetId, userInfo.getAppKey());
-            if (conv != null && mConvListController != null) {
-                mContext.runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (TextUtils.isEmpty(userInfo.getAvatar())) {
-                            userInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                                @Override
-                                public void gotResult(int responseCode, String responseMessage, Bitmap avatarBitmap) {
-                                    if (responseCode == 0) {
-                                        mConvListController.getAdapter().notifyDataSetChanged();
-                                    }
-                                }
-                            });
-                        }
-                    }
-                });
-                mBackgroundHandler.sendMessage(mBackgroundHandler.obtainMessage(REFRESH_CONVERSATION_LIST, conv));
-            }
-        }
-    }
-
-    /**
-     * 接收离线消息
-     *
-     * @param event 离线消息事件
-     */
-    public void onEvent(OfflineMessageEvent event) {
-        Conversation conv = event.getConversation();
-        if (!conv.getTargetId().equals("feedback_Android")) {
-            mBackgroundHandler.sendMessage(mBackgroundHandler.obtainMessage(REFRESH_CONVERSATION_LIST, conv));
-        }
-    }
-
-    /**
-     * 消息撤回
-     */
-    public void onEvent(MessageRetractEvent event) {
-        Conversation conversation = event.getConversation();
-        mBackgroundHandler.sendMessage(mBackgroundHandler.obtainMessage(REFRESH_CONVERSATION_LIST, conversation));
-    }
-
-    /**
-     * 消息已读事件
-     */
-    public void onEventMainThread(MessageReceiptStatusChangeEvent event) {
-        mConvListController.getAdapter().notifyDataSetChanged();
-    }
-
-    /**
-     * 消息漫游完成事件
-     *
-     * @param event 漫游完成后, 刷新会话事件
-     */
-    public void onEvent(ConversationRefreshEvent event) {
-        Conversation conv = event.getConversation();
-        if (!conv.getTargetId().equals("feedback_Android")) {
-            mBackgroundHandler.sendMessage(mBackgroundHandler.obtainMessage(REFRESH_CONVERSATION_LIST, conv));
-            //多端在线未读数改变时刷新
-            if (event.getReason().equals(ConversationRefreshEvent.Reason.UNREAD_CNT_UPDATED)) {
-                mBackgroundHandler.sendMessage(mBackgroundHandler.obtainMessage(REFRESH_CONVERSATION_LIST, conv));
-            }
-        }
-    }
-
-    private class BackgroundHandler extends Handler {
-        public BackgroundHandler(Looper looper) {
-            super(looper);
-        }
-
-        @Override
-        public void handleMessage(android.os.Message msg) {
-            super.handleMessage(msg);
-            switch (msg.what) {
-                case REFRESH_CONVERSATION_LIST:
-                    Conversation conv = (Conversation) msg.obj;
-                    mConvListController.getAdapter().setToTop(conv);
-                    break;
-                case DISMISS_REFRESH_HEADER:
-                    mContext.runOnUiThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            mConvListView.dismissLoadingHeader();
-                        }
-                    });
-                    break;
-                case ROAM_COMPLETED:
-                    conv = (Conversation) msg.obj;
-                    mConvListController.getAdapter().addAndSort(conv);
-                    break;
-            }
-        }
-    }
-
-    public void onEventMainThread(Event event) {
-        switch (event.getType()) {
-            case createConversation:
-                Conversation conv = event.getConversation();
-                if (conv != null) {
-                    mConvListController.getAdapter().addNewConversation(conv);
-                }
-                break;
-            case deleteConversation:
-                conv = event.getConversation();
-                if (null != conv) {
-                    mConvListController.getAdapter().deleteConversation(conv);
-                }
-                break;
-            //收到保存为草稿事件
-            case draft:
-                conv = event.getConversation();
-                String draft = event.getDraft();
-                //如果草稿内容不为空,保存,并且置顶该会话
-                if (!TextUtils.isEmpty(draft)) {
-                    mConvListController.getAdapter().putDraftToMap(conv, draft);
-                    mConvListController.getAdapter().setToTop(conv);
-                    //否则删除
-                } else {
-                    mConvListController.getAdapter().delDraftFromMap(conv);
-                }
-                break;
-            case addFriend:
-                break;
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        dismissPopWindow();
-        mMenuItemView.showAddFriend();
-        mConvListController.getAdapter().notifyDataSetChanged();
-    }
-
-    public void dismissPopWindow() {
-        if (mMenuPopWindow.isShowing()) {
-            mMenuPopWindow.dismiss();
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        EventBus.getDefault().unregister(this);
-        mContext.unregisterReceiver(mReceiver);
-        mBackgroundHandler.removeCallbacksAndMessages(null);
-        mThread.getLooper().quit();
-        super.onDestroy();
-    }
-
-    public void sortConvList() {
-        if (mConvListController != null) {
-            mConvListController.getAdapter().sortConvList();
-        }
-    }
-
-}

+ 0 - 181
o2android/app/src/main/java/jiguang/chat/activity/fragment/DocumentFragment.java

@@ -1,181 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.ContentResolver;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.MediaStore;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import jiguang.chat.adapter.DocumentAdapter;
-import jiguang.chat.controller.SendFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.SendDocumentView;
-
-
-public class DocumentFragment extends BaseFragment {
-
-    private Activity mContext;
-    private View mRootView;
-    private SendDocumentView mView;
-    private DocumentAdapter mAdapter;
-    private List<FileItem> mDocuments = new ArrayList<>();
-    private ProgressDialog mProgressDialog;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private final MyHandler myHandler = new MyHandler(this);
-    private SendFileController mController;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.fragment_send_doc,
-                (ViewGroup) mContext.findViewById(R.id.send_doc_view), false);
-        mView = (SendDocumentView) mRootView.findViewById(R.id.send_doc_view);
-        mView.initModule();
-        getDocuments();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // TODO Auto-generated method stub
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    public void setController(SendFileController controller) {
-        this.mController = controller;
-    }
-
-    public int getTotalCount() {
-        return mController.getPathListSize();
-    }
-
-    public long getTotalSize() {
-        return mController.getTotalSize();
-    }
-
-
-    private void getDocuments() {
-        //显示进度条
-        mProgressDialog = ProgressDialog.show(DocumentFragment.this.getContext(), null,
-                mContext.getString(R.string.jmui_loading));
-
-        new Thread(new Runnable() {
-
-            @Override
-            public void run() {
-                ContentResolver contentResolver = mContext.getContentResolver();
-                String[] projection = new String[] {MediaStore.Files.FileColumns.DATA,
-                        MediaStore.Files.FileColumns.TITLE, MediaStore.Files.FileColumns.SIZE,
-                        MediaStore.Files.FileColumns.DATE_MODIFIED};
-
-                //分别对应 txt doc pdf ppt xls wps docx pptx xlsx 类型的文档
-                String selection = MediaStore.Files.FileColumns.MIME_TYPE + "= ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? "
-                        + " or " + MediaStore.Files.FileColumns.MIME_TYPE + " = ? ";
-
-                String[] selectionArgs = new String[] {"text/plain", "application/msword", "application/pdf",
-                        "application/vnd.ms-powerpoint", "application/vnd.ms-excel", "application/vnd.ms-works",
-                        "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
-                        "application/vnd.openxmlformats-officedocument.presentationml.presentation",
-                        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};
-
-                Cursor cursor = contentResolver.query(MediaStore.Files.getContentUri("external"), projection,
-                        selection, selectionArgs, MediaStore.Files.FileColumns.DATE_MODIFIED + " desc");
-
-                if (cursor != null) {
-                    while (cursor.moveToNext()) {
-                        String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA));
-                        String size = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.SIZE));
-                        String date = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DATE_MODIFIED));
-                        if (scannerFile(filePath)) {
-                            FileItem fileItem = new FileItem(filePath, null, size, date,0);
-                            mDocuments.add(fileItem);
-                        }
-
-                    }
-                    cursor.close();
-                    cursor = null;
-                    myHandler.sendEmptyMessage(SCAN_OK);
-                } else {
-                    myHandler.sendEmptyMessage(SCAN_ERROR);
-                }
-            }
-        }).start();
-    }
-
-    private File file;
-
-    private boolean scannerFile(String path) {
-        file = new File(path);
-        if (file.exists() && file.length() > 0) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    private static class MyHandler extends Handler {
-        private final WeakReference<DocumentFragment> mFragment;
-
-        public MyHandler(DocumentFragment fragment) {
-            mFragment = new WeakReference<DocumentFragment>(fragment);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            DocumentFragment fragment = mFragment.get();
-            if (fragment != null) {
-                switch (msg.what) {
-                    case SCAN_OK:
-                        //关闭进度条
-                        fragment.mProgressDialog.dismiss();
-                        fragment.mAdapter = new DocumentAdapter(fragment, fragment.mDocuments);
-                        fragment.mView.setAdapter(fragment.mAdapter);
-                        fragment.mAdapter.setUpdateListener(fragment.mController);
-                        break;
-                    case SCAN_ERROR:
-                        fragment.mProgressDialog.dismiss();
-                        Toast.makeText(fragment.getActivity(), fragment.getString(R.string.sdcard_not_prepare_toast),
-                                Toast.LENGTH_SHORT).show();
-                        break;
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (null != mProgressDialog) {
-            mProgressDialog.dismiss();
-        }
-    }
-}

+ 0 - 166
o2android/app/src/main/java/jiguang/chat/activity/fragment/ImageFragment.java

@@ -1,166 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.ContentResolver;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.MediaStore;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import jiguang.chat.adapter.ImageAdapter;
-import jiguang.chat.controller.SendFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.SendImageView;
-
-
-public class ImageFragment extends BaseFragment {
-
-    private Activity mContext;
-    private View mRootView;
-    private SendImageView mSIView;
-    private ImageAdapter mAdapter;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private final MyHandler myHandler = new MyHandler(this);
-    private List<FileItem> mImages = new ArrayList<>();
-    private ProgressDialog mProgressDialog;
-    private SendFileController mController;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.fragment_send_image,
-                (ViewGroup) mContext.findViewById(R.id.send_doc_view), false);
-        mSIView = (SendImageView) mRootView.findViewById(R.id.send_image_view);
-        mSIView.initModule();
-        getImages();
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // TODO Auto-generated method stub
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    private void getImages() {
-        //显示进度条
-        mProgressDialog = ProgressDialog.show(ImageFragment.this.getContext(), null,
-                mContext.getString(R.string.jmui_loading));
-
-        new Thread(new Runnable() {
-
-            @Override
-            public void run() {
-                Uri imageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
-                ContentResolver contentResolver = mContext.getContentResolver();
-                String[] projection = new String[] {MediaStore.Images.ImageColumns.DATA,
-                        MediaStore.Images.ImageColumns.DISPLAY_NAME,
-                        MediaStore.Images.ImageColumns.SIZE};
-                Cursor cursor = contentResolver.query(imageUri, projection, null, null,
-                        MediaStore.Images.Media.DATE_MODIFIED + " desc");
-                if (cursor == null || cursor.getCount() == 0) {
-                    myHandler.sendEmptyMessage(SCAN_ERROR);
-                } else {
-                    while (cursor.moveToNext()) {
-                        //获取图片的路径
-                        String path = cursor.getString(cursor
-                                .getColumnIndex(MediaStore.Images.Media.DATA));
-                        String fileName = cursor.getString(cursor
-                                .getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
-                        String size = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.SIZE));
-                        if (scannerFile(path)) {
-                            FileItem item = new FileItem(path, fileName, size, null, 0);
-                            mImages.add(item);
-                        }
-                    }
-                    cursor.close();
-                    //通知Handler扫描图片完成
-                    myHandler.sendEmptyMessage(SCAN_OK);
-                }
-            }
-        }).start();
-
-    }
-
-    private File file;
-
-    private boolean scannerFile(String path) {
-        file = new File(path);
-        if (file.exists() && file.length() > 0) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public void setController(SendFileController controller) {
-        this.mController = controller;
-    }
-
-    public int getTotalCount() {
-        return mController.getPathListSize();
-    }
-
-    public long getTotalSize() {
-        return mController.getTotalSize();
-    }
-
-    private static class MyHandler extends Handler {
-        private final WeakReference<ImageFragment> mFragment;
-
-        public MyHandler(ImageFragment fragment) {
-            mFragment = new WeakReference<ImageFragment>(fragment);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            ImageFragment fragment = mFragment.get();
-            if (fragment != null) {
-                switch (msg.what) {
-                    case SCAN_OK:
-                        //关闭进度条
-                        fragment.mProgressDialog.dismiss();
-                        fragment.mAdapter = new ImageAdapter(fragment, fragment.mImages);
-                        fragment.mSIView.setAdapter(fragment.mAdapter);
-                        fragment.mAdapter.setUpdateListener(fragment.mController);
-                        break;
-                    case SCAN_ERROR:
-                        fragment.mProgressDialog.dismiss();
-                        Toast.makeText(fragment.getActivity(), fragment.getString(R.string.sdcard_not_prepare_toast), Toast.LENGTH_SHORT).show();
-                        break;
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (null != mProgressDialog) {
-            mProgressDialog.dismiss();
-        }
-    }
-}

+ 0 - 101
o2android/app/src/main/java/jiguang/chat/activity/fragment/MeFragment.java

@@ -1,101 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-import android.app.NotificationManager;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.activity.LoginActivity;
-import jiguang.chat.controller.MeController;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.view.MeView;
-
-/**
- * Created by ${chenyn} on 2017/2/20.
- */
-
-public class MeFragment extends BaseFragment {
-    private View mRootView;
-    public MeView mMeView;
-    private MeController mMeController;
-    private Context mContext;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = this.getActivity();
-        LayoutInflater layoutInflater = getActivity().getLayoutInflater();
-        mRootView = layoutInflater.inflate(R.layout.fragment_me,
-                (ViewGroup) getActivity().findViewById(R.id.main_view), false);
-        mMeView = (MeView) mRootView.findViewById(R.id.me_view);
-        mMeView.initModule(mDensity, mWidth);
-        mMeController = new MeController(this, mWidth);
-        mMeView.setListener(mMeController);
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    @Override
-    public void onResume() {
-        UserInfo myInfo = JMessageClient.getMyInfo();
-        myInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-            @Override
-            public void gotResult(int i, String s, Bitmap bitmap) {
-                if (i == 0) {
-                    mMeView.showPhoto(bitmap);
-                    mMeController.setBitmap(bitmap);
-                }else {
-                    mMeView.showPhoto(null);
-                    mMeController.setBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.rc_default_portrait));
-                }
-            }
-        });
-        mMeView.showNickName(myInfo);
-        super.onResume();
-    }
-
-    public void cancelNotification() {
-        NotificationManager manager = (NotificationManager) this.getActivity().getApplicationContext()
-                .getSystemService(Context.NOTIFICATION_SERVICE);
-        manager.cancelAll();
-    }
-
-    //退出登录
-    public void Logout() {
-        final Intent intent = new Intent();
-        UserInfo info = JMessageClient.getMyInfo();
-        if (null != info) {
-            SharePreferenceManager.setCachedUsername(info.getUserName());
-            if (info.getAvatarFile() != null) {
-                SharePreferenceManager.setCachedAvatarPath(info.getAvatarFile().getAbsolutePath());
-            }
-            JMessageClient.logout();
-            intent.setClass(mContext, LoginActivity.class);
-            startActivity(intent);
-        } else {
-            ToastUtil.shortToast(mContext, "退出失败");
-        }
-    }
-
-}

+ 0 - 173
o2android/app/src/main/java/jiguang/chat/activity/fragment/OtherFragment.java

@@ -1,173 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.ContentResolver;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.MediaStore;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import jiguang.chat.adapter.OtherAdapter;
-import jiguang.chat.controller.SendFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.SendOtherView;
-
-
-public class OtherFragment extends BaseFragment {
-
-    private Activity mContext;
-    private View mRootView;
-    private SendOtherView mSOView;
-    private OtherAdapter mAdapter;
-    private List<FileItem> mOthers = new ArrayList<>();
-    private ProgressDialog mProgressDialog;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private final MyHandler myHandler = new MyHandler(this);
-    private SendFileController mController;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-        LayoutInflater layoutInflater = getActivity().getLayoutInflater();
-        mRootView = layoutInflater.inflate(R.layout.fragment_send_other,
-                (ViewGroup) getActivity().findViewById(R.id.send_doc_view), false);
-        mSOView = (SendOtherView) mRootView.findViewById(R.id.send_other_view);
-        mSOView.initModule();
-        getOthers();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // TODO Auto-generated method stub
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    private void getOthers() {
-        //显示进度条
-        mProgressDialog = ProgressDialog.show(OtherFragment.this.getContext(), null,
-                mContext.getString(R.string.jmui_loading));
-
-        new Thread(new Runnable() {
-
-            @Override
-            public void run() {
-                ContentResolver contentResolver = mContext.getContentResolver();
-                String[] projection = new String[]{MediaStore.Files.FileColumns.DATA,
-                        MediaStore.Files.FileColumns.TITLE, MediaStore.Files.FileColumns.SIZE,
-                        MediaStore.Files.FileColumns.DATE_MODIFIED};
-
-                String selection = MediaStore.Files.FileColumns.MIME_TYPE + "= ? or "
-                        + MediaStore.Files.FileColumns.MIME_TYPE + "= ? or "
-                        + MediaStore.Files.FileColumns.MEDIA_TYPE + "= ? ";
-
-                String[] selectionArgs = new String[]{"application/zip", "application/vnd.android.package-archive",
-                        "application/x-rar-compressed"};
-
-                Cursor cursor = contentResolver.query(MediaStore.Files.getContentUri("external"), projection,
-                        selection, selectionArgs, MediaStore.Files.FileColumns.DATE_MODIFIED + " desc");
-
-                if (cursor != null) {
-                    while (cursor.moveToNext()) {
-
-                        String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.TITLE));
-                        String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA));
-                        String size = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.SIZE));
-                        String date = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DATE_MODIFIED));
-                        if (scannerFile(filePath)) {
-                            FileItem fileItem = new FileItem(filePath, fileName, size, date,0);
-                            mOthers.add(fileItem);
-                        }
-
-                    }
-                    cursor.close();
-                    cursor = null;
-                    myHandler.sendEmptyMessage(SCAN_OK);
-                } else {
-                    myHandler.sendEmptyMessage(SCAN_ERROR);
-                }
-            }
-        }).start();
-
-    }
-
-    private File file;
-
-    private boolean scannerFile(String path) {
-        file = new File(path);
-        if (file.exists() && file.length() > 0) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public void setController(SendFileController controller) {
-        this.mController = controller;
-    }
-
-    public int getTotalCount() {
-        return mController.getPathListSize();
-    }
-
-    public long getTotalSize() {
-        return mController.getTotalSize();
-    }
-
-    private static class MyHandler extends Handler {
-        private final WeakReference<OtherFragment> mFragment;
-
-        public MyHandler(OtherFragment fragment) {
-            mFragment = new WeakReference<OtherFragment>(fragment);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            OtherFragment fragment = mFragment.get();
-            if (fragment != null) {
-                switch (msg.what) {
-                    case SCAN_OK:
-                        fragment.mProgressDialog.dismiss();
-                        fragment.mAdapter = new OtherAdapter(fragment, fragment.mOthers);
-                        fragment.mSOView.setAdapter(fragment.mAdapter);
-                        fragment.mAdapter.setUpdateListener(fragment.mController);
-                        break;
-                    case SCAN_ERROR:
-                        fragment.mProgressDialog.dismiss();
-                        Toast.makeText(fragment.getActivity(), fragment.getString(R.string.sdcard_not_prepare_toast),
-                                Toast.LENGTH_SHORT).show();
-                        break;
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (null != mProgressDialog) {
-            mProgressDialog.dismiss();
-        }
-    }
-}

+ 0 - 182
o2android/app/src/main/java/jiguang/chat/activity/fragment/VideoFragment.java

@@ -1,182 +0,0 @@
-package jiguang.chat.activity.fragment;
-
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.ContentResolver;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.MediaStore;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-import jiguang.chat.adapter.VideoAdapter;
-import jiguang.chat.controller.SendFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.SendVideoView;
-
-
-public class VideoFragment extends BaseFragment {
-
-    private Activity mContext;
-    private View mRootView;
-    private SendVideoView mSVView;
-    private VideoAdapter mAdapter;
-    private List<FileItem> mVideos = new ArrayList<>();
-    private ProgressDialog mProgressDialog;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private final MyHandler myHandler = new MyHandler(this);
-    private SendFileController mController;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.fragment_send_video,
-                (ViewGroup) mContext.findViewById(R.id.send_doc_view), false);
-        mSVView = (SendVideoView) mRootView.findViewById(R.id.send_video_view);
-        mSVView.initModule();
-        getVideos();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // TODO Auto-generated method stub
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    private void getVideos() {
-        //显示进度条
-        mProgressDialog = ProgressDialog.show(VideoFragment.this.getContext(), null,
-                mContext.getString(R.string.jmui_loading));
-
-        new Thread(new Runnable() {
-
-            @Override
-            public void run() {
-                ContentResolver contentResolver = mContext.getContentResolver();
-                String[] projection = new String[] {MediaStore.Video.VideoColumns.DATA,
-                        MediaStore.Video.VideoColumns.DISPLAY_NAME, MediaStore.Video.VideoColumns.SIZE,
-                        MediaStore.Video.VideoColumns.DATE_MODIFIED};
-                try {
-                    String selection = MediaStore.Audio.AudioColumns.MIME_TYPE + "= ? "
-                            + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                            + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                            + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                            + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                            + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                            + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? "
-                            + " or " + MediaStore.Audio.AudioColumns.MIME_TYPE + " = ? ";
-
-                    //类型是在http://qd5.iteye.com/blog/1564040找的
-                    String[] selectionArgs = new String[] {
-                            "video/quicktime", "video/mp4", "application/vnd.rn-realmedia", "aapplication/vnd.rn-realmedia",
-                            "video/x-ms-wmv", "video/x-msvideo", "video/3gpp", "video/x-matroska"};
-
-                    Cursor cursor = contentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, projection,
-                            selection, selectionArgs, MediaStore.Video.VideoColumns.DATE_MODIFIED + " desc");
-
-                    if (cursor != null) {
-                        while (cursor.moveToNext()) {
-                            String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DISPLAY_NAME));
-                            String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DATA));
-                            String size = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.SIZE));
-                            String date = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DATE_MODIFIED));
-                            if (scannerFile(filePath)) {
-                                FileItem fileItem = new FileItem(filePath, fileName, size, date,0);
-                                mVideos.add(fileItem);
-                            }
-                        }
-                        cursor.close();
-                        cursor = null;
-                        myHandler.sendEmptyMessage(SCAN_OK);
-                    } else {
-                        myHandler.sendEmptyMessage(SCAN_ERROR);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }).start();
-
-    }
-
-    private File file;
-
-    private boolean scannerFile(String path) {
-        file = new File(path);
-        if (file.exists() && file.length() > 0) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public void setController(SendFileController controller) {
-        this.mController = controller;
-    }
-
-    public int getTotalCount() {
-        return mController.getPathListSize();
-    }
-
-    public long getTotalSize() {
-        return mController.getTotalSize();
-    }
-
-    private static class MyHandler extends Handler {
-        private final WeakReference<VideoFragment> mFragment;
-
-        public MyHandler(VideoFragment fragment) {
-            mFragment = new WeakReference<VideoFragment>(fragment);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            VideoFragment fragment = mFragment.get();
-            if (fragment != null) {
-                switch (msg.what) {
-                    case SCAN_OK:
-                        //关闭进度条
-                        fragment.mProgressDialog.dismiss();
-                        fragment.mAdapter = new VideoAdapter(fragment, fragment.mVideos,
-                                fragment.mDensity);
-                        fragment.mSVView.setAdapter(fragment.mAdapter);
-                        fragment.mAdapter.setUpdateListener(fragment.mController);
-                        break;
-                    case SCAN_ERROR:
-                        fragment.mProgressDialog.dismiss();
-                        Toast.makeText(fragment.getActivity(), fragment.getString(R.string.sdcard_not_prepare_toast),
-                                Toast.LENGTH_SHORT).show();
-                        break;
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (null != mProgressDialog) {
-            mProgressDialog.dismiss();
-        }
-    }
-}

+ 0 - 102
o2android/app/src/main/java/jiguang/chat/activity/historyfile/activity/BrowserFileImageActivity.java

@@ -1,102 +0,0 @@
-package jiguang.chat.activity.historyfile.activity;
-
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.support.v4.view.PagerAdapter;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageButton;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.util.ArrayList;
-
-import jiguang.chat.activity.BaseActivity;
-import jiguang.chat.utils.BitmapLoader;
-import jiguang.chat.view.ImgBrowserViewPager;
-import jiguang.chat.view.PhotoView;
-
-/**
- * Created by ${chenyn} on 2017/8/24.
- */
-
-public class BrowserFileImageActivity extends BaseActivity {
-    private ArrayList<String> mPathList;
-    private PhotoView photoView;
-    private ImgBrowserViewPager mViewPager;
-    private int mPosition;
-    private ImageButton mReturnBtn;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_browser_file_image);
-
-        mPathList = getIntent().getStringArrayListExtra("historyImagePath");
-        mPosition = getIntent().getIntExtra("position", 0);
-        mViewPager = (ImgBrowserViewPager) findViewById(R.id.img_browser_viewpager);
-        mReturnBtn = (ImageButton) findViewById(R.id.return_btn);
-        mViewPager.setAdapter(mPagerAdapter);
-        //设置显示点击的那张图片
-        mViewPager.setCurrentItem(mPosition);
-
-        mReturnBtn.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                finish();
-            }
-        });
-    }
-
-    PagerAdapter mPagerAdapter = new PagerAdapter() {
-        @Override
-        public Object instantiateItem(ViewGroup container, int position) {
-            photoView = new PhotoView(true, container.getContext());
-            photoView.setTag(position);
-            String path = mPathList.get(position);
-            if (path != null) {
-                File file = new File(path);
-                if (file.exists()) {
-                    Bitmap bitmap = BitmapLoader.getBitmapFromFile(path, mWidth, mHeight);
-                    if (bitmap != null) {
-                        photoView.setImageBitmap(bitmap);
-                    } else {
-                        photoView.setImageResource(R.drawable.jmui_picture_not_found);
-                    }
-                } else {
-                    photoView.setImageResource(R.drawable.jmui_picture_not_found);
-                }
-            }
-            container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
-
-            return photoView;
-        }
-
-        @Override
-        public int getItemPosition(Object object) {
-            View view = (View) object;
-            int currentPage = mViewPager.getCurrentItem();
-            if (currentPage == (Integer) view.getTag()) {
-                return POSITION_NONE;
-            } else {
-                return POSITION_UNCHANGED;
-            }
-        }
-
-        @Override
-        public void destroyItem(ViewGroup container, int position, Object object) {
-            container.removeView((View) object);
-        }
-
-        @Override
-        public int getCount() {
-            return mPathList.size();
-        }
-
-        @Override
-        public boolean isViewFromObject(View view, Object object) {
-            return view == object;
-        }
-    };
-}

+ 0 - 58
o2android/app/src/main/java/jiguang/chat/activity/historyfile/activity/HistoryFileActivity.java

@@ -1,58 +0,0 @@
-package jiguang.chat.activity.historyfile.activity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentManager;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import jiguang.chat.activity.historyfile.controller.HistoryFileController;
-import jiguang.chat.activity.historyfile.view.HistoryFileView;
-
-/**
- * Created by ${chenyn} on 2017/8/23.
- */
-
-public class HistoryFileActivity extends FragmentActivity {
-    private HistoryFileView mView;
-    private HistoryFileController mController;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_history_file);
-        Intent intent = getIntent();
-        String userName = intent.getStringExtra("userName");
-        long groupId = intent.getLongExtra("groupId", 0);
-        boolean isGroup = intent.getBooleanExtra("isGroup", false);
-
-        mView = (HistoryFileView) findViewById(R.id.send_file_view);
-        mView.initModule();
-        mController = new HistoryFileController(this, mView, userName, groupId, isGroup);
-        mView.setOnClickListener(mController);
-        mView.setOnPageChangeListener(mController);
-        mView.setScroll(true);
-    }
-
-    public FragmentManager getSupportFragmentManger() {
-        return getSupportFragmentManager();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-    }
-
-    @Override
-    public void finish() {
-        super.finish();
-        overridePendingTransition(0, R.anim.trans_finish_in);
-    }
-}

+ 0 - 172
o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/AudioFileAdapter.java

@@ -1,172 +0,0 @@
-package jiguang.chat.activity.historyfile.adapter;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.util.SparseBooleanArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.AndroidUtils;
-
-import java.io.File;
-import java.util.List;
-
-import cn.jpush.im.android.api.content.FileContent;
-import jiguang.chat.activity.DownLoadActivity;
-import jiguang.chat.adapter.StickyListHeadersAdapter;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.entity.SelectedHistoryFileListener;
-import jiguang.chat.utils.FileHelper;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ViewHolder;
-import jiguang.chat.view.MyImageView;
-
-/**
- * Created by ${chenyn} on 2017/8/29.
- */
-
-public class AudioFileAdapter extends BaseAdapter implements StickyListHeadersAdapter {
-    private List<FileItem> mList;
-    private LayoutInflater mInflater;
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-    private SelectedHistoryFileListener mListener;
-    private Context mContext;
-
-    public AudioFileAdapter(Activity fragment, List<FileItem> documents) {
-        this.mList = documents;
-        this.mContext = fragment;
-        this.mInflater = LayoutInflater.from(fragment);
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        HeaderViewHolder holder;
-        if (convertView == null) {
-            holder = new HeaderViewHolder();
-            convertView = mInflater.inflate(R.layout.header, parent, false);
-            holder.text = (TextView) convertView.findViewById(R.id.section_tv);
-            convertView.setTag(holder);
-        } else {
-            holder = (HeaderViewHolder) convertView.getTag();
-        }
-
-        holder.text.setText(mList.get(position).getDate());
-        return convertView;
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getCount() {
-        return mList.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mList.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(final int position, View convertView, ViewGroup parent) {
-        final FileItem item = mList.get(position);
-        if (convertView == null) {
-            convertView = mInflater.inflate(R.layout.item_file_document, null);
-        }
-        final CheckBox checkBox = ViewHolder.get(convertView, R.id.document_cb);
-        TextView title = ViewHolder.get(convertView, R.id.document_title);
-        TextView size = ViewHolder.get(convertView, R.id.document_size);
-        TextView date = ViewHolder.get(convertView, R.id.document_date);
-        LinearLayout ll_document = ViewHolder.get(convertView, R.id.document_item_ll);
-        MyImageView imageView = ViewHolder.get(convertView, R.id.document_iv);
-
-        if (SharePreferenceManager.getShowCheck()) {
-            checkBox.setVisibility(View.VISIBLE);
-        } else {
-            checkBox.setVisibility(View.GONE);
-        }
-
-        title.setText(item.getFileName());
-        size.setText(item.getFileSize());
-        date.setText(item.getFromeName() + "  " + item.getDate());
-        imageView.setImageResource(R.drawable.jmui_audio);
-
-        checkBox.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (checkBox.isChecked()) {
-                    checkBox.setChecked(true);
-                    mSelectMap.put(position, true);
-                    mListener.onSelected(item.getMsgId(), item.getMsgId());
-                } else {
-                    mSelectMap.delete(position);
-                    mListener.onUnselected(item.getMsgId(), item.getMsgId());
-                }
-            }
-        });
-        final FileContent content = (FileContent) item.getMessage().getContent();
-        ll_document.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (content.getLocalPath() == null) {
-                    org.greenrobot.eventbus.EventBus.getDefault().postSticky(item.getMessage());
-                    Intent intent = new Intent(mContext, DownLoadActivity.class);
-                    mContext.startActivity(intent);
-                } else {
-                    final String newPath = "sdcard/JChatDemo/recvFiles/" + content.getFileName();
-                    File file = new File(newPath);
-                    if (file.exists() && file.isFile()) {
-                        browseDocument(content.getFileName(), newPath);
-                    } else {
-                        final String finalFileName = content.getFileName();
-                        FileHelper.getInstance().copyFile(item.getFileName(), content.getLocalPath(), (Activity) mContext,
-                                new FileHelper.CopyFileCallback() {
-                                    @Override
-                                    public void copyCallback(Uri uri) {
-                                        browseDocument(finalFileName, newPath);
-                                    }
-                                });
-                    }
-                }
-            }
-        });
-        return convertView;
-    }
-
-    private void browseDocument(String fileName, String path) {
-        try {
-//            String ext = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
-//            MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
-//            String mime = mimeTypeMap.getMimeTypeFromExtension(ext);
-            File file = new File(path);
-            AndroidUtils.INSTANCE.openFileWithDefaultApp((Activity) mContext, file);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Toast.makeText(mContext, R.string.file_not_support_hint, Toast.LENGTH_SHORT).show();
-        }
-    }
-
-    public void setUpdateListener(SelectedHistoryFileListener listener) {
-        this.mListener = listener;
-    }
-
-    private static class HeaderViewHolder {
-        TextView text;
-    }
-}

+ 0 - 173
o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/DocumentFileAdapter.java

@@ -1,173 +0,0 @@
-package jiguang.chat.activity.historyfile.adapter;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.util.SparseBooleanArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.AndroidUtils;
-
-import java.io.File;
-import java.util.List;
-
-import cn.jpush.im.android.api.content.FileContent;
-import jiguang.chat.activity.DownLoadActivity;
-import jiguang.chat.adapter.StickyListHeadersAdapter;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.entity.SelectedHistoryFileListener;
-import jiguang.chat.utils.FileHelper;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ViewHolder;
-
-/**
- * Created by ${chenyn} on 2017/8/29.
- */
-
-public class DocumentFileAdapter extends BaseAdapter implements StickyListHeadersAdapter {
-
-    private List<FileItem> mList;
-    private LayoutInflater mInflater;
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-    private SelectedHistoryFileListener mListener;
-    private Context mContext;
-
-    public DocumentFileAdapter(Activity fragment, List<FileItem> documents) {
-        this.mList = documents;
-        this.mContext = fragment;
-        this.mInflater = LayoutInflater.from(fragment);
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        HeaderViewHolder holder;
-        if (convertView == null) {
-            holder = new HeaderViewHolder();
-            convertView = mInflater.inflate(R.layout.header, parent, false);
-            holder.text = (TextView) convertView.findViewById(R.id.section_tv);
-            convertView.setTag(holder);
-        } else {
-            holder = (HeaderViewHolder) convertView.getTag();
-        }
-
-        holder.text.setText(mList.get(position).getDate());
-        return convertView;
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getCount() {
-        return mList.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mList.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(final int position, View convertView, ViewGroup parent) {
-        final FileItem item = mList.get(position);
-        if (convertView == null) {
-            convertView = mInflater.inflate(R.layout.item_file_document, null);
-        }
-        final CheckBox checkBox = ViewHolder.get(convertView, R.id.document_cb);
-        TextView title = ViewHolder.get(convertView, R.id.document_title);
-        TextView size = ViewHolder.get(convertView, R.id.document_size);
-        TextView date = ViewHolder.get(convertView, R.id.document_date);
-        LinearLayout ll_document = ViewHolder.get(convertView, R.id.document_item_ll);
-
-        if (SharePreferenceManager.getShowCheck()) {
-            checkBox.setVisibility(View.VISIBLE);
-        } else {
-            checkBox.setVisibility(View.GONE);
-        }
-
-        title.setText(item.getFileName());
-        size.setText(item.getFileSize());
-        date.setText(item.getFromeName() + "  " + item.getDate());
-
-        checkBox.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (checkBox.isChecked()) {
-                    checkBox.setChecked(true);
-                    mSelectMap.put(position, true);
-                    mListener.onSelected(item.getMsgId(), item.getMsgId());
-                } else {
-                    mSelectMap.delete(position);
-                    mListener.onUnselected(item.getMsgId(), item.getMsgId());
-                }
-            }
-        });
-        final FileContent content = (FileContent) item.getMessage().getContent();
-
-            ll_document.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    if (content.getLocalPath() == null) {
-                        org.greenrobot.eventbus.EventBus.getDefault().postSticky(item.getMessage());
-                        Intent intent = new Intent(mContext, DownLoadActivity.class);
-                        mContext.startActivity(intent);
-                    } else {
-                        final String newPath = "sdcard/JChatDemo/recvFiles/" + content.getFileName();
-                        File file = new File(newPath);
-                        if (file.exists() && file.isFile()) {
-                            browseDocument(content.getFileName(), newPath);
-                        } else {
-                            final String finalFileName = content.getFileName();
-                            FileHelper.getInstance().copyFile(item.getFileName(), content.getLocalPath(), (Activity) mContext,
-                                    new FileHelper.CopyFileCallback() {
-                                        @Override
-                                        public void copyCallback(Uri uri) {
-                                            browseDocument(finalFileName, newPath);
-                                        }
-                                    });
-                        }
-                    }
-                }
-            });
-
-        return convertView;
-    }
-
-    private void browseDocument(String fileName, String path) {
-        try {
-//            String ext = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
-//            MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
-//            String mime = mimeTypeMap.getMimeTypeFromExtension(ext);
-            File file = new File(path);
-            AndroidUtils.INSTANCE.openFileWithDefaultApp((Activity) mContext, file);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Toast.makeText(mContext, R.string.file_not_support_hint, Toast.LENGTH_SHORT).show();
-        }
-    }
-
-    public void setUpdateListener(SelectedHistoryFileListener listener) {
-        this.mListener = listener;
-    }
-
-    private static class HeaderViewHolder {
-        TextView text;
-    }
-
-}

+ 0 - 186
o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/ImageFileAdapter.java

@@ -1,186 +0,0 @@
-package jiguang.chat.activity.historyfile.adapter;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.Point;
-import android.util.SparseBooleanArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.GridView;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import jiguang.chat.activity.historyfile.activity.BrowserFileImageActivity;
-import jiguang.chat.activity.historyfile.fragment.ImageFileFragment;
-import jiguang.chat.activity.historyfile.grideviewheader.StickyGridHeadersSimpleAdapter;
-import jiguang.chat.activity.historyfile.view.MImageView;
-import jiguang.chat.activity.historyfile.view.NativeImageLoaderView;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.entity.SelectedHistoryFileListener;
-import jiguang.chat.utils.SharePreferenceManager;
-
-/**
- * Created by ${chenyn} on 2017/8/24.
- */
-
-public class ImageFileAdapter extends BaseAdapter implements StickyGridHeadersSimpleAdapter {
-    private List<FileItem> mItemList;
-    private ArrayList<String> mPath;
-    private LayoutInflater mInflater;
-    private Activity mContext;
-    private Point mPoint = new Point(0, 0);
-    private GridView mGridView;
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-    private SelectedHistoryFileListener mListener;
-
-    public ImageFileAdapter(ImageFileFragment fragment, List<FileItem> images, ArrayList<String> path,
-                            GridView gridView) {
-        this.mItemList = images;
-        this.mPath = path;
-        this.mInflater = LayoutInflater.from(fragment.getContext());
-        this.mContext = fragment.getActivity();
-        this.mGridView = gridView;
-    }
-
-    @Override
-    public int getCount() {
-        return mItemList.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mItemList.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(final int position, View convertView, ViewGroup parent) {
-        final FileItem item = mItemList.get(position);
-        final ViewHolder holder;
-        if (convertView == null) {
-            holder = new ViewHolder();
-            convertView = mInflater.inflate(R.layout.history_file_gride, null);
-            holder.mImageView = (MImageView) convertView.findViewById(R.id.grid_item);
-            holder.checkBox = (CheckBox) convertView.findViewById(R.id.child_checkbox);
-            holder.checkBoxLl = (LinearLayout) convertView.findViewById(R.id.checkbox_ll);
-            convertView.setTag(holder);
-
-            holder.mImageView.setOnMeasureListener(new MImageView.OnMeasureListener() {
-
-                @Override
-                public void onMeasureSize(int width, int height) {
-                    mPoint.set(width, height);
-                }
-            });
-
-        } else {
-            holder = (ViewHolder) convertView.getTag();
-        }
-
-        if ( SharePreferenceManager.getShowCheck()) {
-            holder.checkBoxLl.setVisibility(View.VISIBLE);
-        }else {
-            holder.checkBoxLl.setVisibility(View.GONE);
-        }
-
-        String path = mItemList.get(position).getFilePath();
-        holder.mImageView.setTag(path);
-
-        Bitmap bitmap = NativeImageLoaderView.getInstance().loadNativeImage(path, mPoint,
-                new NativeImageLoaderView.NativeImageCallBack() {
-
-                    @Override
-                    public void onImageLoader(Bitmap bitmap, String path) {
-                        ImageView mImageView = (ImageView) mGridView.findViewWithTag(path);
-                        if (bitmap != null && mImageView != null) {
-                            mImageView.setImageBitmap(bitmap);
-                        }
-                    }
-                });
-
-        if (bitmap != null) {
-            holder.mImageView.setImageBitmap(bitmap);
-        } else {
-            holder.mImageView.setImageResource(R.drawable.friends_sends_pictures_no);
-        }
-
-
-        holder.mImageView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(mContext, BrowserFileImageActivity.class);
-                intent.putStringArrayListExtra("historyImagePath", mPath);
-                intent.putExtra("position", position);
-                mContext.startActivity(intent);
-            }
-        });
-
-        holder.checkBox.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (holder.checkBox.isChecked()) {
-                    holder.checkBox.setChecked(true);
-                    mSelectMap.put(position, true);
-                    mListener.onSelected(item.getMsgId(), item.getMsgId());
-                } else {
-                    mSelectMap.delete(position);
-                    mListener.onUnselected(item.getMsgId(), item.getMsgId());
-                }
-            }
-        });
-
-        holder.checkBox.setChecked(mSelectMap.get(position));
-
-        //Picasso.with(mFragment.getContext()).load(new File(item.getFilePath())).into(holder.icon);
-        return convertView;
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        return mItemList.get(position).getSection();
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        HeaderViewHolder mHeaderHolder;
-        if (convertView == null) {
-            mHeaderHolder = new HeaderViewHolder();
-            convertView = mInflater.inflate(R.layout.history_file_time_header, parent, false);
-            mHeaderHolder.mTextView = (TextView) convertView.findViewById(R.id.header);
-            convertView.setTag(mHeaderHolder);
-        } else {
-            mHeaderHolder = (HeaderViewHolder) convertView.getTag();
-        }
-        mHeaderHolder.mTextView.setText(mItemList.get(position).getDate());
-
-        return convertView;
-    }
-
-    public void setUpdateListener(SelectedHistoryFileListener listener) {
-        this.mListener = listener;
-    }
-
-    private class ViewHolder {
-        MImageView mImageView;
-        CheckBox checkBox;
-        LinearLayout checkBoxLl;
-    }
-
-    public static class HeaderViewHolder {
-        public TextView mTextView;
-    }
-}

+ 0 - 174
o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/OtherFileAdapter.java

@@ -1,174 +0,0 @@
-package jiguang.chat.activity.historyfile.adapter;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.util.SparseBooleanArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.AndroidUtils;
-
-import java.io.File;
-import java.util.List;
-
-import cn.jpush.im.android.api.content.FileContent;
-import jiguang.chat.activity.DownLoadActivity;
-import jiguang.chat.adapter.StickyListHeadersAdapter;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.entity.SelectedHistoryFileListener;
-import jiguang.chat.utils.FileHelper;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ViewHolder;
-import jiguang.chat.view.MyImageView;
-
-/**
- * Created by ${chenyn} on 2017/8/29.
- */
-
-public class OtherFileAdapter extends BaseAdapter implements StickyListHeadersAdapter {
-    private List<FileItem> mList;
-    private LayoutInflater mInflater;
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-    private SelectedHistoryFileListener mListener;
-    private Context mContext;
-
-    public OtherFileAdapter(Activity fragment, List<FileItem> documents) {
-        this.mList = documents;
-        this.mContext = fragment;
-        this.mInflater = LayoutInflater.from(fragment);
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        HeaderViewHolder holder;
-        if (convertView == null) {
-            holder = new HeaderViewHolder();
-            convertView = mInflater.inflate(R.layout.header, parent, false);
-            holder.text = (TextView) convertView.findViewById(R.id.section_tv);
-            convertView.setTag(holder);
-        } else {
-            holder = (HeaderViewHolder) convertView.getTag();
-        }
-
-        holder.text.setText(mList.get(position).getDate());
-        return convertView;
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getCount() {
-        return mList.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mList.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(final int position, View convertView, ViewGroup parent) {
-        final FileItem item = mList.get(position);
-        if (convertView == null) {
-            convertView = mInflater.inflate(R.layout.item_file_document, null);
-        }
-        final CheckBox checkBox = ViewHolder.get(convertView, R.id.document_cb);
-        TextView title = ViewHolder.get(convertView, R.id.document_title);
-        TextView size = ViewHolder.get(convertView, R.id.document_size);
-        TextView date = ViewHolder.get(convertView, R.id.document_date);
-        MyImageView imageView = ViewHolder.get(convertView, R.id.document_iv);
-        LinearLayout ll_document = ViewHolder.get(convertView, R.id.document_item_ll);
-
-        if (SharePreferenceManager.getShowCheck()) {
-            checkBox.setVisibility(View.VISIBLE);
-        } else {
-            checkBox.setVisibility(View.GONE);
-        }
-
-        title.setText(item.getFileName());
-        size.setText(item.getFileSize());
-        date.setText(item.getFromeName() + "  " + item.getDate());
-        imageView.setImageResource(R.drawable.jmui_other);
-
-        checkBox.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (checkBox.isChecked()) {
-                    checkBox.setChecked(true);
-                    mSelectMap.put(position, true);
-                    mListener.onSelected(item.getMsgId(), item.getMsgId());
-                } else {
-                    mSelectMap.delete(position);
-                    mListener.onUnselected(item.getMsgId(), item.getMsgId());
-                }
-            }
-        });
-
-        final FileContent content = (FileContent) item.getMessage().getContent();
-
-            ll_document.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    if (content.getLocalPath() == null) {
-                        org.greenrobot.eventbus.EventBus.getDefault().postSticky(item.getMessage());
-                        Intent intent = new Intent(mContext, DownLoadActivity.class);
-                        mContext.startActivity(intent);
-                    } else {
-                        final String newPath = "sdcard/JChatDemo/recvFiles/" + content.getFileName();
-                        File file = new File(newPath);
-                        if (file.exists() && file.isFile()) {
-                            browseDocument(content.getFileName(), newPath);
-                        } else {
-                            final String finalFileName = content.getFileName();
-                            FileHelper.getInstance().copyFile(item.getFileName(), content.getLocalPath(), (Activity) mContext,
-                                    new FileHelper.CopyFileCallback() {
-                                        @Override
-                                        public void copyCallback(Uri uri) {
-                                            browseDocument(finalFileName, newPath);
-                                        }
-                                    });
-                        }
-                    }
-                }
-            });
-        return convertView;
-    }
-
-    private void browseDocument(String fileName, String path) {
-        try {
-//            String ext = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
-//            MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
-//            String mime = mimeTypeMap.getMimeTypeFromExtension(ext);
-            File file = new File(path);
-            AndroidUtils.INSTANCE.openFileWithDefaultApp((Activity) mContext, file);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Toast.makeText(mContext, R.string.file_not_support_hint, Toast.LENGTH_SHORT).show();
-        }
-    }
-
-    public void setUpdateListener(SelectedHistoryFileListener listener) {
-        this.mListener = listener;
-    }
-
-    private static class HeaderViewHolder {
-        TextView text;
-    }
-}

+ 0 - 174
o2android/app/src/main/java/jiguang/chat/activity/historyfile/adapter/VideoFileAdapter.java

@@ -1,174 +0,0 @@
-package jiguang.chat.activity.historyfile.adapter;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.util.SparseBooleanArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.AndroidUtils;
-
-import java.io.File;
-import java.util.List;
-
-import cn.jpush.im.android.api.content.FileContent;
-import jiguang.chat.activity.DownLoadActivity;
-import jiguang.chat.adapter.StickyListHeadersAdapter;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.entity.SelectedHistoryFileListener;
-import jiguang.chat.utils.FileHelper;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.utils.ViewHolder;
-import jiguang.chat.view.MyImageView;
-
-/**
- * Created by ${chenyn} on 2017/8/29.
- */
-
-public class VideoFileAdapter extends BaseAdapter implements StickyListHeadersAdapter {
-    private List<FileItem> mList;
-    private LayoutInflater mInflater;
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-    private SelectedHistoryFileListener mListener;
-    private Context mContext;
-
-    public VideoFileAdapter(Activity fragment, List<FileItem> documents) {
-        this.mList = documents;
-        this.mContext = fragment;
-        this.mInflater = LayoutInflater.from(mContext);
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        HeaderViewHolder holder;
-        if (convertView == null) {
-            holder = new HeaderViewHolder();
-            convertView = mInflater.inflate(R.layout.header, parent, false);
-            holder.text = (TextView) convertView.findViewById(R.id.section_tv);
-            convertView.setTag(holder);
-        } else {
-            holder = (HeaderViewHolder) convertView.getTag();
-        }
-
-        holder.text.setText(mList.get(position).getDate());
-        return convertView;
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getCount() {
-        return mList.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mList.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(final int position, View convertView, ViewGroup parent) {
-        final FileItem item = mList.get(position);
-        if (convertView == null) {
-            convertView = mInflater.inflate(R.layout.item_file_document, null);
-        }
-        final CheckBox checkBox = ViewHolder.get(convertView, R.id.document_cb);
-        TextView title = ViewHolder.get(convertView, R.id.document_title);
-        TextView size = ViewHolder.get(convertView, R.id.document_size);
-        TextView date = ViewHolder.get(convertView, R.id.document_date);
-        MyImageView imageView = ViewHolder.get(convertView, R.id.document_iv);
-        LinearLayout ll_document = ViewHolder.get(convertView, R.id.document_item_ll);
-
-        if (SharePreferenceManager.getShowCheck()) {
-            checkBox.setVisibility(View.VISIBLE);
-        } else {
-            checkBox.setVisibility(View.GONE);
-        }
-
-        title.setText(item.getFileName());
-        size.setText(item.getFileSize());
-        date.setText(item.getFromeName() + "  " + item.getDate());
-        imageView.setImageResource(R.drawable.jmui_video);
-
-        checkBox.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (checkBox.isChecked()) {
-                    checkBox.setChecked(true);
-                    mSelectMap.put(position, true);
-                    mListener.onSelected(item.getMsgId(), item.getMsgId());
-                } else {
-                    mSelectMap.delete(position);
-                    mListener.onUnselected(item.getMsgId(), item.getMsgId());
-                }
-            }
-        });
-        final FileContent content = (FileContent) item.getMessage().getContent();
-
-        ll_document.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (content.getLocalPath() == null) {
-                    org.greenrobot.eventbus.EventBus.getDefault().postSticky(item.getMessage());
-                    Intent intent = new Intent(mContext, DownLoadActivity.class);
-                    mContext.startActivity(intent);
-                } else {
-                    final String newPath = "sdcard/JChatDemo/recvFiles/" + content.getFileName();
-                    File file = new File(newPath);
-                    if (file.exists() && file.isFile()) {
-                        browseDocument(content.getFileName(), newPath);
-                    } else {
-                        final String finalFileName = content.getFileName();
-                        FileHelper.getInstance().copyFile(item.getFileName(), content.getLocalPath(), (Activity) mContext,
-                                new FileHelper.CopyFileCallback() {
-                                    @Override
-                                    public void copyCallback(Uri uri) {
-                                        browseDocument(finalFileName, newPath);
-                                    }
-                                });
-                    }
-                }
-            }
-        });
-        return convertView;
-    }
-
-    private void browseDocument(String fileName, String path) {
-        try {
-//            String ext = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
-//            MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
-//            String mime = mimeTypeMap.getMimeTypeFromExtension(ext);
-            File file = new File(path);
-            AndroidUtils.INSTANCE.openFileWithDefaultApp((Activity) mContext, file);
-        } catch (Exception e) {
-            e.printStackTrace();
-            Toast.makeText(mContext, R.string.file_not_support_hint, Toast.LENGTH_SHORT).show();
-        }
-    }
-
-
-    public void setUpdateListener(SelectedHistoryFileListener listener) {
-        this.mListener = listener;
-    }
-
-    private static class HeaderViewHolder {
-        TextView text;
-    }
-}

+ 0 - 154
o2android/app/src/main/java/jiguang/chat/activity/historyfile/controller/HistoryFileController.java

@@ -1,154 +0,0 @@
-package jiguang.chat.activity.historyfile.controller;
-
-import android.support.v4.app.Fragment;
-import android.support.v4.view.ViewPager;
-import android.view.View;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.model.Conversation;
-import jiguang.chat.activity.historyfile.activity.HistoryFileActivity;
-import jiguang.chat.activity.historyfile.fragment.AudioFileFragment;
-import jiguang.chat.activity.historyfile.fragment.DocumentFileFragment;
-import jiguang.chat.activity.historyfile.fragment.ImageFileFragment;
-import jiguang.chat.activity.historyfile.fragment.OtherFileFragment;
-import jiguang.chat.activity.historyfile.fragment.VideoFileFragment;
-import jiguang.chat.activity.historyfile.view.HistoryFileView;
-import jiguang.chat.adapter.ViewPagerAdapter;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.entity.SelectedHistoryFileListener;
-
-/**
- * Created by ${chenyn} on 2017/8/24.
- */
-
-public class HistoryFileController implements View.OnClickListener, ViewPager.OnPageChangeListener,
-        SelectedHistoryFileListener {
-    private HashMap<Integer, Integer> idMap = new HashMap<>();
-    private DocumentFileFragment mDocumentFragment;
-    private VideoFileFragment mVideoFragment;
-    private ImageFileFragment mImgFragment;
-    private AudioFileFragment mAudioFragment;
-    private OtherFileFragment mOtherFragment;
-    private HistoryFileActivity mContext;
-    private Conversation conversation;
-    private HistoryFileView mSFView;
-    private String userName;
-    private boolean isGroup;
-    private long gid;
-
-
-    public HistoryFileController(HistoryFileActivity context, HistoryFileView view, String userName, long groupId, boolean isGroup) {
-        this.mContext = context;
-        this.mSFView = view;
-        this.userName = userName;
-        this.gid = groupId;
-        this.isGroup = isGroup;
-        List<Fragment> fragments = new ArrayList<>();
-        // init Fragment
-        mDocumentFragment = new DocumentFileFragment();
-        mVideoFragment = new VideoFileFragment();
-        mImgFragment = new ImageFileFragment();
-        mAudioFragment = new AudioFileFragment();
-        mOtherFragment = new OtherFileFragment();
-        fragments.add(mImgFragment);
-        fragments.add(mDocumentFragment);
-        fragments.add(mVideoFragment);
-        fragments.add(mAudioFragment);
-        fragments.add(mOtherFragment);
-        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(mContext.getSupportFragmentManger(),
-                fragments);
-        mSFView.setViewPagerAdapter(viewPagerAdapter);
-        mImgFragment.setController(this, userName, groupId, isGroup);
-        mDocumentFragment.setController(this, userName, groupId, isGroup, mContext);
-        mVideoFragment.setController(this, userName, groupId, isGroup, mContext);
-        mAudioFragment.setController(this, userName, groupId, isGroup, mContext);
-        mOtherFragment.setController(this, userName, groupId, isGroup, mContext);
-    }
-
-    @Override
-    public void onPageScrolled(int i, float v, int i1) {
-
-    }
-
-    @Override
-    public void onPageSelected(int i) {
-        mSFView.setCurrentItem(i);
-    }
-
-    @Override
-    public void onPageScrollStateChanged(int i) {
-
-    }
-
-    @Override
-    public void onClick(View view) {
-        switch (view.getId()) {
-            case R.id.actionbar_album_btn:
-                mSFView.setCurrentItem(0);
-                break;
-            case R.id.actionbar_file_btn:
-                mSFView.setCurrentItem(1);
-                break;
-            case R.id.actionbar_video_btn:
-                mSFView.setCurrentItem(2);
-                break;
-            case R.id.actionbar_audio_btn:
-                mSFView.setCurrentItem(3);
-                break;
-            case R.id.actionbar_other_btn:
-                mSFView.setCurrentItem(4);
-                break;
-            case R.id.return_btn:
-                mContext.finish();
-                break;
-            case R.id.delete_file_btn:
-                if (idMap.size() == 0) {
-                    break;
-                }
-                if (isGroup) {
-                    conversation = JMessageClient.getGroupConversation(gid);
-                } else {
-                    conversation = JMessageClient.getSingleConversation(userName);
-                }
-                JGApplication.ids.clear();
-                for (Integer id : idMap.keySet()) {
-                    //把即将被删除的消息添加进集合中,注意获取message的id是从map中拿出来的.
-                    JGApplication.ids.add(conversation.getMessage(idMap.get(id)));
-                    //删除图片信息之后要刷新聊天ui并刷新gridView
-                    conversation.deleteMessage(idMap.get(id));
-                }
-                mImgFragment.notifyGridView();
-                mDocumentFragment.notifyListDocument();
-                mVideoFragment.notifyListVideo();
-                mAudioFragment.notifyListAudio();
-                mOtherFragment.notifyListOther();
-                break;
-            case R.id.tv_choose:
-                mSFView.setDeleteRl();
-                mImgFragment.notifyImage();
-                mDocumentFragment.notifyDocument();
-                mVideoFragment.notifyVideo();
-                mAudioFragment.notifyAudio();
-                mOtherFragment.notifyOther();
-                break;
-        }
-    }
-
-    @Override
-    public void onSelected(int msgId, int position) {
-        idMap.put(position, msgId);
-        mSFView.updateSelectedState(idMap.size());
-    }
-
-    @Override
-    public void onUnselected(int msgId, int position) {
-        idMap.remove(position);
-        mSFView.updateSelectedState(idMap.size());
-    }
-}

+ 0 - 157
o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/AudioFileFragment.java

@@ -1,157 +0,0 @@
-package jiguang.chat.activity.historyfile.fragment;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.os.Handler;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.FileContent;
-import cn.jpush.im.android.api.content.MessageContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import jiguang.chat.activity.fragment.BaseFragment;
-import jiguang.chat.activity.historyfile.adapter.AudioFileAdapter;
-import jiguang.chat.activity.historyfile.controller.HistoryFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.listview.StickyListHeadersListView;
-
-/**
- * Created by ${chenyn} on 2017/8/23.
- */
-
-public class AudioFileFragment extends BaseFragment {
-    private HistoryFileController mController;
-    private String mUserName;
-    private long mGroupId;
-    private Activity mContext;
-    private View mRootView;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private AudioFileAdapter mAdapter;
-    private List<FileItem> mDocuments = new ArrayList<>();
-    private StickyListHeadersListView mDocumentList;
-    private Boolean mIsGroup;
-    private static int section = 1;
-    private Map<String, Integer> sectionMap = new HashMap<String, Integer>();
-
-    public void setController(HistoryFileController controller, String userName, long groupId, boolean isGroup, Activity activity) {
-        mController = controller;
-        mUserName = userName;
-        mGroupId = groupId;
-        mIsGroup = isGroup;
-        mContext = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.document_file,
-                (ViewGroup) mContext.findViewById(R.id.main_view), false);
-        mDocumentList = (StickyListHeadersListView) mRootView.findViewById(R.id.document_list);
-
-
-        initData();
-    }
-
-    private void initData() {
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                Conversation conversation;
-                if (mIsGroup) {
-                    conversation = JMessageClient.getGroupConversation(mGroupId);
-                } else {
-                    conversation = JMessageClient.getSingleConversation(mUserName);
-                }
-                List<Message> allMessage = conversation.getAllMessage();
-                for (cn.jpush.im.android.api.model.Message msg : allMessage) {
-                    MessageContent content = msg.getContent();
-
-                    if (content.getContentType() == ContentType.file) {
-                        String fileType = content.getStringExtra("fileType");
-                        if (fileType != null && (fileType.equals("wav") || fileType.equals("mp3") || fileType.equals("wma") || fileType.equals("midi"))) {
-
-                            FileContent fileContent = (FileContent) content;
-                            String localPath = fileContent.getLocalPath();
-
-                            long createTime = msg.getCreateTime();
-                            long fileSize = fileContent.getFileSize();
-                            Date date = new Date(createTime);
-                            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月");
-                            String time = format.format(date);
-                            FileItem item = new FileItem(localPath, fileContent.getFileName(), fileSize + "", time, msg.getId(), msg.getFromName(), msg);
-                            if (!sectionMap.containsKey(item.getDate())) {
-                                item.setSection(section);
-                                sectionMap.put(item.getDate(), section);
-                                section++;
-                            } else {
-                                item.setSection(sectionMap.get(item.getDate()));
-                            }
-                            mDocuments.add(item);
-                        }
-
-                    }
-                    mHandler.sendEmptyMessage(SCAN_OK);
-                }
-            }
-        }).start();
-    }
-
-    private Handler mHandler = new Handler(new Handler.Callback() {
-        @Override
-        public boolean handleMessage(android.os.Message msg) {
-            switch (msg.what) {
-                case SCAN_OK:
-                    if (mDocumentList != null) {
-                        mAdapter = new AudioFileAdapter(mContext, mDocuments);
-                        mDocumentList.setAdapter(mAdapter);
-                        mAdapter.setUpdateListener(mController);
-                    }
-                    break;
-                case SCAN_ERROR:
-                    Toast.makeText(mContext, getString(R.string.sdcard_not_prepare_toast),
-                            Toast.LENGTH_SHORT).show();
-                    break;
-            }
-            return false;
-        }
-    });
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    public void notifyAudio() {
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-
-    public void notifyListAudio() {
-        mDocuments.clear();
-        initData();
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-
-
-}

+ 0 - 156
o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/DocumentFileFragment.java

@@ -1,156 +0,0 @@
-package jiguang.chat.activity.historyfile.fragment;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.os.Handler;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.FileContent;
-import cn.jpush.im.android.api.content.MessageContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import jiguang.chat.activity.fragment.BaseFragment;
-import jiguang.chat.activity.historyfile.adapter.DocumentFileAdapter;
-import jiguang.chat.activity.historyfile.controller.HistoryFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.listview.StickyListHeadersListView;
-
-/**
- * Created by ${chenyn} on 2017/8/23.
- */
-
-public class DocumentFileFragment extends BaseFragment {
-    private HistoryFileController mController;
-    private String mUserName;
-    private long mGroupId;
-    private Activity mContext;
-    private View mRootView;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private DocumentFileAdapter mAdapter;
-    private List<FileItem> mDocuments = new ArrayList<>();
-    private StickyListHeadersListView mDocumentList;
-    private Boolean mIsGroup;
-    private static int section = 1;
-    private Map<String, Integer> sectionMap = new HashMap<String, Integer>();
-
-    public void setController(HistoryFileController controller, String userName, long groupId, boolean isGroup, Activity activity) {
-        mController = controller;
-        mUserName = userName;
-        mGroupId = groupId;
-        mIsGroup = isGroup;
-        mContext = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.document_file,
-                (ViewGroup) mContext.findViewById(R.id.main_view), false);
-        mDocumentList = (StickyListHeadersListView) mRootView.findViewById(R.id.document_list);
-        initData();
-    }
-
-    private void initData() {
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                Conversation conversation;
-                if (mIsGroup) {
-                    conversation = JMessageClient.getGroupConversation(mGroupId);
-                } else {
-                    conversation = JMessageClient.getSingleConversation(mUserName);
-                }
-                List<Message> allMessage = conversation.getAllMessage();
-                for (Message msg : allMessage) {
-                    MessageContent content = msg.getContent();
-
-                    if (content.getContentType() == ContentType.file) {
-                        String fileType = content.getStringExtra("fileType");
-                        if (fileType != null && (fileType.equals("ppt") || fileType.equals("pptx") || fileType.equals("doc") ||
-                                fileType.equals("docx") || fileType.equals("pdf") || fileType.equals("xls") ||
-                                fileType.equals("xlsx") || fileType.equals("txt") || fileType.equals("wps"))) {
-
-                            FileContent fileContent = (FileContent) content;
-                            String localPath = fileContent.getLocalPath();
-
-                            long createTime = msg.getCreateTime();
-                            long fileSize = fileContent.getFileSize();
-                            Date date = new Date(createTime);
-                            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月");
-                            String time = format.format(date);
-                            FileItem item = new FileItem(localPath, fileContent.getFileName(), fileSize + "", time, msg.getId(), msg.getFromName(), msg);
-                            if (!sectionMap.containsKey(item.getDate())) {
-                                item.setSection(section);
-                                sectionMap.put(item.getDate(), section);
-                                section++;
-                            } else {
-                                item.setSection(sectionMap.get(item.getDate()));
-                            }
-                            mDocuments.add(item);
-                        }
-
-                    }
-                    mHandler.sendEmptyMessage(SCAN_OK);
-                }
-            }
-        }).start();
-    }
-
-    private Handler mHandler = new Handler(new Handler.Callback() {
-        @Override
-        public boolean handleMessage(android.os.Message msg) {
-            switch (msg.what) {
-                case SCAN_OK:
-                    if (mDocumentList != null) {
-                        mAdapter = new DocumentFileAdapter(mContext, mDocuments);
-                        mDocumentList.setAdapter(mAdapter);
-                        mAdapter.setUpdateListener(mController);
-                    }
-                    break;
-                case SCAN_ERROR:
-                    Toast.makeText(mContext, getString(R.string.sdcard_not_prepare_toast),
-                            Toast.LENGTH_SHORT).show();
-                    break;
-            }
-            return false;
-        }
-    });
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    public void notifyDocument() {
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-
-    public void notifyListDocument() {
-        mDocuments.clear();
-        initData();
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-
-}

+ 0 - 219
o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/ImageFileFragment.java

@@ -1,219 +0,0 @@
-package jiguang.chat.activity.historyfile.fragment;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.GridView;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.lang.ref.WeakReference;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.FileContent;
-import cn.jpush.im.android.api.content.ImageContent;
-import cn.jpush.im.android.api.content.MessageContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.model.Conversation;
-import jiguang.chat.activity.fragment.BaseFragment;
-import jiguang.chat.activity.historyfile.adapter.ImageFileAdapter;
-import jiguang.chat.activity.historyfile.controller.HistoryFileController;
-import jiguang.chat.activity.historyfile.view.YMComparator;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.utils.FileUtils;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.view.SendImageView;
-
-/**
- * Created by ${chenyn} on 2017/8/23.
- */
-
-public class ImageFileFragment extends BaseFragment {
-
-    private HistoryFileController mController;
-    private String mUserName;
-    private long mGroupId;
-
-    private Activity mContext;
-    private View mRootView;
-    private SendImageView mSIView;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private final MyHandler myHandler = new MyHandler(this);
-    private ImageFileAdapter mAdapter;
-    private List<FileItem> mImages = new ArrayList<>();
-    private ArrayList<String> mPath = new ArrayList<>();
-    private GridView mGridView;
-    private Boolean mIsGroup;
-    private static int section = 1;
-    private Map<String, Integer> sectionMap = new HashMap<String, Integer>();
-
-    public void setController(HistoryFileController controller, String userName, long groupId, boolean isGroup) {
-        mController = controller;
-        mUserName = userName;
-        mGroupId = groupId;
-        mIsGroup = isGroup;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-        SharePreferenceManager.setShowCheck(false);
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.fragment_history_image,
-                (ViewGroup) mContext.findViewById(R.id.send_doc_view), false);
-        mSIView = (SendImageView) mRootView.findViewById(R.id.send_image_view);
-        mSIView.initModule();
-        //历史消息图片界面
-        mGridView = mSIView.initFileViewModule();
-        getImages();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    private void getImages() {
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                Conversation conversation;
-                if (mIsGroup) {
-                    conversation = JMessageClient.getGroupConversation(mGroupId);
-                } else {
-                    conversation = JMessageClient.getSingleConversation(mUserName);
-                }
-                List<cn.jpush.im.android.api.model.Message> allMessage = conversation.getAllMessage();
-                for (cn.jpush.im.android.api.model.Message msg : allMessage) {
-                    MessageContent content = msg.getContent();
-                    if (content.getContentType() == ContentType.image) {
-                        ImageContent imageContent = (ImageContent) content;
-                        //第一次登录,没有原图路径会比较奇怪,这里统一使用缩略图就不会有这种情况
-                        String localPath = imageContent.getLocalThumbnailPath();
-                        if (!TextUtils.isEmpty(localPath)) {
-                            File imageFile = new File(localPath);
-                            if (imageFile.exists()) {
-                                long createTime = msg.getCreateTime();
-                                long fileSize = imageFile.length();
-                                Date date = new Date(createTime);
-                                SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月");
-                                String time = format.format(date);
-                                String size = FileUtils.getFileSize(fileSize);
-                                FileItem item = new FileItem(localPath, imageFile.getName(), size, time, msg.getId());
-                                //根据时间设置listView的header,按月份分割
-                                if (!sectionMap.containsKey(item.getDate())) {
-                                    item.setSection(section);
-                                    sectionMap.put(item.getDate(), section);
-                                    section++;
-                                }else {
-                                    item.setSection(sectionMap.get(item.getDate()));
-                                }
-                                mPath.add(localPath);
-                                mImages.add(item);
-                            }
-                        }
-                        //当信息中有图片是以文件形式发送过来的如下处理
-                    } else if (content.getContentType() == ContentType.file) {
-                        FileContent fileContent = (FileContent) content;
-                        String fileType = fileContent.getStringExtra("fileType");
-                        if (fileType != null && (fileType.equals("jpeg") || fileType.equals("jpg") || fileType.equals("png") ||
-                                fileType.equals("bmp") || fileType.equals("gif"))) {
-
-                            String localPath = fileContent.getLocalPath();
-                            if (!TextUtils.isEmpty(localPath)) {
-                                File file = new File(localPath);
-                                if (file.exists()) {
-                                    long createTime = msg.getCreateTime();
-                                    long fileSize = file.length();
-                                    Date date = new Date(createTime);
-                                    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月");
-                                    String time = format.format(date);
-                                    String size = FileUtils.getFileSize(fileSize);
-                                    FileItem item = new FileItem(localPath, file.getName(), size, time, msg.getId());
-                                    if (!sectionMap.containsKey(item.getDate())) {
-                                        item.setSection(section);
-                                        sectionMap.put(item.getDate(), section);
-                                        section++;
-                                    }else {
-                                        item.setSection(sectionMap.get(item.getDate()));
-                                    }
-                                    mPath.add(localPath);
-                                    mImages.add(item);
-                                }
-                            }
-                        }
-                    }
-                    myHandler.sendEmptyMessage(SCAN_OK);
-                }
-            }
-        }).start();
-
-    }
-
-
-    private static class MyHandler extends Handler {
-        private final WeakReference<ImageFileFragment> mFragment;
-
-        public MyHandler(ImageFileFragment fragment) {
-            mFragment = new WeakReference<>(fragment);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            ImageFileFragment fragment = mFragment.get();
-            if (fragment != null) {
-                switch (msg.what) {
-                    case SCAN_OK:
-                        //时间排序
-                        Collections.sort(fragment.mImages, new YMComparator());
-                        fragment.mAdapter = new ImageFileAdapter(fragment, fragment.mImages, fragment.mPath,
-                                fragment.mGridView);
-                        fragment.mSIView.setFileAdapter(fragment.mAdapter);
-                        fragment.mAdapter.setUpdateListener(fragment.mController);
-                        break;
-                    case SCAN_ERROR:
-                        Toast.makeText(fragment.getActivity(), fragment.getString(R.string.sdcard_not_prepare_toast), Toast.LENGTH_SHORT).show();
-                        break;
-                }
-            }
-        }
-    }
-
-    public void notifyGridView() {
-        mImages.clear();
-        mPath.clear();
-        getImages();
-        mAdapter.notifyDataSetChanged();
-    }
-
-    public void notifyImage() {
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-}

+ 0 - 160
o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/OtherFileFragment.java

@@ -1,160 +0,0 @@
-package jiguang.chat.activity.historyfile.fragment;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.os.Handler;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.FileContent;
-import cn.jpush.im.android.api.content.MessageContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import jiguang.chat.activity.fragment.BaseFragment;
-import jiguang.chat.activity.historyfile.adapter.OtherFileAdapter;
-import jiguang.chat.activity.historyfile.controller.HistoryFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.listview.StickyListHeadersListView;
-
-/**
- * Created by ${chenyn} on 2017/8/23.
- */
-
-public class OtherFileFragment extends BaseFragment {
-    private HistoryFileController mController;
-    private String mUserName;
-    private long mGroupId;
-    private Activity mContext;
-    private View mRootView;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private OtherFileAdapter mAdapter;
-    private List<FileItem> mDocuments = new ArrayList<>();
-    private StickyListHeadersListView mDocumentList;
-    private Boolean mIsGroup;
-    private static int section = 1;
-    private Map<String, Integer> sectionMap = new HashMap<String, Integer>();
-
-    public void setController(HistoryFileController controller, String userName, long groupId, boolean isGroup, Activity activity) {
-        mController = controller;
-        mUserName = userName;
-        mGroupId = groupId;
-        mIsGroup = isGroup;
-        mContext = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.document_file,
-                (ViewGroup) mContext.findViewById(R.id.main_view), false);
-        mDocumentList = (StickyListHeadersListView) mRootView.findViewById(R.id.document_list);
-        initData();
-    }
-
-    private void initData() {
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                Conversation conversation;
-                if (mIsGroup) {
-                    conversation = JMessageClient.getGroupConversation(mGroupId);
-                } else {
-                    conversation = JMessageClient.getSingleConversation(mUserName);
-                }
-                List<Message> allMessage = conversation.getAllMessage();
-                for (Message msg : allMessage) {
-                    MessageContent content = msg.getContent();
-
-                    if (content.getContentType() == ContentType.file) {
-                        String fileType = content.getStringExtra("fileType");
-                        if (fileType != null &&
-                                !fileType.equals("mp4") && !fileType.equals("mov") && !fileType.equals("rm") &&
-                                !fileType.equals("rmvb") && !fileType.equals("wmv") && !fileType.equals("avi") &&
-                                !fileType.equals("3gp") && !fileType.equals("mkv") && !fileType.equals("wav") &&
-                                !fileType.equals("mp3") && !fileType.equals("wma") && !fileType.equals("midi") &&
-                                !fileType.equals("ppt") && !fileType.equals("pptx") && !fileType.equals("doc") &&
-                                !fileType.equals("docx") && !fileType.equals("pdf") && !fileType.equals("xls") &&
-                                !fileType.equals("xlsx") && !fileType.equals("txt") && !fileType.equals("wps")) {
-
-                            FileContent fileContent = (FileContent) content;
-                            String localPath = fileContent.getLocalPath();
-
-                            long createTime = msg.getCreateTime();
-                            long fileSize = fileContent.getFileSize();
-                            Date date = new Date(createTime);
-                            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月");
-                            String time = format.format(date);
-                            FileItem item = new FileItem(localPath, fileContent.getFileName(), fileSize + "", time, msg.getId(), msg.getFromName(), msg);
-                            if (!sectionMap.containsKey(item.getDate())) {
-                                item.setSection(section);
-                                sectionMap.put(item.getDate(), section);
-                                section++;
-                            } else {
-                                item.setSection(sectionMap.get(item.getDate()));
-                            }
-                            mDocuments.add(item);
-                        }
-
-                    }
-                    mHandler.sendEmptyMessage(SCAN_OK);
-                }
-            }
-        }).start();
-    }
-
-    private Handler mHandler = new Handler(new Handler.Callback() {
-        @Override
-        public boolean handleMessage(android.os.Message msg) {
-            switch (msg.what) {
-                case SCAN_OK:
-                    if (mDocumentList != null) {
-                        mAdapter = new OtherFileAdapter(mContext, mDocuments);
-                        mDocumentList.setAdapter(mAdapter);
-                        mAdapter.setUpdateListener(mController);
-                    }
-                    break;
-                case SCAN_ERROR:
-                    Toast.makeText(mContext, getString(R.string.sdcard_not_prepare_toast),
-                            Toast.LENGTH_SHORT).show();
-                    break;
-            }
-            return false;
-        }
-    });
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    public void notifyOther() {
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-
-    public void notifyListOther() {
-        mDocuments.clear();
-        initData();
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-}

+ 0 - 158
o2android/app/src/main/java/jiguang/chat/activity/historyfile/fragment/VideoFileFragment.java

@@ -1,158 +0,0 @@
-package jiguang.chat.activity.historyfile.fragment;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.os.Handler;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.content.FileContent;
-import cn.jpush.im.android.api.content.MessageContent;
-import cn.jpush.im.android.api.enums.ContentType;
-import cn.jpush.im.android.api.model.Conversation;
-import cn.jpush.im.android.api.model.Message;
-import jiguang.chat.activity.fragment.BaseFragment;
-import jiguang.chat.activity.historyfile.adapter.VideoFileAdapter;
-import jiguang.chat.activity.historyfile.controller.HistoryFileController;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.view.listview.StickyListHeadersListView;
-
-/**
- * Created by ${chenyn} on 2017/8/23.
- */
-
-public class VideoFileFragment extends BaseFragment {
-    private HistoryFileController mController;
-    private String mUserName;
-    private long mGroupId;
-    private Activity mContext;
-    private View mRootView;
-    private final static int SCAN_OK = 1;
-    private final static int SCAN_ERROR = 0;
-    private VideoFileAdapter mAdapter;
-    private List<FileItem> mDocuments = new ArrayList<>();
-    private StickyListHeadersListView mDocumentList;
-    private Boolean mIsGroup;
-    private static int section = 1;
-    private Map<String, Integer> sectionMap = new HashMap<String, Integer>();
-
-    public void setController(HistoryFileController controller, String userName, long groupId, boolean isGroup, Activity activity) {
-        mController = controller;
-        mUserName = userName;
-        mGroupId = groupId;
-        mIsGroup = isGroup;
-        mContext = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.document_file,
-                (ViewGroup) mContext.findViewById(R.id.main_view), false);
-        mDocumentList = (StickyListHeadersListView) mRootView.findViewById(R.id.document_list);
-        initData();
-    }
-
-    private void initData() {
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                Conversation conversation;
-                if (mIsGroup) {
-                    conversation = JMessageClient.getGroupConversation(mGroupId);
-                } else {
-                    conversation = JMessageClient.getSingleConversation(mUserName);
-                }
-                List<Message> allMessage = conversation.getAllMessage();
-                for (cn.jpush.im.android.api.model.Message msg : allMessage) {
-                    MessageContent content = msg.getContent();
-
-                    if (content.getContentType() == ContentType.file) {
-                        String fileType = content.getStringExtra("fileType");
-                        if (fileType != null && (fileType.equals("mp4") || fileType.equals("mov") || fileType.equals("rm") ||
-                                fileType.equals("rmvb") || fileType.equals("wmv") || fileType.equals("avi") ||
-                                fileType.equals("3gp") || fileType.equals("mkv"))) {
-
-                            FileContent fileContent = (FileContent) content;
-                            String localPath = fileContent.getLocalPath();
-
-                            long createTime = msg.getCreateTime();
-                            long fileSize = fileContent.getFileSize();
-                            Date date = new Date(createTime);
-                            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月");
-                            String time = format.format(date);
-                            FileItem item = new FileItem(localPath, fileContent.getFileName(), fileSize + "", time, msg.getId(), msg.getFromName(), msg);
-                            if (!sectionMap.containsKey(item.getDate())) {
-                                item.setSection(section);
-                                sectionMap.put(item.getDate(), section);
-                                section++;
-                            } else {
-                                item.setSection(sectionMap.get(item.getDate()));
-                            }
-                            mDocuments.add(item);
-                        }
-
-                    }
-                    mHandler.sendEmptyMessage(SCAN_OK);
-                }
-            }
-        }).start();
-    }
-
-    private Handler mHandler = new Handler(new Handler.Callback() {
-        @Override
-        public boolean handleMessage(android.os.Message msg) {
-            switch (msg.what) {
-                case SCAN_OK:
-                    if (mDocumentList != null) {
-                        mAdapter = new VideoFileAdapter(mContext, mDocuments);
-                        mDocumentList.setAdapter(mAdapter);
-                        mAdapter.setUpdateListener(mController);
-                    }
-                    break;
-                case SCAN_ERROR:
-                    Toast.makeText(mContext, getString(R.string.sdcard_not_prepare_toast),
-                            Toast.LENGTH_SHORT).show();
-                    break;
-            }
-            return false;
-        }
-    });
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-
-    public void notifyVideo() {
-        if (mAdapter != null) {
-            mAdapter.notifyDataSetChanged();
-        }
-    }
-
-    public void notifyListVideo() {
-        mDocuments.clear();
-        initData();
-        if (mAdapter != null)
-            mAdapter.notifyDataSetChanged();
-    }
-
-
-}

+ 0 - 65
o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersBaseAdapter.java

@@ -1,65 +0,0 @@
-/*
- Copyright 2013 Tonic Artos
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-package jiguang.chat.activity.historyfile.grideviewheader;
-
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListAdapter;
-
-/**
- * Base adapter interface for StickyGridHeadersGridView. The adapter expects two
- * sets of data, items, and headers. Implement this interface to provide an
- * optimised method for generating the header data set. Otherwise see
- * {@link StickyGridHeadersSimpleAdapter} for a solution which will
- * auto-generate the set of headers.
- *
- */
-public interface StickyGridHeadersBaseAdapter extends ListAdapter {
-    /**
-     * Get the number of items with a given header.
-     *
-     *            The header in the adapter's data set.
-     * @return The number of items for the specified header.
-     */
-    public int getCountForHeader(int header);
-
-    /**
-     * Get the number of headers in the adapter's data set.
-     *
-     * @return Number of headers.
-     */
-    public int getNumHeaders();
-
-    /**
-     * Get a View that displays the header data at the specified position in the
-     * set. You can either create a View manually or inflate it from an XML
-     * layout file.
-     *
-     * @param position
-     *            The position of the header within the adapter's header data
-     *            set.
-     * @param convertView
-     *            The old view to reuse, if possible. Note: You should check
-     *            that this view is non-null and of an appropriate type before
-     *            using. If it is not possible to convert this view to display
-     *            the correct data, this method can create a new view.
-     * @param parent
-     *            The parent that this view will eventually be attached to.
-     * @return A View corresponding to the data at the specified position.
-     */
-    View getHeaderView(int position, View convertView, ViewGroup parent);
-}

+ 0 - 462
o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersBaseAdapterWrapper.java

@@ -1,462 +0,0 @@
-/*
- Copyright 2013 Tonic Artos
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-package jiguang.chat.activity.historyfile.grideviewheader;
-
-import android.content.Context;
-import android.database.DataSetObserver;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-
-/**
- * Adapter wrapper to insert extra views and otherwise hack around GridView to
- * add sections and headers.
- * 
- */
-public class StickyGridHeadersBaseAdapterWrapper extends BaseAdapter {
-    private static final int sNumViewTypes = 3;
-
-    protected static final int ID_FILLER = -0x02;
-
-    protected static final int ID_HEADER = -0x01;
-
-    protected static final int ID_HEADER_FILLER = -0x03;
-
-    protected static final int POSITION_FILLER = -0x01;
-
-    protected static final int POSITION_HEADER = -0x02;
-
-    protected static final int POSITION_HEADER_FILLER = -0x03;
-
-    protected static final int VIEW_TYPE_FILLER = 0x00;
-
-    protected static final int VIEW_TYPE_HEADER = 0x01;
-
-    protected static final int VIEW_TYPE_HEADER_FILLER = 0x02;
-
-    private final Context mContext;
-
-    private int mCount;
-
-    private boolean mCounted = false;
-
-    private DataSetObserver mDataSetObserver = new DataSetObserver() {
-        @Override
-        public void onChanged() {
-            updateCount();
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public void onInvalidated() {
-            mCounted = false;
-            notifyDataSetInvalidated();
-        }
-    };
-
-    private final StickyGridHeadersBaseAdapter mDelegate;
-
-    private StickyGridHeadersGridView mGridView;
-
-    private View mLastHeaderViewSeen;
-
-    private View mLastViewSeen;
-
-    private int mNumColumns = 1;
-
-    public StickyGridHeadersBaseAdapterWrapper(Context context, StickyGridHeadersGridView gridView,
-            StickyGridHeadersBaseAdapter delegate) {
-        mContext = context;
-        mDelegate = delegate;
-        mGridView = gridView;
-        delegate.registerDataSetObserver(mDataSetObserver);
-    }
-
-    @Override
-    public boolean areAllItemsEnabled() {
-        return false;
-    }
-
-    @Override
-    public int getCount() {
-        if (mCounted) {
-            return mCount;
-        }
-        mCount = 0;
-        int numHeaders = mDelegate.getNumHeaders();
-        if (numHeaders == 0) {
-            mCount = mDelegate.getCount();
-            mCounted = true;
-            return mCount;
-        }
-
-        for (int i = 0; i < numHeaders; i++) {
-            // Pad count with space for header and trailing filler in header
-            // group.
-            mCount += mDelegate.getCountForHeader(i) + unFilledSpacesInHeaderGroup(i) + mNumColumns;
-        }
-        mCounted = true;
-        return mCount;
-    }
-
-    /**
-     * Get the data item associated with the specified position in the data set.
-     * <p>
-     * Since this wrapper inserts fake entries to fill out items grouped by
-     * header and also spaces to insert headers into some positions will return
-     * null.
-     * </p>
-     * 
-     * @param position Position of the item whose data we want within the
-     *            adapter's data set.
-     * @return The data at the specified position.
-     */
-    @Override
-    public Object getItem(int position) throws ArrayIndexOutOfBoundsException {
-        Position adapterPosition = translatePosition(position);
-        if (adapterPosition.mPosition == POSITION_FILLER
-                || adapterPosition.mPosition == POSITION_HEADER) {
-            // Fake entry in view.
-            return null;
-        }
-
-        return mDelegate.getItem(adapterPosition.mPosition);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        Position adapterPosition = translatePosition(position);
-        if (adapterPosition.mPosition == POSITION_HEADER) {
-            return ID_HEADER;
-        }
-        if (adapterPosition.mPosition == POSITION_FILLER) {
-            return ID_FILLER;
-        }
-        if (adapterPosition.mPosition == POSITION_HEADER_FILLER) {
-            return ID_HEADER_FILLER;
-        }
-        return mDelegate.getItemId(adapterPosition.mPosition);
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        Position adapterPosition = translatePosition(position);
-        if (adapterPosition.mPosition == POSITION_HEADER) {
-            return VIEW_TYPE_HEADER;
-        }
-        if (adapterPosition.mPosition == POSITION_FILLER) {
-            return VIEW_TYPE_FILLER;
-        }
-        if (adapterPosition.mPosition == POSITION_HEADER_FILLER) {
-            return VIEW_TYPE_HEADER_FILLER;
-        }
-        int itemViewType = mDelegate.getItemViewType(adapterPosition.mPosition);
-        if (itemViewType == IGNORE_ITEM_VIEW_TYPE) {
-            return itemViewType;
-        }
-        return itemViewType + sNumViewTypes;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        Position adapterPosition = translatePosition(position);
-        if (adapterPosition.mPosition == POSITION_HEADER) {
-            HeaderFillerView v = getHeaderFillerView(adapterPosition.mHeader, convertView, parent);
-            View view = mDelegate.getHeaderView(adapterPosition.mHeader, (View)v.getTag(), parent);
-            mGridView.detachHeader((View) v.getTag());
-            v.setTag(view);
-            mGridView.attachHeader(view);
-            convertView = v;
-            mLastHeaderViewSeen = v;
-            v.forceLayout();
-        } else if (adapterPosition.mPosition == POSITION_HEADER_FILLER) {
-            convertView = getFillerView(convertView, parent, mLastHeaderViewSeen);
-            convertView.forceLayout();
-        } else if (adapterPosition.mPosition == POSITION_FILLER) {
-            convertView = getFillerView(convertView, parent, mLastViewSeen);
-        } else {
-            convertView = mDelegate.getView(adapterPosition.mPosition, convertView, parent);
-            mLastViewSeen = convertView;
-        }
-
-        return convertView;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return mDelegate.getViewTypeCount() + sNumViewTypes;
-    }
-
-    /**
-     * @return the adapter wrapped by this adapter.
-     */
-    public StickyGridHeadersBaseAdapter getWrappedAdapter() {
-        return mDelegate;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return mDelegate.hasStableIds();
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return mDelegate.isEmpty();
-    }
-
-    @Override
-    public boolean isEnabled(int position) {
-        Position adapterPosition = translatePosition(position);
-        if (adapterPosition.mPosition == POSITION_FILLER
-                || adapterPosition.mPosition == POSITION_HEADER) {
-            return false;
-        }
-
-        return mDelegate.isEnabled(adapterPosition.mPosition);
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-        mDelegate.registerDataSetObserver(observer);
-    }
-
-    public void setNumColumns(int numColumns) {
-        mNumColumns = numColumns;
-        mCounted = false;
-        // notifyDataSetChanged();
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-        mDelegate.unregisterDataSetObserver(observer);
-    }
-
-    private FillerView getFillerView(View convertView, ViewGroup parent, View lastViewSeen) {
-        FillerView fillerView = (FillerView)convertView;
-        if (fillerView == null) {
-            fillerView = new FillerView(mContext);
-        }
-
-        fillerView.setMeasureTarget(lastViewSeen);
-
-        return fillerView;
-    }
-
-    private HeaderFillerView getHeaderFillerView(int headerPosition, View convertView,
-            ViewGroup parent) {
-        HeaderFillerView headerFillerView = (HeaderFillerView)convertView;
-        if (headerFillerView == null) {
-            headerFillerView = new HeaderFillerView(mContext);
-        }
-
-        return headerFillerView;
-    }
-
-    /**
-     * Counts the number of items that would be need to fill out the last row in
-     * the group of items with the given header.
-     * 
-     * @param header Header set of items are grouped by.
-     * @return The count of unfilled spaces in the last row.
-     */
-    private int unFilledSpacesInHeaderGroup(int header) {
-        int remainder = mDelegate.getCountForHeader(header) % mNumColumns;
-        return remainder == 0 ? 0 : mNumColumns - remainder;
-    }
-
-    protected long getHeaderId(int position) {
-        return translatePosition(position).mHeader;
-    }
-
-    protected View getHeaderView(int position, View convertView, ViewGroup parent) {
-        if (mDelegate.getNumHeaders() == 0) {
-            return null;
-        }
-
-        return mDelegate.getHeaderView(translatePosition(position).mHeader, convertView, parent);
-    }
-
-    protected Position translatePosition(int position) {
-        int numHeaders = mDelegate.getNumHeaders();
-        if (numHeaders == 0) {
-            if (position >= mDelegate.getCount()) {
-                return new Position(POSITION_FILLER, 0);
-            }
-            return new Position(position, 0);
-        }
-
-        // Translate GridView position to Adapter position.
-        int adapterPosition = position;
-        int place = position;
-        int i;
-
-        for (i = 0; i < numHeaders; i++) {
-            int sectionCount = mDelegate.getCountForHeader(i);
-
-            // Skip past fake items making space for header in front of
-            // sections.
-            if (place == 0) {
-                // Position is first column where header will be.
-                return new Position(POSITION_HEADER, i);
-            }
-            place -= mNumColumns;
-            if (place < 0) {
-                // Position is a fake so return null.
-                return new Position(POSITION_HEADER_FILLER, i);
-            }
-            adapterPosition -= mNumColumns;
-
-            if (place < sectionCount) {
-                return new Position(adapterPosition, i);
-            }
-
-            // Skip past section end of section row filler;
-            int filler = unFilledSpacesInHeaderGroup(i);
-            adapterPosition -= filler;
-            place -= sectionCount + filler;
-
-            if (place < 0) {
-                // Position is a fake so return null.
-                return new Position(POSITION_FILLER, i);
-            }
-        }
-
-        // Position is a fake.
-        return new Position(POSITION_FILLER, i);
-    }
-
-    protected void updateCount() {
-        mCount = 0;
-        int numHeaders = mDelegate.getNumHeaders();
-        if (numHeaders == 0) {
-            mCount = mDelegate.getCount();
-            mCounted = true;
-            return;
-        }
-
-        for (int i = 0; i < numHeaders; i++) {
-            mCount += mDelegate.getCountForHeader(i) + mNumColumns;
-        }
-        mCounted = true;
-    }
-
-    /**
-     * Simple view to fill space in grid view.
-     * 
-     * @author Tonic Artos
-     */
-    protected class FillerView extends View {
-        private View mMeasureTarget;
-
-        public FillerView(Context context) {
-            super(context);
-        }
-
-        public FillerView(Context context, AttributeSet attrs) {
-            super(context, attrs);
-        }
-
-        public FillerView(Context context, AttributeSet attrs, int defStyle) {
-            super(context, attrs, defStyle);
-        }
-
-        public void setMeasureTarget(View lastViewSeen) {
-            mMeasureTarget = lastViewSeen;
-        }
-
-        @Override
-        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-            heightMeasureSpec = MeasureSpec.makeMeasureSpec(mMeasureTarget.getMeasuredHeight(),
-                    MeasureSpec.EXACTLY);
-            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        }
-    }
-
-    /**
-     * A view to hold the section header and measure the header row height
-     * correctly.
-     * 
-     * @author Tonic Artos
-     */
-    protected class HeaderFillerView extends FrameLayout {
-        private int mHeaderId;
-
-        public HeaderFillerView(Context context) {
-            super(context);
-        }
-
-        public HeaderFillerView(Context context, AttributeSet attrs) {
-            super(context, attrs);
-        }
-
-        public HeaderFillerView(Context context, AttributeSet attrs, int defStyle) {
-            super(context, attrs, defStyle);
-        }
-
-        public int getHeaderId() {
-            return mHeaderId;
-        }
-
-        /**
-         * Set the adapter id for this header so we can easily pull it later.
-         */
-        public void setHeaderId(int headerId) {
-            mHeaderId = headerId;
-        }
-
-        @Override
-        protected LayoutParams generateDefaultLayoutParams() {
-            return new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
-        }
-
-        @Override
-        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-            View v = (View)getTag();
-            ViewGroup.LayoutParams params = v.getLayoutParams();
-            if (params == null) {
-                params = generateDefaultLayoutParams();
-                v.setLayoutParams(params);
-            }
-            if (v.getVisibility() != View.GONE) {
-                int heightSpec = getChildMeasureSpec(
-                        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 0, params.height);
-                int widthSpec = getChildMeasureSpec(
-                        MeasureSpec.makeMeasureSpec(mGridView.getWidth(), MeasureSpec.EXACTLY), 0,
-                        params.width);
-                v.measure(widthSpec, heightSpec);
-            }
-            setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), v.getMeasuredHeight());
-        }
-    }
-
-    protected class HeaderHolder {
-        protected View mHeaderView;
-    }
-
-    protected class Position {
-        protected int mHeader;
-
-        protected int mPosition;
-
-        protected Position(int position, int header) {
-            mPosition = position;
-            mHeader = header;
-        }
-    }
-}

+ 0 - 1226
o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersGridView.java

@@ -1,1226 +0,0 @@
-/*
- Copyright 2013 Tonic Artos
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-package jiguang.chat.activity.historyfile.grideviewheader;
-
-
-import android.content.Context;
-import android.database.DataSetObserver;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.util.AttributeSet;
-import android.view.HapticFeedbackConstants;
-import android.view.MotionEvent;
-import android.view.SoundEffectConstants;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.view.accessibility.AccessibilityEvent;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AdapterView.OnItemLongClickListener;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.GridView;
-import android.widget.ListAdapter;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * GridView that displays items in sections with headers that stick to the top
- * of the view.
- * 
- */
-public class StickyGridHeadersGridView extends GridView implements OnScrollListener,
-        OnItemClickListener, OnItemSelectedListener, OnItemLongClickListener {
-    private static final String ERROR_PLATFORM = "Error supporting platform "
-            + Build.VERSION.SDK_INT + ".";
-
-    private static final int MATCHED_STICKIED_HEADER = -2;
-
-    private static final int NO_MATCHED_HEADER = -1;
-
-    protected static final int TOUCH_MODE_DONE_WAITING = 2;
-
-    protected static final int TOUCH_MODE_DOWN = 0;
-
-    protected static final int TOUCH_MODE_FINISHED_LONG_PRESS = -2;
-
-    protected static final int TOUCH_MODE_REST = -1;
-
-    protected static final int TOUCH_MODE_TAP = 1;
-
-    static final String TAG = StickyGridHeadersGridView.class.getSimpleName();
-
-    private static MotionEvent.PointerCoords[] getPointerCoords(MotionEvent e) {
-        int n = e.getPointerCount();
-        MotionEvent.PointerCoords[] r = new MotionEvent.PointerCoords[n];
-        for (int i = 0; i < n; i++) {
-            r[i] = new MotionEvent.PointerCoords();
-            e.getPointerCoords(i, r[i]);
-        }
-        return r;
-    }
-
-    private static int[] getPointerIds(MotionEvent e) {
-        int n = e.getPointerCount();
-        int[] r = new int[n];
-        for (int i = 0; i < n; i++) {
-            r[i] = e.getPointerId(i);
-        }
-        return r;
-    }
-
-    public CheckForHeaderLongPress mPendingCheckForLongPress;
-
-    public CheckForHeaderTap mPendingCheckForTap;
-
-    private boolean mAreHeadersSticky = true;
-
-    private final Rect mClippingRect = new Rect();
-
-    private boolean mClippingToPadding;
-
-    private boolean mClipToPaddingHasBeenSet;
-
-    private int mColumnWidth;
-
-    private long mCurrentHeaderId = -1;
-
-    private DataSetObserver mDataSetObserver = new DataSetObserver() {
-        @Override
-        public void onChanged() {
-            reset();
-        }
-
-        @Override
-        public void onInvalidated() {
-            reset();
-        }
-    };
-
-    private int mHeaderBottomPosition;
-
-    private boolean mHeadersIgnorePadding;
-
-    private int mHorizontalSpacing;
-
-    private boolean mMaskStickyHeaderRegion = true;
-
-    private float mMotionY;
-
-    /**
-     * Must be set from the wrapped GridView in the constructor.
-     */
-    private int mNumColumns;
-
-    private boolean mNumColumnsSet;
-
-    private int mNumMeasuredColumns = 1;
-
-    private OnHeaderClickListener mOnHeaderClickListener;
-
-    private OnHeaderLongClickListener mOnHeaderLongClickListener;
-
-    private OnItemClickListener mOnItemClickListener;
-
-    private OnItemLongClickListener mOnItemLongClickListener;
-
-    private OnItemSelectedListener mOnItemSelectedListener;
-
-    private PerformHeaderClick mPerformHeaderClick;
-
-    private OnScrollListener mScrollListener;
-
-    private int mScrollState = SCROLL_STATE_IDLE;
-
-    private View mStickiedHeader;
-
-    private Runnable mTouchModeReset;
-
-    private int mTouchSlop;
-
-    private int mVerticalSpacing;
-
-    protected StickyGridHeadersBaseAdapterWrapper mAdapter;
-
-    protected boolean mDataChanged;
-
-    protected int mMotionHeaderPosition;
-
-    protected int mTouchMode;
-
-    boolean mHeaderChildBeingPressed = false;
-
-    public StickyGridHeadersGridView(Context context) {
-        this(context, null);
-    }
-
-    public StickyGridHeadersGridView(Context context, AttributeSet attrs) {
-        this(context, attrs, android.R.attr.gridViewStyle);
-    }
-
-    public StickyGridHeadersGridView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        super.setOnScrollListener(this);
-        setVerticalFadingEdgeEnabled(false);
-
-        if (!mNumColumnsSet) {
-            mNumColumns = AUTO_FIT;
-        }
-
-        ViewConfiguration vc = ViewConfiguration.get(context);
-        mTouchSlop = vc.getScaledTouchSlop();
-    }
-
-    public boolean areHeadersSticky() {
-        return mAreHeadersSticky;
-    }
-
-    /**
-     * Gets the header at an item position. However, the position must be that
-     * of a HeaderFiller.
-     * 
-     * @param position Position of HeaderFiller.
-     * @return Header View wrapped in HeaderFiller or null if no header was
-     *         found.
-     */
-    public View getHeaderAt(int position) {
-        if (position == MATCHED_STICKIED_HEADER) {
-            return mStickiedHeader;
-        }
-
-        try {
-            return (View)getChildAt(position).getTag();
-        } catch (Exception e) {
-        }
-        return null;
-    }
-
-    /**
-     * Get the currently stickied header.
-     * 
-     * @return Current stickied header.
-     */
-    public View getStickiedHeader() {
-        return mStickiedHeader;
-    }
-
-    public boolean getStickyHeaderIsTranscluent() {
-        return !mMaskStickyHeaderRegion;
-    }
-
-    @Override
-    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        mOnItemClickListener.onItemClick(parent, view,
-                mAdapter.translatePosition(position).mPosition, id);
-    }
-
-    @Override
-    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
-        return mOnItemLongClickListener.onItemLongClick(parent, view,
-                mAdapter.translatePosition(position).mPosition, id);
-    }
-
-    @Override
-    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-        mOnItemSelectedListener.onItemSelected(parent, view,
-                mAdapter.translatePosition(position).mPosition, id);
-    }
-
-    @Override
-    public void onNothingSelected(AdapterView<?> parent) {
-        mOnItemSelectedListener.onNothingSelected(parent);
-    }
-
-    @Override
-    public void onRestoreInstanceState(Parcelable state) {
-        SavedState ss = (SavedState)state;
-
-        super.onRestoreInstanceState(ss.getSuperState());
-        mAreHeadersSticky = ss.areHeadersSticky;
-
-        requestLayout();
-    }
-
-    @Override
-    public Parcelable onSaveInstanceState() {
-        Parcelable superState = super.onSaveInstanceState();
-
-        SavedState ss = new SavedState(superState);
-        ss.areHeadersSticky = mAreHeadersSticky;
-        return ss;
-    }
-
-    @Override
-    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
-            int totalItemCount) {
-        if (mScrollListener != null) {
-            mScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
-        }
-
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
-            scrollChanged(firstVisibleItem);
-        }
-    }
-
-    @Override
-    public void onScrollStateChanged(AbsListView view, int scrollState) {
-        if (mScrollListener != null) {
-            mScrollListener.onScrollStateChanged(view, scrollState);
-        }
-
-        mScrollState = scrollState;
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev) {
-        final int action = ev.getAction();
-        boolean wasHeaderChildBeingPressed = mHeaderChildBeingPressed;
-        if (mHeaderChildBeingPressed) {
-            final View tempHeader = getHeaderAt(mMotionHeaderPosition);
-            final View headerHolder = mMotionHeaderPosition == MATCHED_STICKIED_HEADER ?
-                    tempHeader : getChildAt(mMotionHeaderPosition);
-            if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
-                mHeaderChildBeingPressed = false;
-            }
-            if (tempHeader != null) {
-                tempHeader.dispatchTouchEvent(transformEvent(ev, mMotionHeaderPosition));
-                tempHeader.invalidate();
-                tempHeader.postDelayed(new Runnable() {
-                    public void run() {
-                        invalidate(0, headerHolder.getTop(), getWidth(), headerHolder.getTop()+headerHolder.getHeight());
-                    }
-                }, ViewConfiguration.getPressedStateDuration());
-                invalidate(0, headerHolder.getTop(), getWidth(), headerHolder.getTop()+headerHolder.getHeight());
-            }
-        }
-
-        switch (action & MotionEvent.ACTION_MASK) {
-            case MotionEvent.ACTION_DOWN:
-                if (mPendingCheckForTap == null) {
-                    mPendingCheckForTap = new CheckForHeaderTap();
-                }
-                postDelayed(mPendingCheckForTap, ViewConfiguration.getTapTimeout());
-
-                final int y = (int)ev.getY();
-                mMotionY = y;
-                mMotionHeaderPosition = findMotionHeader(y);
-                if (mMotionHeaderPosition == NO_MATCHED_HEADER
-                        || mScrollState == SCROLL_STATE_FLING) {
-                    // Don't consume the event and pass it to super because we
-                    // can't handle it yet.
-                    break;
-                } else {
-                    View tempHeader = getHeaderAt(mMotionHeaderPosition);
-                    if (tempHeader != null) {
-                        if (tempHeader.dispatchTouchEvent(transformEvent(ev, mMotionHeaderPosition))) {
-                            mHeaderChildBeingPressed = true;
-                            tempHeader.setPressed(true);
-                        }
-                        tempHeader.invalidate();
-                        if (mMotionHeaderPosition != MATCHED_STICKIED_HEADER) {
-                            tempHeader = getChildAt(mMotionHeaderPosition);
-                        }
-                        invalidate(0, tempHeader.getTop(), getWidth(), tempHeader.getTop()+tempHeader.getHeight());
-                    }
-                }
-                mTouchMode = TOUCH_MODE_DOWN;
-                return true;
-            case MotionEvent.ACTION_MOVE:
-                if (mMotionHeaderPosition != NO_MATCHED_HEADER
-                        && Math.abs(ev.getY() - mMotionY) > mTouchSlop) {
-                    // Detected scroll initiation so cancel touch completion on
-                    // header.
-                    mTouchMode = TOUCH_MODE_REST;
-                    // if (!mHeaderChildBeingPressed) {
-                    final View header = getHeaderAt(mMotionHeaderPosition);
-                    if (header != null) {
-                        header.setPressed(false);
-                        header.invalidate();
-                    }
-                    final Handler handler = getHandler();
-                    if (handler != null) {
-                        handler.removeCallbacks(mPendingCheckForLongPress);
-                    }
-                    mMotionHeaderPosition = NO_MATCHED_HEADER;
-                    // }
-                }
-                break;
-            case MotionEvent.ACTION_UP:
-                if (mTouchMode == TOUCH_MODE_FINISHED_LONG_PRESS) {
-                    mTouchMode = TOUCH_MODE_REST;
-                    return true;
-                }
-                if (mTouchMode == TOUCH_MODE_REST || mMotionHeaderPosition == NO_MATCHED_HEADER) {
-                    break;
-                }
-
-                final View header = getHeaderAt(mMotionHeaderPosition);
-                if (!wasHeaderChildBeingPressed) {
-                    if (header != null) {
-                        if (mTouchMode != TOUCH_MODE_DOWN) {
-                            header.setPressed(false);
-                        }
-
-                        if (mPerformHeaderClick == null) {
-                            mPerformHeaderClick = new PerformHeaderClick();
-                        }
-
-                        final PerformHeaderClick performHeaderClick = mPerformHeaderClick;
-                        performHeaderClick.mClickMotionPosition = mMotionHeaderPosition;
-                        performHeaderClick.rememberWindowAttachCount();
-
-                        if (mTouchMode == TOUCH_MODE_DOWN || mTouchMode == TOUCH_MODE_TAP) {
-                            final Handler handler = getHandler();
-                            if (handler != null) {
-                                handler.removeCallbacks(mTouchMode == TOUCH_MODE_DOWN ? mPendingCheckForTap
-                                        : mPendingCheckForLongPress);
-                            }
-
-                            if (!mDataChanged) {
-                                /*
-                                 * Got here so must be a tap. The long press
-                                 * would have triggered on the callback handler.
-                                 */
-                                mTouchMode = TOUCH_MODE_TAP;
-                                header.setPressed(true);
-                                setPressed(true);
-                                if (mTouchModeReset != null) {
-                                    removeCallbacks(mTouchModeReset);
-                                }
-                                mTouchModeReset = new Runnable() {
-                                    @Override
-                                    public void run() {
-                                        mMotionHeaderPosition = NO_MATCHED_HEADER;
-                                        mTouchModeReset = null;
-                                        mTouchMode = TOUCH_MODE_REST;
-                                        header.setPressed(false);
-                                        setPressed(false);
-                                        header.invalidate();
-                                        invalidate(0, header.getTop(), getWidth(),
-                                                header.getHeight());
-                                        if (!mDataChanged) {
-                                            performHeaderClick.run();
-                                        }
-                                    }
-                                };
-                                postDelayed(mTouchModeReset,
-                                        ViewConfiguration.getPressedStateDuration());
-                            } else {
-                                mTouchMode = TOUCH_MODE_REST;
-                            }
-                        } else if (!mDataChanged) {
-                            performHeaderClick.run();
-                        }
-                    }
-                }
-                mTouchMode = TOUCH_MODE_REST;
-                return true;
-        }
-        return super.onTouchEvent(ev);
-    }
-
-    public boolean performHeaderClick(View view, long id) {
-        if (mOnHeaderClickListener != null) {
-            playSoundEffect(SoundEffectConstants.CLICK);
-            if (view != null) {
-                view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
-            }
-            mOnHeaderClickListener.onHeaderClick(this, view, id);
-            return true;
-        }
-
-        return false;
-    }
-
-    public boolean performHeaderLongPress(View view, long id) {
-        boolean handled = false;
-        if (mOnHeaderLongClickListener != null) {
-            handled = mOnHeaderLongClickListener.onHeaderLongClick(this, view, id);
-        }
-
-        if (handled) {
-            if (view != null) {
-                view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
-            }
-            performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
-        }
-
-        return handled;
-    }
-
-    @Override
-    public void setAdapter(ListAdapter adapter) {
-        if (mAdapter != null && mDataSetObserver != null) {
-            mAdapter.unregisterDataSetObserver(mDataSetObserver);
-        }
-
-        if (!mClipToPaddingHasBeenSet) {
-            mClippingToPadding = true;
-        }
-
-        StickyGridHeadersBaseAdapter baseAdapter;
-        if (adapter instanceof StickyGridHeadersBaseAdapter) {
-            baseAdapter = (StickyGridHeadersBaseAdapter)adapter;
-        } else if (adapter instanceof StickyGridHeadersSimpleAdapter) {
-            // Wrap up simple adapter to auto-generate the data we need.
-            baseAdapter = new StickyGridHeadersSimpleAdapterWrapper(
-                    (StickyGridHeadersSimpleAdapter)adapter);
-        } else {
-            // Wrap up a list adapter so it is an adapter with zero headers.
-            baseAdapter = new StickyGridHeadersListAdapterWrapper(adapter);
-        }
-
-        this.mAdapter = new StickyGridHeadersBaseAdapterWrapper(getContext(), this, baseAdapter);
-        this.mAdapter.registerDataSetObserver(mDataSetObserver);
-        reset();
-        super.setAdapter(this.mAdapter);
-    }
-
-    public void setAreHeadersSticky(boolean useStickyHeaders) {
-        if (useStickyHeaders != mAreHeadersSticky) {
-            mAreHeadersSticky = useStickyHeaders;
-            requestLayout();
-        }
-    }
-
-    @Override
-    public void setClipToPadding(boolean clipToPadding) {
-        super.setClipToPadding(clipToPadding);
-        mClippingToPadding = clipToPadding;
-        mClipToPaddingHasBeenSet = true;
-    }
-
-    @Override
-    public void setColumnWidth(int columnWidth) {
-        super.setColumnWidth(columnWidth);
-        mColumnWidth = columnWidth;
-    }
-
-    /**
-     * If set to true, headers will ignore horizontal padding.
-     * 
-     * @param b if true, horizontal padding is ignored by headers
-     */
-    public void setHeadersIgnorePadding(boolean b) {
-        mHeadersIgnorePadding = b;
-    }
-
-    @Override
-    public void setHorizontalSpacing(int horizontalSpacing) {
-        super.setHorizontalSpacing(horizontalSpacing);
-        mHorizontalSpacing = horizontalSpacing;
-    }
-
-    @Override
-    public void setNumColumns(int numColumns) {
-        super.setNumColumns(numColumns);
-        mNumColumnsSet = true;
-        this.mNumColumns = numColumns;
-        if (numColumns != AUTO_FIT && mAdapter != null) {
-            mAdapter.setNumColumns(numColumns);
-        }
-    }
-
-    public void setOnHeaderClickListener(OnHeaderClickListener listener) {
-        mOnHeaderClickListener = listener;
-    }
-
-    public void setOnHeaderLongClickListener(OnHeaderLongClickListener listener) {
-        if (!isLongClickable()) {
-            setLongClickable(true);
-        }
-        mOnHeaderLongClickListener = listener;
-    }
-
-    @Override
-    public void setOnItemClickListener(OnItemClickListener listener) {
-        this.mOnItemClickListener = listener;
-        super.setOnItemClickListener(this);
-    }
-
-    @Override
-    public void setOnItemLongClickListener(
-            OnItemLongClickListener listener) {
-        this.mOnItemLongClickListener = listener;
-        super.setOnItemLongClickListener(this);
-    }
-
-    @Override
-    public void setOnItemSelectedListener(OnItemSelectedListener listener) {
-        this.mOnItemSelectedListener = listener;
-        super.setOnItemSelectedListener(this);
-    }
-
-    @Override
-    public void setOnScrollListener(OnScrollListener listener) {
-        this.mScrollListener = listener;
-    }
-
-    public void setStickyHeaderIsTranscluent(boolean isTranscluent) {
-        mMaskStickyHeaderRegion = !isTranscluent;
-    }
-
-    @Override
-    public void setVerticalSpacing(int verticalSpacing) {
-        super.setVerticalSpacing(verticalSpacing);
-        mVerticalSpacing = verticalSpacing;
-    }
-
-    private int findMotionHeader(float y) {
-        if (mStickiedHeader != null && y <= mHeaderBottomPosition) {
-            return MATCHED_STICKIED_HEADER;
-        }
-
-        int vi = 0;
-        for (int i = getFirstVisiblePosition(); i <= getLastVisiblePosition();) {
-            long id = getItemIdAtPosition(i);
-            if (id == StickyGridHeadersBaseAdapterWrapper.ID_HEADER) {
-                View headerWrapper = getChildAt(vi);
-
-                int bottom = headerWrapper.getBottom();
-                int top = headerWrapper.getTop();
-                if (y <= bottom && y >= top) {
-                    return vi;
-                }
-            }
-            i += mNumMeasuredColumns;
-            vi += mNumMeasuredColumns;
-        }
-
-        return NO_MATCHED_HEADER;
-    }
-
-    private int getHeaderHeight() {
-        if (mStickiedHeader != null) {
-            return mStickiedHeader.getMeasuredHeight();
-        }
-        return 0;
-    }
-
-    private long headerViewPositionToId(int pos) {
-        if (pos == MATCHED_STICKIED_HEADER) {
-            return mCurrentHeaderId;
-        }
-        return mAdapter.getHeaderId(getFirstVisiblePosition() + pos);
-    }
-
-    private void measureHeader() {
-        if (mStickiedHeader == null) {
-            return;
-        }
-
-        int widthMeasureSpec;
-        if (mHeadersIgnorePadding) {
-            widthMeasureSpec = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY);
-        } else {
-            widthMeasureSpec = MeasureSpec.makeMeasureSpec(getWidth() - getPaddingLeft()
-                    - getPaddingRight(), MeasureSpec.EXACTLY);
-        }
-
-        int heightMeasureSpec = 0;
-
-        ViewGroup.LayoutParams params = mStickiedHeader.getLayoutParams();
-        if (params != null && params.height > 0) {
-            heightMeasureSpec = MeasureSpec.makeMeasureSpec(params.height, MeasureSpec.EXACTLY);
-        } else {
-            heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
-        }
-        mStickiedHeader.measure(MeasureSpec.makeMeasureSpec(0,0), MeasureSpec.makeMeasureSpec(0,0));
-        mStickiedHeader.measure(widthMeasureSpec, heightMeasureSpec);
-
-        if (mHeadersIgnorePadding) {
-            mStickiedHeader.layout(getLeft(), 0, getRight(), mStickiedHeader.getMeasuredHeight());
-        } else {
-            mStickiedHeader.layout(getLeft() + getPaddingLeft(), 0, getRight() - getPaddingRight(),
-                    mStickiedHeader.getMeasuredHeight());
-        }
-    }
-
-    private void reset() {
-        mHeaderBottomPosition = 0;
-        swapStickiedHeader(null);
-        mCurrentHeaderId = INVALID_ROW_ID;
-    }
-
-    private void scrollChanged(int firstVisibleItem) {
-        if (mAdapter == null || mAdapter.getCount() == 0 || !mAreHeadersSticky) {
-            return;
-        }
-
-        View firstItem = getChildAt(0);
-        if (firstItem == null) {
-            return;
-        }
-
-        long newHeaderId;
-        int selectedHeaderPosition = firstVisibleItem;
-
-        int beforeRowPosition = firstVisibleItem - mNumMeasuredColumns;
-        if (beforeRowPosition < 0) {
-            beforeRowPosition = firstVisibleItem;
-        }
-
-        int secondRowPosition = firstVisibleItem + mNumMeasuredColumns;
-        if (secondRowPosition >= mAdapter.getCount()) {
-            secondRowPosition = firstVisibleItem;
-        }
-
-        if (mVerticalSpacing == 0) {
-            newHeaderId = mAdapter.getHeaderId(firstVisibleItem);
-        } else if (mVerticalSpacing < 0) {
-            newHeaderId = mAdapter.getHeaderId(firstVisibleItem);
-            View firstSecondRowView = getChildAt(mNumMeasuredColumns);
-            if (firstSecondRowView.getTop() <= 0) {
-                newHeaderId = mAdapter.getHeaderId(secondRowPosition);
-                selectedHeaderPosition = secondRowPosition;
-            } else {
-                newHeaderId = mAdapter.getHeaderId(firstVisibleItem);
-            }
-        } else {
-            int margin = getChildAt(0).getTop();
-            if (0 < margin && margin < mVerticalSpacing) {
-                newHeaderId = mAdapter.getHeaderId(beforeRowPosition);
-                selectedHeaderPosition = beforeRowPosition;
-            } else {
-                newHeaderId = mAdapter.getHeaderId(firstVisibleItem);
-            }
-        }
-
-        if (mCurrentHeaderId != newHeaderId) {
-            swapStickiedHeader(mAdapter
-                    .getHeaderView(selectedHeaderPosition, mStickiedHeader, this));
-            measureHeader();
-            mCurrentHeaderId = newHeaderId;
-        }
-
-        final int childCount = getChildCount();
-        if (childCount != 0) {
-            View viewToWatch = null;
-            int watchingChildDistance = 99999;
-
-            // Find the next header after the stickied one.
-            for (int i = 0; i < childCount; i += mNumMeasuredColumns) {
-                View child = super.getChildAt(i);
-
-                int childDistance;
-                if (mClippingToPadding) {
-                    childDistance = child.getTop() - getPaddingTop();
-                } else {
-                    childDistance = child.getTop();
-                }
-
-                if (childDistance < 0) {
-                    continue;
-                }
-
-                if (mAdapter.getItemId(getPositionForView(child)) == StickyGridHeadersBaseAdapterWrapper.ID_HEADER
-                        && childDistance < watchingChildDistance) {
-                    viewToWatch = child;
-                    watchingChildDistance = childDistance;
-                }
-            }
-
-            int headerHeight = getHeaderHeight();
-
-            // Work out where to draw stickied header using synchronised
-            // scrolling.
-            if (viewToWatch != null) {
-                if (firstVisibleItem == 0 && super.getChildAt(0).getTop() > 0
-                        && !mClippingToPadding) {
-                    mHeaderBottomPosition = 0;
-                } else {
-                    if (mClippingToPadding) {
-                        mHeaderBottomPosition = Math.min(viewToWatch.getTop(), headerHeight
-                                + getPaddingTop());
-                        mHeaderBottomPosition = mHeaderBottomPosition < getPaddingTop() ? headerHeight
-                                + getPaddingTop()
-                                : mHeaderBottomPosition;
-                    } else {
-                        mHeaderBottomPosition = Math.min(viewToWatch.getTop(), headerHeight);
-                        mHeaderBottomPosition = mHeaderBottomPosition < 0 ? headerHeight
-                                : mHeaderBottomPosition;
-                    }
-                }
-            } else {
-                mHeaderBottomPosition = headerHeight;
-                if (mClippingToPadding) {
-                    mHeaderBottomPosition += getPaddingTop();
-                }
-            }
-        }
-    }
-
-    private void swapStickiedHeader(View newStickiedHeader) {
-        detachHeader(mStickiedHeader);
-        attachHeader(newStickiedHeader);
-        mStickiedHeader = newStickiedHeader;
-    }
-
-    private MotionEvent transformEvent(MotionEvent e, int headerPosition) {
-        if (headerPosition == MATCHED_STICKIED_HEADER) {
-            return e;
-        }
-
-        long downTime = e.getDownTime();
-        long eventTime = e.getEventTime();
-        int action = e.getAction();
-        int pointerCount = e.getPointerCount();
-        int[] pointerIds = getPointerIds(e);
-        MotionEvent.PointerCoords[] pointerCoords = getPointerCoords(e);
-        int metaState = e.getMetaState();
-        float xPrecision = e.getXPrecision();
-        float yPrecision = e.getYPrecision();
-        int deviceId = e.getDeviceId();
-        int edgeFlags = e.getEdgeFlags();
-        int source = e.getSource();
-        int flags = e.getFlags();
-
-        View headerHolder = getChildAt(headerPosition);
-        for (int i = 0; i < pointerCount;i++) {
-            pointerCoords[i].y -= headerHolder.getTop();
-        }
-        MotionEvent n = MotionEvent.obtain(downTime, eventTime, action,
-                pointerCount, pointerIds, pointerCoords, metaState, xPrecision,
-                yPrecision, deviceId, edgeFlags, source, flags);
-        return n;
-    }
-
-    @Override
-    protected void dispatchDraw(Canvas canvas) {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) {
-            scrollChanged(getFirstVisiblePosition());
-        }
-
-        boolean drawStickiedHeader = mStickiedHeader != null && mAreHeadersSticky
-                && mStickiedHeader.getVisibility() == View.VISIBLE;
-        int headerHeight = getHeaderHeight();
-        int top = mHeaderBottomPosition - headerHeight;
-
-        // Mask the region where we will draw the header later, but only if we
-        // will draw a header and masking is requested.
-        if (drawStickiedHeader && mMaskStickyHeaderRegion) {
-            if (mHeadersIgnorePadding) {
-                mClippingRect.left = 0;
-                mClippingRect.right = getWidth();
-            } else {
-                mClippingRect.left = getPaddingLeft();
-                mClippingRect.right = getWidth() - getPaddingRight();
-            }
-            mClippingRect.top = mHeaderBottomPosition;
-            mClippingRect.bottom = getHeight();
-
-            canvas.save();
-            canvas.clipRect(mClippingRect);
-        }
-
-        // ...and draw the grid view.
-        super.dispatchDraw(canvas);
-
-        // Find headers.
-        List<Integer> headerPositions = new ArrayList<Integer>();
-        int vi = 0;
-        for (int i = getFirstVisiblePosition(); i <= getLastVisiblePosition();) {
-            long id = getItemIdAtPosition(i);
-            if (id == StickyGridHeadersBaseAdapterWrapper.ID_HEADER) {
-                headerPositions.add(vi);
-            }
-            i += mNumMeasuredColumns;
-            vi += mNumMeasuredColumns;
-        }
-
-        // Draw headers in list.
-        for (int i = 0; i < headerPositions.size(); i++) {
-            View frame = getChildAt(headerPositions.get(i));
-            View header;
-            try {
-                header = (View)frame.getTag();
-            } catch (Exception e) {
-                return;
-            }
-
-            boolean headerIsStickied = ((StickyGridHeadersBaseAdapterWrapper.HeaderFillerView)frame).getHeaderId() == mCurrentHeaderId
-                    && frame.getTop() < 0 && mAreHeadersSticky;
-            if (header.getVisibility() != View.VISIBLE || headerIsStickied) {
-                continue;
-            }
-
-            int widthMeasureSpec;
-            if (mHeadersIgnorePadding) {
-                widthMeasureSpec = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY);
-            } else {
-                widthMeasureSpec = MeasureSpec.makeMeasureSpec(getWidth() - getPaddingLeft()
-                        - getPaddingRight(), MeasureSpec.EXACTLY);
-            }
-
-            int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
-            header.measure(MeasureSpec.makeMeasureSpec(0,0),MeasureSpec.makeMeasureSpec(0,0));
-            header.measure(widthMeasureSpec, heightMeasureSpec);
-
-            if (mHeadersIgnorePadding) {
-                header.layout(getLeft(), 0, getRight(), frame.getHeight());
-            } else {
-                header.layout(getLeft() + getPaddingLeft(), 0, getRight() - getPaddingRight(),
-                        frame.getHeight());
-            }
-
-            if (mHeadersIgnorePadding) {
-                mClippingRect.left = 0;
-                mClippingRect.right = getWidth();
-            } else {
-                mClippingRect.left = getPaddingLeft();
-                mClippingRect.right = getWidth() - getPaddingRight();
-            }
-
-            mClippingRect.bottom = frame.getBottom();
-            mClippingRect.top = frame.getTop();
-            canvas.save();
-            canvas.clipRect(mClippingRect);
-            if (mHeadersIgnorePadding) {
-                canvas.translate(0, frame.getTop());
-            } else {
-                canvas.translate(getPaddingLeft(), frame.getTop());
-            }
-            header.draw(canvas);
-            canvas.restore();
-        }
-
-        if (drawStickiedHeader && mMaskStickyHeaderRegion) {
-            canvas.restore();
-        } else if (!drawStickiedHeader) {
-            // Done.
-            return;
-        }
-
-        // Draw stickied header.
-        int wantedWidth;
-        if (mHeadersIgnorePadding) {
-            wantedWidth = getWidth();
-        } else {
-            wantedWidth = getWidth() - getPaddingLeft() - getPaddingRight();
-        }
-        if (mStickiedHeader.getWidth() != wantedWidth) {
-            int widthMeasureSpec;
-            if (mHeadersIgnorePadding) {
-                widthMeasureSpec = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY);
-            } else {
-                widthMeasureSpec = MeasureSpec.makeMeasureSpec(getWidth() - getPaddingLeft()
-                        - getPaddingRight(), MeasureSpec.EXACTLY); // Bug here
-            }
-            int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
-            mStickiedHeader.measure(MeasureSpec.makeMeasureSpec(0,0),MeasureSpec.makeMeasureSpec(0,0));
-            mStickiedHeader.measure(widthMeasureSpec, heightMeasureSpec);
-            if (mHeadersIgnorePadding) {
-                mStickiedHeader.layout(getLeft(), 0, getRight(), mStickiedHeader.getHeight());
-            } else {
-                mStickiedHeader.layout(getLeft() + getPaddingLeft(), 0, getRight()
-                        - getPaddingRight(), mStickiedHeader.getHeight());
-            }
-        }
-
-        if (mHeadersIgnorePadding) {
-            mClippingRect.left = 0;
-            mClippingRect.right = getWidth();
-        } else {
-            mClippingRect.left = getPaddingLeft();
-            mClippingRect.right = getWidth() - getPaddingRight();
-        }
-        mClippingRect.bottom = top + headerHeight;
-        if (mClippingToPadding) {
-            mClippingRect.top = getPaddingTop();
-        } else {
-            mClippingRect.top = 0;
-        }
-
-        canvas.save();
-        canvas.clipRect(mClippingRect);
-
-        if (mHeadersIgnorePadding) {
-            canvas.translate(0, top);
-        } else {
-            canvas.translate(getPaddingLeft(), top);
-        }
-
-        if (mHeaderBottomPosition != headerHeight) {
-            canvas.saveLayerAlpha(0, 0, canvas.getWidth(), canvas.getHeight(), 255
-                    * mHeaderBottomPosition / headerHeight, Canvas.ALL_SAVE_FLAG);
-        }
-
-        mStickiedHeader.draw(canvas);
-
-        if (mHeaderBottomPosition != headerHeight) {
-            canvas.restore();
-        }
-        canvas.restore();
-    }
-
-    @Override
-    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        if (mNumColumns == AUTO_FIT) {
-            int numFittedColumns;
-            if (mColumnWidth > 0) {
-                int gridWidth = Math.max(MeasureSpec.getSize(widthMeasureSpec) - getPaddingLeft()
-                        - getPaddingRight(), 0);
-                numFittedColumns = gridWidth / mColumnWidth;
-                // Calculate measured columns accounting for requested grid
-                // spacing.
-                if (numFittedColumns > 0) {
-                    while (numFittedColumns != 1) {
-                        if (numFittedColumns * mColumnWidth + (numFittedColumns - 1)
-                                * mHorizontalSpacing > gridWidth) {
-                            numFittedColumns--;
-                        } else {
-                            break;
-                        }
-                    }
-                } else {
-                    // Could not fit any columns in grid width, so default to a
-                    // single column.
-                    numFittedColumns = 1;
-                }
-            } else {
-                // Mimic vanilla GridView behaviour where there is not enough
-                // information to auto-fit columns.
-                numFittedColumns = 2;
-            }
-            mNumMeasuredColumns = numFittedColumns;
-        } else {
-            // There were some number of columns requested so we will try to
-            // fulfil the request.
-            mNumMeasuredColumns = mNumColumns;
-        }
-
-        // Update adapter with number of columns.
-        if (mAdapter != null) {
-            mAdapter.setNumColumns(mNumMeasuredColumns);
-        }
-
-        measureHeader();
-
-        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-    }
-
-    void attachHeader(View header) {
-        if (header == null) {
-            return;
-        }
-
-        try {
-            Field attachInfoField = View.class.getDeclaredField("mAttachInfo");
-            attachInfoField.setAccessible(true);
-            Method method = View.class.getDeclaredMethod("dispatchAttachedToWindow",
-                    Class.forName("android.view.View$AttachInfo"), Integer.TYPE);
-            method.setAccessible(true);
-            method.invoke(header, attachInfoField.get(this), View.GONE);
-        } catch (NoSuchMethodException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (ClassNotFoundException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (IllegalArgumentException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (IllegalAccessException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (InvocationTargetException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (NoSuchFieldException e) {
-            throw new RuntimePlatformSupportException(e);
-        }
-    }
-
-    void detachHeader(View header) {
-        if (header == null) {
-            return;
-        }
-
-        try {
-            Method method = View.class.getDeclaredMethod("dispatchDetachedFromWindow");
-            method.setAccessible(true);
-            method.invoke(header);
-        } catch (NoSuchMethodException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (IllegalArgumentException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (IllegalAccessException e) {
-            throw new RuntimePlatformSupportException(e);
-        } catch (InvocationTargetException e) {
-            throw new RuntimePlatformSupportException(e);
-        }
-    }
-
-    public interface OnHeaderClickListener {
-        void onHeaderClick(AdapterView<?> parent, View view, long id);
-    }
-
-    public interface OnHeaderLongClickListener {
-        boolean onHeaderLongClick(AdapterView<?> parent, View view, long id);
-    }
-
-    private class CheckForHeaderLongPress extends WindowRunnable implements Runnable {
-        @Override
-        public void run() {
-            final View child = getHeaderAt(mMotionHeaderPosition);
-            if (child != null) {
-                final long longPressId = headerViewPositionToId(mMotionHeaderPosition);
-
-                boolean handled = false;
-                if (sameWindow() && !mDataChanged) {
-                    handled = performHeaderLongPress(child, longPressId);
-                }
-                if (handled) {
-                    mTouchMode = TOUCH_MODE_FINISHED_LONG_PRESS;
-                    setPressed(false);
-                    child.setPressed(false);
-                } else {
-                    mTouchMode = TOUCH_MODE_DONE_WAITING;
-                }
-            }
-        }
-    }
-
-    private class PerformHeaderClick extends WindowRunnable implements Runnable {
-        int mClickMotionPosition;
-
-        @Override
-        public void run() {
-            // The data has changed since we posted this action to the event
-            // queue, bail out before bad things happen.
-            if (mDataChanged)
-                return;
-
-            if (mAdapter != null && mAdapter.getCount() > 0
-                    && mClickMotionPosition != INVALID_POSITION
-                    && mClickMotionPosition < mAdapter.getCount() && sameWindow()) {
-                final View view = getHeaderAt(mClickMotionPosition);
-                // If there is no view then something bad happened, the view
-                // probably scrolled off the screen, and we should cancel the
-                // click.
-                if (view != null) {
-                    performHeaderClick(view, headerViewPositionToId(mClickMotionPosition));
-                }
-            }
-        }
-    }
-
-    /**
-     * A base class for Runnables that will check that their view is still
-     * attached to the original window as when the Runnable was created.
-     */
-    private class WindowRunnable {
-        private int mOriginalAttachCount;
-
-        public void rememberWindowAttachCount() {
-            mOriginalAttachCount = getWindowAttachCount();
-        }
-
-        public boolean sameWindow() {
-            return hasWindowFocus() && getWindowAttachCount() == mOriginalAttachCount;
-        }
-    }
-
-    final class CheckForHeaderTap implements Runnable {
-        @Override
-        public void run() {
-            if (mTouchMode == TOUCH_MODE_DOWN) {
-                mTouchMode = TOUCH_MODE_TAP;
-                final View header = getHeaderAt(mMotionHeaderPosition);
-                if (header != null && !mHeaderChildBeingPressed) {
-                    if (!mDataChanged) {
-                        header.setPressed(true);
-                        setPressed(true);
-                        refreshDrawableState();
-
-                        final int longPressTimeout = ViewConfiguration.getLongPressTimeout();
-                        final boolean longClickable = isLongClickable();
-
-                        if (longClickable) {
-                            if (mPendingCheckForLongPress == null) {
-                                mPendingCheckForLongPress = new CheckForHeaderLongPress();
-                            }
-                            mPendingCheckForLongPress.rememberWindowAttachCount();
-                            postDelayed(mPendingCheckForLongPress, longPressTimeout);
-                        } else {
-                            mTouchMode = TOUCH_MODE_DONE_WAITING;
-                        }
-                    } else {
-                        mTouchMode = TOUCH_MODE_DONE_WAITING;
-                    }
-                }
-            }
-        }
-    }
-
-    class RuntimePlatformSupportException extends RuntimeException {
-        private static final long serialVersionUID = -6512098808936536538L;
-
-        public RuntimePlatformSupportException(Exception e) {
-            super(ERROR_PLATFORM, e);
-        }
-    }
-
-    /**
-     * Constructor called from {@link #CREATOR}
-     */
-    static class SavedState extends BaseSavedState {
-        public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {
-            @Override
-            public SavedState createFromParcel(Parcel in) {
-                return new SavedState(in);
-            }
-
-            @Override
-            public SavedState[] newArray(int size) {
-                return new SavedState[size];
-            }
-        };
-
-        boolean areHeadersSticky;
-
-        public SavedState(Parcelable superState) {
-            super(superState);
-        }
-
-        /**
-         * Constructor called from {@link #CREATOR}
-         */
-        private SavedState(Parcel in) {
-            super(in);
-            areHeadersSticky = in.readByte() != 0;
-        }
-
-        @Override
-        public String toString() {
-            return "StickyGridHeadersGridView.SavedState{"
-                    + Integer.toHexString(System.identityHashCode(this)) + " areHeadersSticky="
-                    + areHeadersSticky + "}";
-        }
-
-        @Override
-        public void writeToParcel(Parcel out, int flags) {
-            super.writeToParcel(out, flags);
-            out.writeByte((byte)(areHeadersSticky ? 1 : 0));
-        }
-    }
-}

+ 0 - 89
o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersListAdapterWrapper.java

@@ -1,89 +0,0 @@
-
-package jiguang.chat.activity.historyfile.grideviewheader;
-
-import android.database.DataSetObserver;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ListAdapter;
-
-public class StickyGridHeadersListAdapterWrapper extends BaseAdapter implements
-        StickyGridHeadersBaseAdapter {
-    private DataSetObserver mDataSetObserver = new DataSetObserver() {
-        @Override
-        public void onChanged() {
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public void onInvalidated() {
-            notifyDataSetInvalidated();
-        }
-    };
-
-    private ListAdapter mDelegate;
-
-    public StickyGridHeadersListAdapterWrapper(ListAdapter adapter) {
-        mDelegate = adapter;
-        if (adapter != null) {
-            adapter.registerDataSetObserver(mDataSetObserver);
-        }
-    }
-
-    @Override
-    public int getCount() {
-        if (mDelegate == null) {
-            return 0;
-        }
-        return mDelegate.getCount();
-    }
-
-    @Override
-    public int getCountForHeader(int header) {
-        return 0;
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        return null;
-    }
-
-    @Override
-    public Object getItem(int position) {
-        if (mDelegate == null) {
-            return null;
-        }
-        return mDelegate.getItem(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return mDelegate.getItemId(position);
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return mDelegate.getItemViewType(position);
-    }
-
-    @Override
-    public int getNumHeaders() {
-        return 0;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        return mDelegate.getView(position, convertView, parent);
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return mDelegate.getViewTypeCount();
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return mDelegate.hasStableIds();
-    }
-
-}

+ 0 - 60
o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersSimpleAdapter.java

@@ -1,60 +0,0 @@
-/*
- Copyright 2013 Tonic Artos
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-package jiguang.chat.activity.historyfile.grideviewheader;
-
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListAdapter;
-
-/**
- * Adapter interface for StickyGridHeadersGridView. The adapter expects two sets
- * of data, items, and headers. Implement this interface to provide an optimised
- * method for generating the header data set.
- * 
- * The is a second interface
- *
- */
-public interface StickyGridHeadersSimpleAdapter extends ListAdapter {
-    /**
-     * Get the header id associated with the specified position in the list.
-     * 
-     * @param position
-     *            The position of the item within the adapter's data set whose
-     *            header id we want.
-     * @return The id of the header at the specified position.
-     */
-    long getHeaderId(int position);
-
-    /**
-     * Get a View that displays the header data at the specified position in the
-     * set. You can either create a View manually or inflate it from an XML
-     * layout file.
-     * 
-     * @param position
-     *            The position of the header within the adapter's header data
-     *            set.
-     * @param convertView
-     *            The old view to reuse, if possible. Note: You should check
-     *            that this view is non-null and of an appropriate type before
-     *            using. If it is not possible to convert this view to display
-     *            the correct data, this method can create a new view.
-     * @param parent
-     *            The parent that this view will eventually be attached to.
-     * @return A View corresponding to the data at the specified position.
-     */
-    View getHeaderView(int position, View convertView, ViewGroup parent);
-}

+ 0 - 145
o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersSimpleAdapterWrapper.java

@@ -1,145 +0,0 @@
-/*
- Copyright 2013 Tonic Artos
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-package jiguang.chat.activity.historyfile.grideviewheader;
-
-import android.database.DataSetObserver;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class StickyGridHeadersSimpleAdapterWrapper extends BaseAdapter implements
-        StickyGridHeadersBaseAdapter {
-    private StickyGridHeadersSimpleAdapter mDelegate;
-
-    private HeaderData[] mHeaders;
-
-    public StickyGridHeadersSimpleAdapterWrapper(StickyGridHeadersSimpleAdapter adapter) {
-        mDelegate = adapter;
-        adapter.registerDataSetObserver(new DataSetObserverExtension());
-        mHeaders = generateHeaderList(adapter);
-    }
-
-    @Override
-    public int getCount() {
-        return mDelegate.getCount();
-    }
-
-    @Override
-    public int getCountForHeader(int position) {
-        return mHeaders[position].getCount();
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        return mDelegate.getHeaderView(mHeaders[position].getRefPosition(), convertView, parent);
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mDelegate.getItem(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return mDelegate.getItemId(position);
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return mDelegate.getItemViewType(position);
-    }
-
-    @Override
-    public int getNumHeaders() {
-        return mHeaders.length;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        return mDelegate.getView(position, convertView, parent);
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return mDelegate.getViewTypeCount();
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return mDelegate.hasStableIds();
-    }
-
-    protected HeaderData[] generateHeaderList(StickyGridHeadersSimpleAdapter adapter) {
-        Map<Long, HeaderData> mapping = new HashMap<Long, HeaderData>();
-        List<HeaderData> headers = new ArrayList<HeaderData>();
-
-        for (int i = 0; i < adapter.getCount(); i++) {
-            long headerId = adapter.getHeaderId(i);
-            HeaderData headerData = mapping.get(headerId);
-            if (headerData == null) {
-                headerData = new HeaderData(i);
-                headers.add(headerData);
-            }
-            headerData.incrementCount();
-            mapping.put(headerId, headerData);
-        }
-
-        return headers.toArray(new HeaderData[headers.size()]);
-    }
-
-    private final class DataSetObserverExtension extends DataSetObserver {
-        @Override
-        public void onChanged() {
-            mHeaders = generateHeaderList(mDelegate);
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public void onInvalidated() {
-            mHeaders = generateHeaderList(mDelegate);
-            notifyDataSetInvalidated();
-        }
-    }
-
-    private class HeaderData {
-        private int mCount;
-
-        private int mRefPosition;
-
-        public HeaderData(int refPosition) {
-            mRefPosition = refPosition;
-            mCount = 0;
-        }
-
-        public int getCount() {
-            return mCount;
-        }
-
-        public int getRefPosition() {
-            return mRefPosition;
-        }
-
-        public void incrementCount() {
-            mCount++;
-        }
-    }
-}

+ 0 - 148
o2android/app/src/main/java/jiguang/chat/activity/historyfile/grideviewheader/StickyGridHeadersSimpleArrayAdapter.java

@@ -1,148 +0,0 @@
-/*
- Copyright 2013 Tonic Artos
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-package jiguang.chat.activity.historyfile.grideviewheader;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.TextView;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class StickyGridHeadersSimpleArrayAdapter<T> extends BaseAdapter implements
-        StickyGridHeadersSimpleAdapter {
-    protected static final String TAG = StickyGridHeadersSimpleArrayAdapter.class.getSimpleName();
-
-    private int mHeaderResId;
-
-    private LayoutInflater mInflater;
-
-    private int mItemResId;
-
-    private List<T> mItems;
-
-    public StickyGridHeadersSimpleArrayAdapter(Context context, List<T> items, int headerResId,
-            int itemResId) {
-        init(context, items, headerResId, itemResId);
-    }
-
-    public StickyGridHeadersSimpleArrayAdapter(Context context, T[] items, int headerResId,
-            int itemResId) {
-        init(context, Arrays.asList(items), headerResId, itemResId);
-    }
-
-    @Override
-    public boolean areAllItemsEnabled() {
-        return false;
-    }
-
-    @Override
-    public int getCount() {
-        return mItems.size();
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        T item = getItem(position);
-        CharSequence value;
-        if (item instanceof CharSequence) {
-            value = (CharSequence)item;
-        } else {
-            value = item.toString();
-        }
-
-        return value.subSequence(0, 1).charAt(0);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        HeaderViewHolder holder;
-        if (convertView == null) {
-            convertView = mInflater.inflate(mHeaderResId, parent, false);
-            holder = new HeaderViewHolder();
-            holder.textView = (TextView)convertView.findViewById(android.R.id.text1);
-            convertView.setTag(holder);
-        } else {
-            holder = (HeaderViewHolder)convertView.getTag();
-        }
-
-        T item = getItem(position);
-        CharSequence string;
-        if (item instanceof CharSequence) {
-            string = (CharSequence)item;
-        } else {
-            string = item.toString();
-        }
-
-        // set header text as first char in string
-        holder.textView.setText(string.subSequence(0, 1));
-
-        return convertView;
-    }
-
-    @Override
-    public T getItem(int position) {
-        return mItems.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public View getView(int position, View convertView, ViewGroup parent) {
-        ViewHolder holder;
-        if (convertView == null) {
-            convertView = mInflater.inflate(mItemResId, parent, false);
-            holder = new ViewHolder();
-            holder.textView = (TextView)convertView.findViewById(android.R.id.text1);
-            convertView.setTag(holder);
-        } else {
-            holder = (ViewHolder)convertView.getTag();
-        }
-
-        T item = getItem(position);
-        if (item instanceof CharSequence) {
-            holder.textView.setText((CharSequence)item);
-        } else {
-            holder.textView.setText(item.toString());
-        }
-
-        return convertView;
-    }
-
-    private void init(Context context, List<T> items, int headerResId, int itemResId) {
-        this.mItems = items;
-        this.mHeaderResId = headerResId;
-        this.mItemResId = itemResId;
-        mInflater = LayoutInflater.from(context);
-    }
-
-    protected class HeaderViewHolder {
-        public TextView textView;
-    }
-
-    protected class ViewHolder {
-        public TextView textView;
-    }
-}

+ 0 - 123
o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/HistoryFileView.java

@@ -1,123 +0,0 @@
-package jiguang.chat.activity.historyfile.view;
-
-import android.content.Context;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.utils.SharePreferenceManager;
-import jiguang.chat.view.ScrollControlViewPager;
-
-/**
- * Created by ${chenyn} on 2017/8/24.
- */
-
-public class HistoryFileView extends RelativeLayout {
-    private ScrollControlViewPager mViewContainer;
-    private ImageButton mReturnBtn;
-    private Button[] mBtnArray;
-    private int[] mBtnIdArray;
-    private ImageView[] mIVArray;
-    private int[] mIVIdArray;
-    private Context mContext;
-    private Button mDeleteBtn;
-    private TextView mSelectSize;
-    private RelativeLayout mDeleteFileRl;
-    private TextView mTv_choose;
-
-    public HistoryFileView(Context context) {
-        super(context);
-        this.mContext = context;
-    }
-
-    public HistoryFileView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        this.mContext = context;
-    }
-
-    public void initModule() {
-        mReturnBtn = (ImageButton) findViewById(R.id.return_btn);
-        mViewContainer = (ScrollControlViewPager) findViewById(R.id.viewpager);
-        mDeleteFileRl = (RelativeLayout) findViewById(R.id.delete_file_rl);
-        mTv_choose = (TextView) findViewById(R.id.tv_choose);
-
-        mBtnIdArray = new int[] {R.id.actionbar_album_btn, R.id.actionbar_file_btn,
-                R.id.actionbar_video_btn, R.id.actionbar_audio_btn, R.id.actionbar_other_btn};
-        mIVIdArray = new int[] {R.id.slipping_1, R.id.slipping_2, R.id.slipping_3,
-                R.id.slipping_4, R.id.slipping_5};
-        mBtnArray = new Button[mBtnIdArray.length];
-        mIVArray = new ImageView[mBtnIdArray.length];
-        for (int i = 0; i < mBtnIdArray.length; i++) {
-            mBtnArray[i] = (Button) findViewById(mBtnIdArray[i]);
-            mIVArray[i] = (ImageView) findViewById(mIVIdArray[i]);
-        }
-        mIVArray[0].setVisibility(VISIBLE);
-        mBtnArray[0].setTextColor(getResources().getColor(R.color.send_file_action_bar_selected));
-        mDeleteBtn = (Button) findViewById(R.id.delete_file_btn);
-        mSelectSize = (TextView) findViewById(R.id.size_desc);
-    }
-
-    public void setOnClickListener(View.OnClickListener listener) {
-        mReturnBtn.setOnClickListener(listener);
-        mDeleteBtn.setOnClickListener(listener);
-        mTv_choose.setOnClickListener(listener);
-        for (int i = 0; i < mBtnIdArray.length; i++) {
-            mBtnArray[i].setOnClickListener(listener);
-        }
-    }
-
-    public void setOnPageChangeListener(ViewPager.OnPageChangeListener onPageChangeListener) {
-        mViewContainer.addOnPageChangeListener(onPageChangeListener);
-    }
-
-    public void setViewPagerAdapter(FragmentPagerAdapter adapter) {
-        mViewContainer.setAdapter(adapter);
-    }
-
-    public void setCurrentItem(int index) {
-        mViewContainer.setCurrentItem(index);
-        for (int i = 0; i < mBtnIdArray.length; i++) {
-            if (i == index) {
-                mIVArray[i].setVisibility(VISIBLE);
-                mBtnArray[i].setTextColor(getResources().getColor(R.color.send_file_action_bar_selected));
-            } else {
-                mIVArray[i].setVisibility(INVISIBLE);
-                mBtnArray[i].setTextColor(getResources().getColor(R.color.send_file_action_bar));
-            }
-        }
-    }
-
-
-    public void setScroll(boolean isScroll) {
-        mViewContainer.setScroll(isScroll);
-    }
-
-    public void updateSelectedState(int selectedNum) {
-        String sendStr;
-        if (selectedNum != 0) {
-            sendStr = mContext.getString(R.string.already_select) + "(" + selectedNum + ")";
-        } else {
-            sendStr = mContext.getString(R.string.already_select);
-        }
-        mSelectSize.setText(sendStr);
-    }
-
-    public void setDeleteRl() {
-        if (mTv_choose.getText().equals("选择")) {
-            SharePreferenceManager.setShowCheck(true);
-            mTv_choose.setText("取消");
-            mDeleteFileRl.setVisibility(VISIBLE);
-        }else {
-            SharePreferenceManager.setShowCheck(false);
-            mTv_choose.setText("选择");
-            mDeleteFileRl.setVisibility(GONE);
-        }
-    }
-}

+ 0 - 35
o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/MImageView.java

@@ -1,35 +0,0 @@
-package jiguang.chat.activity.historyfile.view;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.ImageView;
-
-public class MImageView extends ImageView {
-	private OnMeasureListener onMeasureListener;
-	
-	public void setOnMeasureListener(OnMeasureListener onMeasureListener) {
-		this.onMeasureListener = onMeasureListener;
-	}
-
-	public MImageView(Context context, AttributeSet attrs) {
-		super(context, attrs);
-	}
-
-	public MImageView(Context context, AttributeSet attrs, int defStyle) {
-		super(context, attrs, defStyle);
-	}
-
-	@Override
-	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-		
-		if(onMeasureListener != null){
-			onMeasureListener.onMeasureSize(getMeasuredWidth(), getMeasuredHeight());
-		}
-	}
-
-	public interface OnMeasureListener{
-		public void onMeasureSize(int width, int height);
-	}
-	
-}

+ 0 - 136
o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/NativeImageLoaderView.java

@@ -1,136 +0,0 @@
-package jiguang.chat.activity.historyfile.view;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Point;
-import android.os.Handler;
-import android.os.Message;
-import android.support.v4.util.LruCache;
-import android.util.Log;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-
-public class NativeImageLoaderView {
-	private static final String TAG = NativeImageLoaderView.class.getSimpleName();
-	private static NativeImageLoaderView mInstance = new NativeImageLoaderView();
-	private static LruCache<String, Bitmap> mMemoryCache;
-	private ExecutorService mImageThreadPool = Executors.newFixedThreadPool(1);
-
-	private NativeImageLoaderView(){
-		final int maxMemory = (int) (Runtime.getRuntime().maxMemory());
-
-		final int cacheSize = maxMemory / 4;
-		mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
-			
-			@Override
-			protected int sizeOf(String key, Bitmap bitmap) {
-				return bitmap.getRowBytes() * bitmap.getHeight();
-			}
-		};
-	}
-
-	public static NativeImageLoaderView getInstance(){
-		return mInstance;
-	}
-	
-	
-
-	public Bitmap loadNativeImage(final String path, final NativeImageCallBack mCallBack){
-		return this.loadNativeImage(path, null, mCallBack);
-	}
-	
-
-	public Bitmap loadNativeImage(final String path, final Point mPoint, final NativeImageCallBack mCallBack){
-		Bitmap bitmap = getBitmapFromMemCache(path);
-		
-		final Handler mHander = new Handler(){
-
-			@Override
-			public void handleMessage(Message msg) {
-				super.handleMessage(msg);
-				mCallBack.onImageLoader((Bitmap)msg.obj, path);
-			}
-			
-		};
-		
-		if(bitmap == null){
-			mImageThreadPool.execute(new Runnable() {
-				
-				@Override
-				public void run() {
-					Bitmap mBitmap = decodeThumbBitmapForFile(path, mPoint == null ? 0: mPoint.x, mPoint == null ? 0: mPoint.y);
-					Message msg = mHander.obtainMessage();
-					msg.obj = mBitmap;
-					mHander.sendMessage(msg);
-					
-					addBitmapToMemoryCache(path, mBitmap);
-				}
-			});
-		}
-		return bitmap;
-		
-	}
-
-	
-	
-
-	private void addBitmapToMemoryCache(String key, Bitmap bitmap) {
-		if (getBitmapFromMemCache(key) == null && bitmap != null) {
-			mMemoryCache.put(key, bitmap);
-		}
-	}
-
-
-	private Bitmap getBitmapFromMemCache(String key) {
-		
-		Bitmap bitmap = mMemoryCache.get(key);
-		
-		if(bitmap != null){
-			Log.i(TAG, "get image for MemCache , path = " + key);
-		}
-		
-		return bitmap;
-	}
-	
-	
-
-	private Bitmap decodeThumbBitmapForFile(String path, int viewWidth, int viewHeight){
-		BitmapFactory.Options options = new BitmapFactory.Options();
-		options.inJustDecodeBounds = true;
-		BitmapFactory.decodeFile(path, options);
-		options.inSampleSize = computeScale(options, viewWidth, viewHeight);
-		
-		options.inJustDecodeBounds = false;
-		
-		
-		Log.e(TAG, "get Iamge form file,  path = " + path);
-		
-		return BitmapFactory.decodeFile(path, options);
-	}
-	
-	
-
-	private int computeScale(BitmapFactory.Options options, int viewWidth, int viewHeight){
-		int inSampleSize = 1;
-		if(viewWidth == 0 || viewWidth == 0){
-			return inSampleSize;
-		}
-		int bitmapWidth = options.outWidth;
-		int bitmapHeight = options.outHeight;
-		
-		if(bitmapWidth > viewWidth || bitmapHeight > viewWidth){
-			int widthScale = Math.round((float) bitmapWidth / (float) viewWidth);
-			int heightScale = Math.round((float) bitmapHeight / (float) viewWidth);
-			
-			inSampleSize = widthScale < heightScale ? widthScale : heightScale;
-		}
-		return inSampleSize;
-	}
-	
-
-	public interface NativeImageCallBack{
-
-		public void onImageLoader(Bitmap bitmap, String path);
-	}
-}

+ 0 - 15
o2android/app/src/main/java/jiguang/chat/activity/historyfile/view/YMComparator.java

@@ -1,15 +0,0 @@
-package jiguang.chat.activity.historyfile.view;
-
-
-import java.util.Comparator;
-
-import jiguang.chat.entity.FileItem;
-
-public class YMComparator implements Comparator<FileItem> {
-
-	@Override
-	public int compare(FileItem o1, FileItem o2) {
-		return o1.getDate().compareTo(o2.getDate());
-	}
-
-}

+ 0 - 89
o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/AlreadyReadAdapter.java

@@ -1,89 +0,0 @@
-package jiguang.chat.activity.receiptmessage;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.util.List;
-
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.application.JGApplication;
-
-/**
- * Created by ${chenyn} on 2017/9/6.
- */
-
-public class AlreadyReadAdapter extends BaseAdapter {
-    List<UserInfo> alreadyRead = JGApplication.alreadyRead;
-    private Context mContext;
-    private LayoutInflater mInflater;
-
-    public AlreadyReadAdapter(MessageAlreadyReadFragment context) {
-        this.mContext = context.getContext();
-        this.mInflater = LayoutInflater.from(mContext);
-    }
-
-    @Override
-    public int getCount() {
-        return alreadyRead.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return alreadyRead.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        final ViewHolder holder;
-        if (convertView == null) {
-            holder = new ViewHolder();
-            convertView = mInflater.inflate(R.layout.receipt_already_read, parent, false);
-            holder.iv_alreadyRead = (ImageView) convertView.findViewById(R.id.iv_alreadyRead);
-            holder.tv_alreadyRead = (TextView) convertView.findViewById(R.id.tv_alreadyRead);
-            convertView.setTag(holder);
-        } else {
-            holder = (ViewHolder) convertView.getTag();
-        }
-
-        UserInfo info = alreadyRead.get(position);
-        String displayName = info.getDisplayName();
-        File avatarFile = info.getAvatarFile();
-        if (avatarFile != null && avatarFile.exists()) {
-            holder.iv_alreadyRead.setImageBitmap(BitmapFactory.decodeFile(avatarFile.getAbsolutePath()));
-        } else {
-            info.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                @Override
-                public void gotResult(int i, String s, Bitmap bitmap) {
-                    if (i == 0) {
-                        holder.iv_alreadyRead.setImageBitmap(bitmap);
-                    } else {
-                        holder.iv_alreadyRead.setImageResource(R.drawable.jmui_head_icon);
-                    }
-                }
-            });
-        }
-        holder.tv_alreadyRead.setText(displayName);
-        return convertView;
-    }
-
-    public static class ViewHolder {
-        ImageView iv_alreadyRead;
-        TextView tv_alreadyRead;
-    }
-}

+ 0 - 85
o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/MessageAlreadyReadFragment.java

@@ -1,85 +0,0 @@
-package jiguang.chat.activity.receiptmessage;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ListView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.activity.FriendInfoActivity;
-import jiguang.chat.activity.GroupNotFriendActivity;
-import jiguang.chat.activity.fragment.BaseFragment;
-import jiguang.chat.application.JGApplication;
-
-/**
- * Created by ${chenyn} on 2017/9/5.
- */
-
-public class MessageAlreadyReadFragment extends BaseFragment {
-    private Activity mContext;
-    private View mRootView;
-    private ListView mReceipt_alreadyRead;
-    private AlreadyReadAdapter mAdapter;
-    private long mGroupId;
-
-    @SuppressLint("ValidFragment")
-    public MessageAlreadyReadFragment(long groupIdForReceipt) {
-        this.mGroupId = groupIdForReceipt;
-    }
-    public MessageAlreadyReadFragment() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-
-        initView();
-        initListViewClick();
-    }
-
-    private void initView() {
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.fragment_receipt_already_read,
-                (ViewGroup) mContext.findViewById(R.id.main_view), false);
-        mReceipt_alreadyRead = (ListView) mRootView.findViewById(R.id.receipt_alreadyRead);
-        mAdapter = new AlreadyReadAdapter(this);
-        mReceipt_alreadyRead.setAdapter(mAdapter);
-    }
-
-    private void initListViewClick() {
-        mReceipt_alreadyRead.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                UserInfo userInfo = (UserInfo) parent.getItemAtPosition(position);
-                Intent intent = new Intent();
-                if (userInfo.isFriend()) {
-                    intent.setClass(mContext, FriendInfoActivity.class);
-                }else {
-                    intent.setClass(mContext, GroupNotFriendActivity.class);
-                }
-                intent.putExtra(JGApplication.TARGET_ID, userInfo.getUserName());
-                intent.putExtra(JGApplication.TARGET_APP_KEY, userInfo.getAppKey());
-                intent.putExtra(JGApplication.GROUP_ID, mGroupId);
-                startActivity(intent);
-            }
-        });
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-}

+ 0 - 84
o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/MessageNotReadFragment.java

@@ -1,84 +0,0 @@
-package jiguang.chat.activity.receiptmessage;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ListView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.activity.FriendInfoActivity;
-import jiguang.chat.activity.GroupNotFriendActivity;
-import jiguang.chat.activity.fragment.BaseFragment;
-import jiguang.chat.application.JGApplication;
-
-/**
- * Created by ${chenyn} on 2017/9/5.
- */
-
-public class MessageNotReadFragment extends BaseFragment{
-    private Activity mContext;
-    private View mRootView;
-    private ListView mReceipt_noRead;
-    private NotReadAdapter mAdapter;
-    private long mGroupId;
-
-    @SuppressLint("ValidFragment")
-    public MessageNotReadFragment(long groupIdForReceipt) {
-        this.mGroupId = groupIdForReceipt;
-    }
-    public MessageNotReadFragment() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.mContext = getActivity();
-
-        initView();
-        initListViewClick();
-    }
-
-    private void initListViewClick() {
-        mReceipt_noRead.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                UserInfo userInfo = (UserInfo) parent.getItemAtPosition(position);
-                Intent intent = new Intent();
-                if (userInfo.isFriend()) {
-                    intent.setClass(mContext, FriendInfoActivity.class);
-                }else {
-                    intent.setClass(mContext, GroupNotFriendActivity.class);
-                }
-                intent.putExtra(JGApplication.TARGET_ID, userInfo.getUserName());
-                intent.putExtra(JGApplication.TARGET_APP_KEY, userInfo.getAppKey());
-                intent.putExtra(JGApplication.GROUP_ID, mGroupId);
-                startActivity(intent);
-            }
-        });
-    }
-
-    private void initView() {
-        mRootView = LayoutInflater.from(mContext).inflate(R.layout.fragment_receipt_no_read,
-                (ViewGroup) mContext.findViewById(R.id.main_view), false);
-        mReceipt_noRead = (ListView) mRootView.findViewById(R.id.receipt_noRead);
-        mAdapter = new NotReadAdapter(this);
-        mReceipt_noRead.setAdapter(mAdapter);
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        ViewGroup p = (ViewGroup) mRootView.getParent();
-        if (p != null) {
-            p.removeAllViewsInLayout();
-        }
-        return mRootView;
-    }
-}

+ 0 - 91
o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/NotReadAdapter.java

@@ -1,91 +0,0 @@
-package jiguang.chat.activity.receiptmessage;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.File;
-import java.util.List;
-
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.application.JGApplication;
-
-/**
- * Created by ${chenyn} on 2017/9/5.
- */
-
-public class NotReadAdapter extends BaseAdapter {
-
-    List<UserInfo> unRead = JGApplication.unRead;
-    private Context mContext;
-    private LayoutInflater mInflater;
-
-
-    public NotReadAdapter(MessageNotReadFragment context) {
-        this.mContext = context.getContext();
-        this.mInflater = LayoutInflater.from(mContext);
-    }
-
-    @Override
-    public int getCount() {
-        return unRead.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return unRead.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        final ViewHolder holder;
-        if (convertView == null) {
-            holder = new ViewHolder();
-            convertView = mInflater.inflate(R.layout.receipt_no_read, parent, false);
-            holder.iv_noRead = (ImageView) convertView.findViewById(R.id.iv_noRead);
-            holder.tv_noRead = (TextView) convertView.findViewById(R.id.tv_noRead);
-            convertView.setTag(holder);
-        } else {
-            holder = (ViewHolder) convertView.getTag();
-        }
-
-        UserInfo info = unRead.get(position);
-        String displayName = info.getDisplayName();
-        File avatarFile = info.getAvatarFile();
-        if (avatarFile != null && avatarFile.exists()) {
-            holder.iv_noRead.setImageBitmap(BitmapFactory.decodeFile(avatarFile.getAbsolutePath()));
-        } else {
-            info.getAvatarBitmap(new GetAvatarBitmapCallback() {
-                @Override
-                public void gotResult(int i, String s, Bitmap bitmap) {
-                    if (i == 0) {
-                        holder.iv_noRead.setImageBitmap(bitmap);
-                    } else {
-                        holder.iv_noRead.setImageResource(R.drawable.jmui_head_icon);
-                    }
-                }
-            });
-        }
-        holder.tv_noRead.setText(displayName);
-        return convertView;
-    }
-
-    public static class ViewHolder {
-        ImageView iv_noRead;
-        TextView tv_noRead;
-    }
-}

+ 0 - 130
o2android/app/src/main/java/jiguang/chat/activity/receiptmessage/ReceiptMessageListActivity.java

@@ -1,130 +0,0 @@
-package jiguang.chat.activity.receiptmessage;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.view.ViewPager;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import jiguang.chat.adapter.ViewPagerAdapter;
-
-/**
- * Created by ${chenyn} on 2017/9/5.
- */
-
-public class ReceiptMessageListActivity extends FragmentActivity implements ViewPager.OnPageChangeListener,
-        View.OnClickListener{
-
-    private MessageNotReadFragment mNoRead;
-    private MessageAlreadyReadFragment mAlreadyRead;
-    private ViewPager mReceipt_viewPager;
-    private ImageButton mReturnBtn;
-    private int[] mBtnIdArray;
-    private int[] mIVIdArray;
-    private TextView[] mTextViewArray;
-    private View[] mViewArray;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_receipt_message_list);
-
-        initView();
-        initFragment();
-    }
-
-    private void initView() {
-        mReturnBtn = (ImageButton) findViewById(R.id.return_btn);
-        mReceipt_viewPager = (ViewPager) findViewById(R.id.receipt_message);
-        //未读.已读
-        mBtnIdArray = new int[] {R.id.tv_noRead, R.id.tv_alreadyRead};
-        //下划线
-        mIVIdArray = new int[] {R.id.line_noRead, R.id.line_alreadyRead};
-
-        mTextViewArray = new TextView[mBtnIdArray.length];
-        mViewArray = new View[mBtnIdArray.length];
-
-        //拿到上面数组中的四个组件
-        for (int i = 0; i < mBtnIdArray.length; i++) {
-            mTextViewArray[i] = (TextView) findViewById(mBtnIdArray[i]);
-            mViewArray[i] = findViewById(mIVIdArray[i]);
-        }
-
-        //先设置显示未读的文字和下划线
-        mViewArray[0].setVisibility(View.VISIBLE);
-        mTextViewArray[0].setTextColor(getResources().getColor(R.color.send_file_action_bar_selected));
-
-        mTextViewArray[0].setText("未读(" + getIntent().getIntExtra("noReadCount", 0) + ")");
-        mTextViewArray[1].setText("已读(" + getIntent().getIntExtra("alreadyReadCount", 0) + ")");
-
-        mReturnBtn.setOnClickListener(this);
-        mReceipt_viewPager.addOnPageChangeListener(this);
-        //设置未读和已读响应点击事件
-        for (int i = 0; i < mBtnIdArray.length; i++) {
-            mTextViewArray[i].setOnClickListener(this);
-        }
-
-    }
-
-    private void initFragment() {
-        long groupIdForReceipt = getIntent().getLongExtra("groupIdForReceipt", 0);
-        List<Fragment> fragments = new ArrayList<>();
-        mNoRead = new MessageNotReadFragment(groupIdForReceipt);
-        mAlreadyRead = new MessageAlreadyReadFragment(groupIdForReceipt);
-
-        fragments.add(mNoRead);
-        fragments.add(mAlreadyRead);
-
-        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),
-                fragments);
-
-        mReceipt_viewPager.setAdapter(viewPagerAdapter);
-    }
-
-    @Override
-    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
-    }
-
-    @Override
-    public void onPageSelected(int position) {
-        mReceipt_viewPager.setCurrentItem(position);
-        for (int i = 0; i < mBtnIdArray.length; i++) {
-            if (i == position) {
-                mViewArray[i].setVisibility(View.VISIBLE);
-                mTextViewArray[i].setTextColor(getResources().getColor(R.color.send_file_action_bar_selected));
-            } else {
-                mViewArray[i].setVisibility(View.INVISIBLE);
-                mTextViewArray[i].setTextColor(getResources().getColor(R.color.send_file_action_bar));
-            }
-        }
-
-    }
-
-    @Override
-    public void onPageScrollStateChanged(int state) {
-    }
-
-    @Override
-    public void onClick(View v) {
-        int i = v.getId();
-        if (i == R.id.return_btn) {
-            finish();
-
-        } else if (i == R.id.tv_noRead) {
-            mReceipt_viewPager.setCurrentItem(0);
-
-        } else if (i == R.id.tv_alreadyRead) {
-            mReceipt_viewPager.setCurrentItem(1);
-
-        } else {
-        }
-    }
-}

+ 0 - 367
o2android/app/src/main/java/jiguang/chat/adapter/AllMembersAdapter.java

@@ -1,367 +0,0 @@
-package jiguang.chat.adapter;
-
-import android.app.Dialog;
-import android.content.Intent;
-import android.os.Handler;
-import android.util.Log;
-import android.util.SparseBooleanArray;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.GridView;
-import android.widget.HorizontalScrollView;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.bumptech.glide.Glide;
-import com.nineoldandroids.animation.AnimatorSet;
-import com.nineoldandroids.animation.ObjectAnimator;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.my.MyInfoActivity;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.person.PersonActivity;
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.APIAddressHelper;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import cn.jpush.im.android.api.JMessageClient;
-import cn.jpush.im.android.api.callback.GetUserInfoCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import cn.jpush.im.api.BasicCallback;
-import jiguang.chat.activity.MembersInChatActivity;
-import jiguang.chat.utils.DialogCreator;
-import jiguang.chat.utils.ToastUtil;
-import jiguang.chat.utils.ViewHolder;
-
-
-public class AllMembersAdapter extends BaseAdapter implements AdapterView.OnItemClickListener,
-        AdapterView.OnItemLongClickListener {
-
-    private MembersInChatActivity mContext;
-    private List<MembersInChatActivity.ItemModel> mMemberList = new ArrayList<>();
-    private boolean mIsDeleteMode;
-    private List<String> mSelectedList = new ArrayList<>();
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-    private Dialog mDialog;
-    private Dialog mLoadingDialog;
-    private boolean mIsCreator;
-    private long mGroupId;
-    private int mWidth;
-    private GridView mGridView;
-    private HorizontalScrollView mHorizontalScrollView;
-    private CreateGroupAdapter mGroupAdapter;
-    private Map<Long, String> map = new HashMap<>();
-    private TextView selectNum;
-
-    public AllMembersAdapter(MembersInChatActivity context, List<MembersInChatActivity.ItemModel> memberList, boolean isDeleteMode,
-                             boolean isCreator, long groupId, int width, HorizontalScrollView horizontalView,
-                             GridView imageSelectedGridView, CreateGroupAdapter groupAdapter) {
-        this.mContext = context;
-        this.mMemberList = memberList;
-        this.mIsDeleteMode = isDeleteMode;
-        this.mIsCreator = isCreator;
-        this.mGroupId = groupId;
-        this.mWidth = width;
-
-        this.mGridView = imageSelectedGridView;
-        this.mHorizontalScrollView = horizontalView;
-        this.mGroupAdapter = groupAdapter;
-        selectNum = (TextView) context.findViewById(R.id.tv_selNum);
-    }
-
-    @Override
-    public int getCount() {
-        return mMemberList.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return null;
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return 0;
-    }
-
-    @Override
-    public View getView(final int position, View convertView, ViewGroup parent) {
-        if (convertView == null) {
-            LayoutInflater inflater = LayoutInflater.from(mContext);
-            convertView = inflater.inflate(R.layout.item_all_member, null);
-        }
-        final ImageView icon = ViewHolder.get(convertView, R.id.icon_iv);
-        TextView displayName = ViewHolder.get(convertView, R.id.name);
-        final CheckBox checkBox = ViewHolder.get(convertView, R.id.check_box_cb);
-        final MembersInChatActivity.ItemModel itemModel = mMemberList.get(position);
-        final UserInfo userInfo = itemModel.data;
-        final long userID = userInfo.getUserID();
-        final String userName = userInfo.getUserName();
-        if (mIsDeleteMode) {
-            if (mIsCreator && userName.equals(JMessageClient.getMyInfo().getUserName())) {
-                checkBox.setVisibility(View.INVISIBLE);
-                mSelectedList.remove(userName);
-                map.remove(userID);
-            } else {
-                checkBox.setVisibility(View.VISIBLE);
-                checkBox.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        Log.i("AllMembersAdapter", "check:" + checkBox.isChecked() + ", userId:" + userID + ", userName:" + userName);
-                        if (checkBox.isChecked()) {
-                            mSelectedList.add(userInfo.getUserName());
-                            map.put(userID, userName);
-                            addAnimation(checkBox);
-                            if (mGroupAdapter != null) {
-                                mGroupAdapter.setContact(getSelectedUser());
-                                notifySelectAreaDataSetChanged();
-                            }
-                        } else {
-                            mSelectedList.remove(userInfo.getUserName());
-                            map.remove(userID);
-                            if (mGroupAdapter != null) {
-                                mGroupAdapter.setContact(getSelectedUser());
-                                notifySelectAreaDataSetChanged();
-                            }
-                        }
-
-                        if (map.size() > 0) {
-                            selectNum.setText("(" + map.size() + ")");
-                        } else {
-                            selectNum.setText("");
-                        }
-                    }
-                });
-            }
-
-            ArrayList<String> selectedUser = getSelectedUser();
-            if (selectedUser.size() > 0) {
-                if (selectedUser.contains(userName)) {
-                    checkBox.setChecked(true);
-                } else {
-                    checkBox.setChecked(false);
-                }
-            } else {
-                checkBox.setChecked(false);
-            }
-
-
-        } else {
-            checkBox.setVisibility(View.GONE);
-        }
-        if (mGridView != null) {
-            mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    ArrayList<String> selectedUser = getSelectedUser();
-                    JMessageClient.getUserInfo(selectedUser.get(position), new GetUserInfoCallback() {
-                        @Override
-                        public void gotResult(int responseCode, String responseMessage, UserInfo info) {
-                            if (responseCode == 0) {
-                                long uid = info.getUserID();
-                                map.remove(uid);
-                                if (mGroupAdapter != null) {
-                                    mGroupAdapter.setContact(getSelectedUser());
-                                    notifySelectAreaDataSetChanged();
-                                }
-                                notifyDataSetChanged();
-                            }
-                        }
-                    });
-                }
-            });
-        }
-
-        //        if (!TextUtils.isEmpty(userInfo.getAvatar())) {
-//            userInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-//                @Override
-//                public void gotResult(int status, String desc, Bitmap bitmap) {
-//                    if (status == 0) {
-//                        icon.setImageBitmap(bitmap);
-//                    } else {
-//                        icon.setImageResource(R.drawable.jmui_head_icon);
-//                    }
-//                }
-//            });
-//
-//        } else {
-//            icon.setImageResource(R.drawable.jmui_head_icon);
-//        }
-        String avatarUrl = APIAddressHelper.Companion.instance().getPersonAvatarUrlWithoutPermission(userInfo.getUserName(), false);
-        Glide.with(mContext)
-                .load(avatarUrl)
-                .dontAnimate()
-                .placeholder(R.drawable.jmui_head_icon)
-                .into(icon);
-        displayName.setText(itemModel.highlight);
-        return convertView;
-    }
-
-    /**
-     * 给CheckBox加点击动画,利用开源库nineoldandroids设置动画
-     */
-    private void addAnimation(View view) {
-        float[] vaules = new float[]{0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.25f, 1.2f, 1.15f, 1.1f, 1.0f};
-        AnimatorSet set = new AnimatorSet();
-        set.playTogether(ObjectAnimator.ofFloat(view, "scaleX", vaules),
-                ObjectAnimator.ofFloat(view, "scaleY", vaules));
-        set.setDuration(150);
-        set.start();
-    }
-
-    public List<String> getSelectedList() {
-        Log.d("AllMembersAdapter", "SelectedList: " + mSelectedList.toString());
-        return mSelectedList;
-    }
-
-    public void setOnCheck(int position) {
-        UserInfo userInfo = mMemberList.get(position).data;
-        if (mSelectedList.contains(userInfo.getUserName())) {
-//            View view = getView(position, null, null);
-//            CheckBox checkBox = (CheckBox) view.findViewById(R.id.check_box_cb);
-//            checkBox.setChecked(false);
-            mSelectedList.remove(position);
-            mSelectMap.delete(position);
-        } else {
-            mSelectedList.add(userInfo.getUserName());
-            mSelectMap.put(position, true);
-        }
-        notifyDataSetChanged();
-    }
-
-    public void updateListView(List<MembersInChatActivity.ItemModel> filterList) {
-        mSelectMap.clear();
-        mMemberList = filterList;
-        notifyDataSetChanged();
-    }
-
-    @Override
-    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        UserInfo userInfo = mMemberList.get(position).data;
-        String userName = userInfo.getUserName();
-        long userID = userInfo.getUserID();
-        if (mIsDeleteMode) {
-            final CheckBox checkBox = ViewHolder.get(view, R.id.check_box_cb);
-            if (!mIsCreator || !userName.equals(JMessageClient.getMyInfo().getUserName())) {
-
-                Log.i("AllMembersAdapter", "check:" + checkBox.isChecked() + ", userId:" + userID + ", userName:" + userName);
-                boolean ischeck = checkBox.isChecked();
-                if (!ischeck) {
-                    mSelectedList.add(userInfo.getUserName());
-                    map.put(userID, userName);
-                    addAnimation(checkBox);
-                    if (mGroupAdapter != null) {
-                        mGroupAdapter.setContact(getSelectedUser());
-                        notifySelectAreaDataSetChanged();
-                    }
-                } else {
-                    mSelectedList.remove(userInfo.getUserName());
-                    map.remove(userID);
-                    if (mGroupAdapter != null) {
-                        mGroupAdapter.setContact(getSelectedUser());
-                        notifySelectAreaDataSetChanged();
-                    }
-                }
-                if (map.size() > 0) {
-                    selectNum.setText("(" + map.size() + ")");
-                } else {
-                    selectNum.setText("");
-                }
-
-                checkBox.setChecked(!ischeck);
-            }
-        }else {
-            if (JMessageClient.getMyInfo().getUserName().equals(userName)) {
-                Intent my = new Intent(mContext, MyInfoActivity.class);
-                mContext.startActivity(my);
-            } else {
-                Intent person = new Intent(mContext, PersonActivity.class);
-                person.putExtra(PersonActivity.Companion.getPERSON_NAME_KEY(), userInfo.getUserName());
-                mContext.startActivity(person);
-            }
-        }
-    }
-
-    @Override
-    public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
-        if (mIsCreator && !mIsDeleteMode && position != 0) {
-            View.OnClickListener listener = new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    switch (v.getId()) {
-                        case R.id.jmui_cancel_btn:
-                            mDialog.dismiss();
-                            break;
-                        case R.id.jmui_commit_btn:
-                            mDialog.dismiss();
-                            mLoadingDialog = DialogCreator.createLoadingDialog(mContext,
-                                    mContext.getString(R.string.deleting_hint));
-                            mLoadingDialog.show();
-                            List<String> list = new ArrayList<String>();
-                            list.add(mMemberList.get(position).data.getUserName());
-                            JMessageClient.removeGroupMembers(mGroupId, list, new BasicCallback() {
-                                @Override
-                                public void gotResult(int status, String desc) {
-                                    mLoadingDialog.dismiss();
-                                    if (status == 0) {
-                                        mContext.refreshMemberList();
-                                    } else {
-                                        ToastUtil.shortToast(mContext, "删除失败" + desc);
-                                    }
-                                }
-                            });
-                            break;
-
-                    }
-                }
-            };
-            mDialog = DialogCreator.createDeleteMemberDialog(mContext, listener, true);
-            mDialog.getWindow().setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
-            mDialog.show();
-        }
-        return true;
-    }
-
-    ArrayList<String> list = new ArrayList<>();
-
-    public ArrayList<String> getSelectedUser() {
-        list.clear();
-        for (Long key : map.keySet()) {
-            list.add(map.get(key));
-        }
-        return list;
-    }
-
-    private void notifySelectAreaDataSetChanged() {
-        int converViewWidth = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 46, mContext.getResources()
-                .getDisplayMetrics()));
-        ViewGroup.LayoutParams layoutParams = mGridView.getLayoutParams();
-        layoutParams.width = converViewWidth * getSelectedUser().size();
-        layoutParams.height = converViewWidth;
-        mGridView.setLayoutParams(layoutParams);
-        mGridView.setNumColumns(getSelectedUser().size());
-
-        try {
-            final int x = layoutParams.width;
-            final int y = layoutParams.height;
-            new Handler().post(new Runnable() {
-                @Override
-                public void run() {
-                    mHorizontalScrollView.scrollTo(x, y);
-                }
-            });
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        notifyDataSetChanged();
-    }
-
-}

+ 0 - 94
o2android/app/src/main/java/jiguang/chat/adapter/AppsAdapter.java

@@ -1,94 +0,0 @@
-package jiguang.chat.adapter;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-
-import cn.jpush.im.android.eventbus.EventBus;
-import jiguang.chat.application.JGApplication;
-import jiguang.chat.model.AppBean;
-import jiguang.chat.utils.event.ImageEvent;
-
-public class AppsAdapter extends BaseAdapter {
-
-    private LayoutInflater inflater;
-    private Context mContext;
-    private ArrayList<AppBean> mDdata = new ArrayList<AppBean>();
-
-    public AppsAdapter(Context context, ArrayList<AppBean> data) {
-        this.mContext = context;
-        this.inflater = LayoutInflater.from(context);
-        if (data != null) {
-            this.mDdata = data;
-        }
-    }
-
-    @Override
-    public int getCount() {
-        return mDdata.size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mDdata.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        ViewHolder viewHolder;
-        if (convertView == null) {
-            viewHolder = new ViewHolder();
-            convertView = inflater.inflate(R.layout.item_app, null);
-            viewHolder.iv_icon = (ImageView) convertView.findViewById(R.id.iv_icon);
-            viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);
-            convertView.setTag(viewHolder);
-        } else {
-            viewHolder = (ViewHolder) convertView.getTag();
-        }
-
-        final AppBean appBean = mDdata.get(position);
-        if (appBean != null) {
-            viewHolder.iv_icon.setBackgroundResource(appBean.getIcon());
-            viewHolder.tv_name.setText(appBean.getFuncName());
-            convertView.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    if (appBean.getFuncName().equals("图片")) {
-                        EventBus.getDefault().post(new ImageEvent(JGApplication.IMAGE_MESSAGE));
-                    } else if (appBean.getFuncName().equals("拍摄")) {
-                        EventBus.getDefault().post(new ImageEvent(JGApplication.TAKE_PHOTO_MESSAGE));
-                    }else if (appBean.getFuncName().equals("位置")) {
-                        EventBus.getDefault().post(new ImageEvent(JGApplication.TAKE_LOCATION));
-                    }else if (appBean.getFuncName().equals("文件")) {
-                        EventBus.getDefault().post(new ImageEvent(JGApplication.FILE_MESSAGE));
-                    }else if (appBean.getFuncName().equals("视频")) {
-                        EventBus.getDefault().post(new ImageEvent(JGApplication.TACK_VIDEO));
-                    }else if (appBean.getFuncName().equals("语音")) {
-                        EventBus.getDefault().post(new ImageEvent(JGApplication.TACK_VOICE));
-                    }else if (appBean.getFuncName().equals("名片")) {
-                        EventBus.getDefault().post(new ImageEvent(JGApplication.BUSINESS_CARD));
-                    }
-                }
-            });
-        }
-        return convertView;
-    }
-
-    class ViewHolder {
-        public ImageView iv_icon;
-        public TextView tv_name;
-    }
-}

+ 0 - 213
o2android/app/src/main/java/jiguang/chat/adapter/AtMemberAdapter.java

@@ -1,213 +0,0 @@
-package jiguang.chat.adapter;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.SectionIndexer;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
-import cn.jpush.im.android.api.model.UserInfo;
-import jiguang.chat.utils.ViewHolder;
-import jiguang.chat.utils.pinyin.HanziToPinyin;
-
-public class AtMemberAdapter extends BaseAdapter implements StickyListHeadersAdapter, SectionIndexer {
-
-    private Context mContext;
-    private List<UserInfo> mList = new ArrayList<UserInfo>();
-    private String letter;
-    private int[] mSectionIndices;
-    private String[] mSectionLetters;
-
-    public AtMemberAdapter(Context context, List<UserInfo> list) {
-        this.mContext = context;
-        this.mList = list;
-        //数量从0开始
-        mSectionIndices = getSectionIndices();
-        //所有名字的首字母
-        mSectionLetters = getSectionLetters();
-    }
-
-    private int[] getSectionIndices() {
-        ArrayList<Integer> sectionIndices = new ArrayList<Integer>();
-        if (mList.size() > 0) {
-            char lastFirstChar = getLetter(mList.get(0)).charAt(0);
-
-            sectionIndices.add(0);
-            for (int i = 1; i < mList.size(); i++) {
-                if (getLetter(mList.get(i)).charAt(0) != lastFirstChar) {
-                    lastFirstChar = getLetter(mList.get(i)).charAt(0);
-                    sectionIndices.add(i);
-                }
-            }
-            int[] sections = new int[sectionIndices.size()];
-            for (int i = 0; i < sectionIndices.size(); i++) {
-                sections[i] = sectionIndices.get(i);
-            }
-            return sections;
-        }
-        return null;
-    }
-
-    private String[] getSectionLetters() {
-        if (null != mSectionIndices) {
-            String[] letters = new String[mSectionIndices.length];
-            for (int i = 0; i < mSectionIndices.length; i++) {
-                letters[i] = getLetter(mList.get(mSectionIndices[i]));
-            }
-            return letters;
-        }
-        return null;
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        HeaderViewHolder holder;
-        UserInfo userInfo = mList.get(position);
-        if (convertView == null) {
-            holder = new HeaderViewHolder();
-            convertView = LayoutInflater.from(mContext).inflate(R.layout.header, parent, false);
-            holder.text = (TextView) convertView.findViewById(R.id.section_tv);
-            convertView.setTag(holder);
-        } else {
-            holder = (HeaderViewHolder) convertView.getTag();
-        }
-        String letters = getLetter(userInfo);
-        holder.text.setText(letters);
-        return convertView;
-    }
-
-    private static class HeaderViewHolder {
-        TextView text;
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        return getLetter(mList.get(position)).charAt(0);
-    }
-
-    @Override
-    public int getCount() {
-        return mList.size();
-    }
-
-    @Override
-    public Object getItem(int i) {
-        return mList.get(i);
-    }
-
-    @Override
-    public long getItemId(int i) {
-        return i;
-    }
-
-    private String getLetter(UserInfo userInfo) {
-        String displayName = userInfo.getDisplayName();
-        ArrayList<HanziToPinyin.Token> tokens = HanziToPinyin.getInstance()
-                .get(displayName);
-        StringBuilder sb = new StringBuilder();
-        if (tokens != null && tokens.size() > 0) {
-            for (HanziToPinyin.Token token : tokens) {
-                if (token.type == HanziToPinyin.Token.PINYIN) {
-                    sb.append(token.target);
-                } else {
-                    sb.append(token.source);
-                }
-            }
-        }
-        String sortString = sb.toString().substring(0, 1).toUpperCase();
-        if (sortString.matches("[A-Z]")) {
-            letter = sortString.toUpperCase();
-        } else {
-            letter = "#";
-        }
-        return letter;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup viewGroup) {
-
-        if (null == convertView) {
-            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_contact, null);
-        }
-        final ImageView headIcon = ViewHolder.get(convertView, R.id.head_icon_iv);
-        TextView name = ViewHolder.get(convertView, R.id.name);
-
-        final UserInfo userInfo = mList.get(position);
-
-        userInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
-            @Override
-            public void gotResult(int status, String desc, Bitmap bitmap) {
-                if (status == 0) {
-                    headIcon.setImageBitmap(bitmap);
-                } else {
-                    headIcon.setImageResource(R.drawable.jmui_head_icon);
-                }
-            }
-        });
-
-        String displayName = userInfo.getNotename();
-        if (TextUtils.isEmpty(displayName)) {
-            displayName = userInfo.getNickname();
-            if (TextUtils.isEmpty(displayName)) {
-                displayName = userInfo.getUserName();
-            }
-        }
-        name.setText(displayName);
-
-        return convertView;
-    }
-
-    @Override
-    public Object[] getSections() {
-        return mSectionLetters;
-    }
-
-    @Override
-    public int getPositionForSection(int sectionIndex) {
-        if (null == mSectionIndices || mSectionIndices.length == 0) {
-            return 0;
-        }
-
-        if (sectionIndex >= mSectionIndices.length) {
-            sectionIndex = mSectionIndices.length - 1;
-        } else if (sectionIndex < 0) {
-            sectionIndex = 0;
-        }
-        return mSectionIndices[sectionIndex];
-    }
-
-    @Override
-    public int getSectionForPosition(int position) {
-        if (null != mSectionIndices) {
-            for (int i = 0; i < mSectionIndices.length; i++) {
-                if (position < mSectionIndices[i]) {
-                    return i - 1;
-                }
-            }
-            return mSectionIndices.length - 1;
-        }
-        return -1;
-    }
-
-    public int getSectionForLetter(String letter) {
-        if (null != mSectionIndices) {
-            for (int i = 0; i < mSectionIndices.length; i++) {
-                if (mSectionLetters[i].equals(letter)) {
-                    return mSectionIndices[i] + 1;
-                }
-            }
-        }
-        return -1;
-    }
-}

+ 0 - 143
o2android/app/src/main/java/jiguang/chat/adapter/AudioAdapter.java

@@ -1,143 +0,0 @@
-package jiguang.chat.adapter;
-
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.util.SparseBooleanArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-import jiguang.chat.activity.fragment.AudioFragment;
-import jiguang.chat.entity.FileItem;
-import jiguang.chat.entity.FileType;
-import jiguang.chat.entity.UpdateSelectedStateListener;
-import jiguang.chat.utils.ViewHolder;
-
-
-public class AudioAdapter extends BaseAdapter {
-
-    private List<FileItem> mList;
-    private AudioFragment mFragment;
-    private LayoutInflater mInflater;
-    private SparseBooleanArray mSelectMap = new SparseBooleanArray();
-    private List<String> mSelectedList = new ArrayList<String>();
-    private UpdateSelectedStateListener mListener;
-
-    public AudioAdapter(AudioFragment fragment, List<FileItem> list) {
-        this.mFragment = fragment;
-        this.mList = list;
-        this.mInflater = LayoutInflater.from(fragment.getContext());
-    }
-
-    @Override
-    public int getCount() {
-        return mList.size();
-    }
-
-    @Override
-    public Object getItem(int i) {
-        return mList.get(i);
-    }
-
-    @Override
-    public long getItemId(int i) {
-        return i;
-    }
-
-    @Override
-    public View getView(final int position, View convertView, ViewGroup viewGroup) {
-        final FileItem item = mList.get(position);
-        if (null == convertView) {
-            convertView = mInflater.inflate(R.layout.item_audio, null);
-        }
-        LinearLayout itemLl = ViewHolder.get(convertView, R.id.audio_item_ll);
-        final CheckBox checkBox = ViewHolder.get(convertView, R.id.audio_cb);
-        ImageView icon = ViewHolder.get(convertView, R.id.audio_iv);
-        TextView title = ViewHolder.get(convertView, R.id.audio_title);
-        TextView size = ViewHolder.get(convertView, R.id.audio_size);
-        TextView date = ViewHolder.get(convertView, R.id.audio_date);
-
-        itemLl.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                if (checkBox.isChecked()) {
-                    checkBox.setChecked(false);
-                    mSelectMap.delete(position);
-                    mListener.onUnselected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
-                } else {
-                    if (mFragment.getTotalCount() < 5) {
-                        if (mFragment.getTotalSize() + item.getLongFileSize() < 10485760.0) {
-                            checkBox.setChecked(true);
-                            mSelectMap.put(position, true);
-                            mListener.onSelected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
-                            addAnimation(checkBox);
-                        } else {
-                            Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
-                                    .file_size_over_limit_hint), Toast.LENGTH_SHORT).show();
-                        }
-                    } else {
-                        Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
-                                .size_over_limit_hint), Toast.LENGTH_SHORT).show();
-                    }
-                }
-            }
-        });
-
-        checkBox.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (checkBox.isChecked()) {
-                    if (mFragment.getTotalCount() < 5) {
-                        if (mFragment.getTotalSize() + item.getLongFileSize() < 10485760.0) {
-                            checkBox.setChecked(true);
-                            mSelectMap.put(position, true);
-                            mListener.onSelected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
-                            addAnimation(checkBox);
-                        } else {
-                            checkBox.setChecked(false);
-                            Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
-                                    .file_size_over_limit_hint), Toast.LENGTH_SHORT).show();
-                        }
-                    } else {
-                        checkBox.setChecked(false);
-                        Toast.makeText(mFragment.getContext(), mFragment.getString(R.string
-                                .size_over_limit_hint), Toast.LENGTH_SHORT).show();
-                    }
-                } else {
-                    mSelectMap.delete(position);
-                    mListener.onUnselected(item.getFilePath(), item.getLongFileSize(), FileType.audio);
-                }
-            }
-        });
-
-        checkBox.setChecked(mSelectMap.get(position));
-        title.setText(item.getFileName());
-        size.setText(item.getFileSize());
-        date.setText(item.getDate());
-
-        return convertView;
-    }
-
-    private void addAnimation(View view) {
-        float[] vaules = new float[]{0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.25f, 1.2f, 1.15f, 1.1f, 1.0f};
-        AnimatorSet set = new AnimatorSet();
-        set.playTogether(ObjectAnimator.ofFloat(view, "scaleX", vaules),
-                ObjectAnimator.ofFloat(view, "scaleY", vaules));
-        set.setDuration(150);
-        set.start();
-    }
-
-    public void setUpdateListener(UpdateSelectedStateListener listener) {
-        this.mListener = listener;
-    }
-}

+ 0 - 97
o2android/app/src/main/java/jiguang/chat/adapter/BigEmoticonsAdapter.java

@@ -1,97 +0,0 @@
-package jiguang.chat.adapter;
-
-import android.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
-
-import java.io.IOException;
-
-import jiguang.chat.model.Constants;
-import jiguang.chat.utils.keyboard.adpater.EmoticonsAdapter;
-import jiguang.chat.utils.keyboard.data.EmoticonEntity;
-import jiguang.chat.utils.keyboard.data.EmoticonPageEntity;
-import jiguang.chat.utils.keyboard.interfaces.EmoticonClickListener;
-import jiguang.chat.utils.keyboard.utils.imageloader.ImageLoader;
-
-
-public class BigEmoticonsAdapter extends EmoticonsAdapter<EmoticonEntity> {
-
-    protected final double DEF_HEIGHTMAXTATIO = 1.6;
-
-    public BigEmoticonsAdapter(Context context, EmoticonPageEntity emoticonPageEntity, EmoticonClickListener onEmoticonClickListener) {
-        super(context, emoticonPageEntity, onEmoticonClickListener);
-        this.mItemHeight = (int) context.getResources().getDimension(R.dimen.item_emoticon_size_big);
-        this.mItemHeightMaxRatio = DEF_HEIGHTMAXTATIO;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        ViewHolder viewHolder;
-        if (convertView == null) {
-            viewHolder = new ViewHolder();
-            convertView = mInflater.inflate(R.layout.item_emoticon_big, null);
-            viewHolder.rootView = convertView;
-            viewHolder.ly_root = (LinearLayout) convertView.findViewById(R.id.ly_root);
-            viewHolder.iv_emoticon = (ImageView) convertView.findViewById(R.id.iv_emoticon);
-            viewHolder.tv_content = (TextView) convertView.findViewById(R.id.tv_content);
-            convertView.setTag(viewHolder);
-        } else {
-            viewHolder = (ViewHolder) convertView.getTag();
-        }
-
-        bindView(position, viewHolder);
-        updateUI(viewHolder, parent);
-        return convertView;
-    }
-
-    protected void updateUI(ViewHolder viewHolder, ViewGroup parent) {
-        if(mDefalutItemHeight != mItemHeight){
-            viewHolder.iv_emoticon.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mItemHeight));
-        }
-        mItemHeightMax = this.mItemHeightMax != 0 ? this.mItemHeightMax : (int) (mItemHeight * mItemHeightMaxRatio);
-        mItemHeightMin = this.mItemHeightMin != 0 ? this.mItemHeightMin : mItemHeight;
-        int realItemHeight = ((View) parent.getParent()).getMeasuredHeight() / mEmoticonPageEntity.getLine();
-        realItemHeight = Math.min(realItemHeight, mItemHeightMax);
-        realItemHeight = Math.max(realItemHeight, mItemHeightMin);
-        viewHolder.ly_root.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, realItemHeight));
-    }
-
-    protected void bindView(int position, ViewHolder viewHolder) {
-        final boolean isDelBtn = isDelBtn(position);
-        final EmoticonEntity emoticonEntity = mData.get(position);
-        if (isDelBtn) {
-            viewHolder.iv_emoticon.setImageResource(R.mipmap.icon_del);
-            viewHolder.iv_emoticon.setBackgroundResource(R.drawable.bg_emoticon);
-        } else {
-            if (emoticonEntity != null) {
-                try {
-                    ImageLoader.getInstance(viewHolder.iv_emoticon.getContext()).displayImage(emoticonEntity.getIconUri(), viewHolder.iv_emoticon);
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-                viewHolder.iv_emoticon.setBackgroundResource(R.drawable.bg_emoticon);
-            }
-        }
-
-        viewHolder.rootView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (mOnEmoticonClickListener != null) {
-                    mOnEmoticonClickListener.onEmoticonClick(emoticonEntity, Constants.EMOTICON_CLICK_BIGIMAGE, isDelBtn);
-                }
-            }
-        });
-    }
-
-    public static class ViewHolder {
-        public View rootView;
-        public LinearLayout ly_root;
-        public ImageView iv_emoticon;
-        public TextView tv_content;
-    }
-}

Some files were not shown because too many files changed in this diff