├── hmsagent ├── .gitignore ├── libs │ └── hmssdk-2.6.3.306.jar ├── src │ └── main │ │ └── java │ │ └── com │ │ └── huawei │ │ └── android │ │ └── hms │ │ └── agent │ │ ├── common │ │ ├── INoProguard.java │ │ ├── handler │ │ │ ├── CheckUpdateHandler.java │ │ │ ├── ICallbackCode.java │ │ │ ├── ConnectHandler.java │ │ │ └── ICallbackResult.java │ │ ├── BaseApiAgent.java │ │ ├── IActivityPauseCallback.java │ │ ├── IActivityResumeCallback.java │ │ ├── IClientConnectCallback.java │ │ ├── StrUtils.java │ │ ├── IActivityDestroyedCallback.java │ │ ├── IOUtils.java │ │ ├── CallbackCodeRunnable.java │ │ ├── EmptyConnectCallback.java │ │ ├── UIUtils.java │ │ ├── CallbackResultRunnable.java │ │ ├── BaseAgentActivity.java │ │ └── ThreadUtil.java │ │ ├── game │ │ ├── handler │ │ │ ├── SaveInfoHandler.java │ │ │ ├── RegisterHardwareCapabilityHandler.java │ │ │ ├── GetTemperatureHandler.java │ │ │ ├── GetCertificationInfoHandler.java │ │ │ ├── GetCertificationIntentHandler.java │ │ │ ├── LoginHandler.java │ │ │ └── ICheckLoginSignHandler.java │ │ └── UpdateGameInfoApi.java │ │ ├── push │ │ └── handler │ │ │ ├── GetTokenHandler.java │ │ │ ├── DeleteTokenHandler.java │ │ │ ├── GetPushStateHandler.java │ │ │ ├── QueryAgreementHandler.java │ │ │ ├── EnableReceiveNormalMsgHandler.java │ │ │ └── EnableReceiveNotifyMsgHandler.java │ │ ├── sns │ │ └── Handler │ │ │ ├── GetUiIntentHandler.java │ │ │ └── GetMsgSendIntentHandler.java │ │ ├── hwid │ │ └── handler │ │ │ ├── SignInHandler.java │ │ │ └── SignOutHandler.java │ │ └── pay │ │ └── handler │ │ ├── GetOrderHandler.java │ │ ├── PayHandler.java │ │ ├── GetPurchaseInfoHandler.java │ │ ├── ProductPayHandler.java │ │ └── GetProductDetailsHandler.java ├── build.gradle └── proguard-rules.pro ├── avoscloud-fcm ├── .gitignore ├── gradle.properties ├── src │ ├── main │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── avos │ │ │ └── avoscloud │ │ │ ├── AVFCMJobService.java │ │ │ └── AVFirebaseMessagingService.java │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── avos │ │ │ └── avoscloud │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── avos │ │ └── avoscloud │ │ └── ExampleInstrumentedTest.java └── proguard-rules.pro ├── avoscloud-gcm ├── .gitignore ├── gradle.properties ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── avos │ │ └── avoscloud │ │ └── AVGCMService.java └── build.gradle ├── avoscloud-mixpush ├── .gitignore ├── gradle.properties ├── libs │ ├── oppo_mcssdk-1.0.1.jar │ ├── vivo_pushsdk_v2.3.4.jar │ └── MiPush_SDK_Client_3_6_9.jar ├── src │ └── main │ │ └── AndroidManifest.xml └── build.gradle ├── libs ├── okhttp-3.8.0.jar ├── okio-1.13.0.jar ├── qq.sdk.1.6.1.jar ├── fastjson-1.2.37.jar ├── protobuf-java-3.4.0.jar ├── Java-WebSocket-1.3.2-leancloud.jar └── weibo.sdk.android.sso.3.0.1-leancloud.jar ├── avoscloud-sdk ├── gradle.properties └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── avos │ │ │ └── avoscloud │ │ │ ├── AVResponseArray.java │ │ │ ├── ops │ │ │ ├── SingleValueOp.java │ │ │ ├── AVOp.java │ │ │ ├── CollectionAddOp.java │ │ │ ├── CompoundOp.java │ │ │ ├── DeleteOp.java │ │ │ ├── CollectionOp.java │ │ │ └── NullOP.java │ │ │ ├── AVClassName.java │ │ │ ├── AVResponse.java │ │ │ ├── AVFollowResponse.java │ │ │ ├── AVDeleteOption.java │ │ │ ├── UpdatePasswordCallback.java │ │ │ ├── InboxStatusFindCallback.java │ │ │ ├── CloudQueryCallback.java │ │ │ ├── callback │ │ │ ├── AVServerDateCallback.java │ │ │ └── AVFriendshipCallback.java │ │ │ ├── upload │ │ │ └── Uploader.java │ │ │ ├── ProgressCallback.java │ │ │ ├── AVObjectReferenceCount.java │ │ │ ├── AVCaptchaDigest.java │ │ │ ├── utils │ │ │ └── AVFileUtil.java │ │ │ ├── AVCloudQueryResult.java │ │ │ ├── AVExceptionHolder.java │ │ │ ├── AVRuntimeException.java │ │ │ ├── FollowCallback.java │ │ │ ├── ObjectValueFilter.java │ │ │ ├── StatusCallback.java │ │ │ ├── GenericRetryCallback.java │ │ │ ├── AVSaveOption.java │ │ │ ├── RequestMobileCodeCallback.java │ │ │ ├── StatusListCallback.java │ │ │ ├── AVMobilePhoneVerifyCallback.java │ │ │ ├── AVCallback.java │ │ │ ├── FollowersAndFolloweesCallback.java │ │ │ ├── AVCaptchaOption.java │ │ │ ├── GenericObjectCallback.java │ │ │ ├── GetDataCallback.java │ │ │ ├── GetDataStreamCallback.java │ │ │ ├── AVConstants.java │ │ │ ├── AVInternalLogger.java │ │ │ ├── SaveCallback.java │ │ │ ├── DeleteCallback.java │ │ │ ├── SignUpCallback.java │ │ │ ├── RefreshCallback.java │ │ │ ├── AVFriendship.java │ │ │ ├── GetFileCallback.java │ │ │ ├── RequestEmailVerifyCallback.java │ │ │ ├── LogInCallback.java │ │ │ └── AVLogger.java │ └── AndroidManifest.xml │ ├── androidTest │ └── java │ │ └── com │ │ └── avos │ │ └── avoscloud │ │ └── test │ │ ├── mock │ │ ├── MockGeoPoint.java │ │ ├── MyUser.java │ │ ├── GameScore.java │ │ ├── Game.java │ │ └── MockUser.java │ │ ├── utils │ │ ├── TestConstants.java │ │ └── TestExecutorService.java │ │ └── base │ │ └── NetworkTestBase.java │ └── test │ └── java │ └── com │ └── avos │ └── avoscloud │ ├── ChildAVUser.java │ ├── AVUtilsBase64Test.java │ ├── AVQueryTest.java │ ├── TestConfig.java │ ├── AVStatusTest.java │ ├── AVCloudTest.java │ └── FastJsonTest.java ├── avoscloud-sns ├── gradle.properties ├── libs │ ├── x86 │ │ └── libweibosdkcore.so │ ├── mips │ │ └── libweibosdkcore.so │ └── armeabi │ │ └── libweibosdkcore.so ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── avos │ │ │ └── sns │ │ │ ├── SNSType.java │ │ │ ├── SNSCallback.java │ │ │ └── SNSWebView.java │ │ ├── AndroidManifest.xml │ │ └── res │ │ └── layout │ │ └── avoscloud_sns_web_activity.xml └── build.gradle ├── tools ├── android_code_style │ ├── ImportOrder.importorder │ ├── checkstyle │ │ └── checkstyle-6.2-all.jar │ └── lines_modified.sh └── add_code_style_checker.sh ├── avoscloud-push ├── gradle.properties └── src │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── avos │ │ ├── avospush │ │ ├── push │ │ │ ├── AVShutdownListener.java │ │ │ ├── AVConnectivityListener.java │ │ │ ├── AVShutdownReceiver.java │ │ │ ├── AVConnectivityReceiver.java │ │ │ └── AVWebSocketListener.java │ │ └── session │ │ │ ├── LoginPacket.java │ │ │ ├── PeerBasedCommandPacket.java │ │ │ ├── StaleMessageDepot.java │ │ │ ├── LiveQueryLoginPacket.java │ │ │ ├── PushAckPacket.java │ │ │ ├── SessionAckPacket.java │ │ │ └── MessagePatchModifiedPacket.java │ │ └── avoscloud │ │ ├── im │ │ └── v2 │ │ │ ├── AVIMMessageField.java │ │ │ ├── messages │ │ │ ├── AVIMRecalledMessage.java │ │ │ ├── AVIMTextMessage.java │ │ │ └── AVIMLocationMessage.java │ │ │ ├── AVIMMessageType.java │ │ │ ├── callback │ │ │ ├── AVIMMessageUpdatedCallback.java │ │ │ ├── AVIMConversationMemberCountCallback.java │ │ │ ├── AVIMConversationCreatedCallback.java │ │ │ ├── AVIMClientCallback.java │ │ │ ├── AVIMMessageRecalledCallback.java │ │ │ ├── AVIMOnlineClientsCallback.java │ │ │ ├── AVIMClientStatusCallback.java │ │ │ ├── AVIMSingleMessageQueryCallback.java │ │ │ ├── AVIMMessagesQueryCallback.java │ │ │ ├── AVIMConversationCallback.java │ │ │ ├── AVIMConversationQueryCallback.java │ │ │ ├── AVIMConversationSimpleResultCallback.java │ │ │ ├── AVIMConversationMemberQueryCallback.java │ │ │ └── AVIMOperationPartiallySucceededCallback.java │ │ │ ├── AVIMChatRoom.java │ │ │ ├── AVIMMessageHandler.java │ │ │ ├── AVIMTypedMessageHandler.java │ │ │ ├── conversation │ │ │ └── ConversationMemberRole.java │ │ │ ├── AVIMMessageCreator.java │ │ │ ├── AVIMMessageQueryDirection.java │ │ │ ├── AVIMTemporaryConversation.java │ │ │ ├── AVIMReservedMessageType.java │ │ │ ├── AVIMClientOpenOption.java │ │ │ ├── AVIMMessageManagerHelper.java │ │ │ ├── AVIMBaseBroadcastReceiver.java │ │ │ ├── AVIMMessageInterval.java │ │ │ └── AVIMConversationQueryConditions.java │ │ ├── AVLiveQuerySubscribeCallback.java │ │ ├── IntentUtil.java │ │ ├── SignatureCallback.java │ │ ├── AVBroadcastReceiver.java │ │ ├── AVIMEventHandler.java │ │ ├── AVSessionListener.java │ │ ├── Signature.java │ │ └── HeartBeatPolicy.java │ └── test │ └── java │ └── com │ └── avos │ └── avoscloud │ ├── im │ └── v2 │ │ ├── video │ │ └── AVIMVideoCaptureTests.java │ │ └── audio │ │ └── AVIMAudioRecorderTests.java │ ├── model │ ├── AVIMCustomMessageHandler.java │ └── AVIMCustomMessage.java │ ├── PushTestConfig.java │ └── AVPushWebSocketClientTests.java ├── avoscloud-search ├── gradle.properties ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── avoscloud_search_color.xml │ │ │ └── avoscloud_search_strings.xml │ │ ├── drawable │ │ │ ├── avoscloud_search_actionbar_back.png │ │ │ └── avoscloud_search_result_open_background.xml │ │ ├── drawable-hdpi │ │ │ └── avoscloud_search_actionbar_back.png │ │ ├── drawable-mdpi │ │ │ └── avoscloud_search_actionbar_back.png │ │ ├── drawable-xhdpi │ │ │ └── avoscloud_search_actionbar_back.png │ │ ├── values-zh │ │ │ └── avoscloud_search_strings.xml │ │ └── layout │ │ │ ├── avoscloud_search_loading.xml │ │ │ ├── avoscloud_search_activity.xml │ │ │ ├── avoscloud_search_actionbar.xml │ │ │ └── avoscloud_search_result_item.xml │ │ ├── java │ │ └── com │ │ │ └── avos │ │ │ └── avoscloud │ │ │ └── search │ │ │ └── AVSearchResponse.java │ │ └── AndroidManifest.xml └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── avoscloud-feedback ├── gradle.properties ├── src │ ├── main │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ ├── avoscloud_feedback_notification.9.png │ │ │ ├── avoscloud_feedback_dev_reply_background.9.png │ │ │ ├── avoscloud_feedback_thread_actionbar_back.png │ │ │ └── avoscloud_feedback_user_reply_background.9.png │ │ │ ├── drawable-mdpi │ │ │ ├── avoscloud_feedback_notification.9.png │ │ │ ├── avoscloud_feedback_dev_reply_background.9.png │ │ │ ├── avoscloud_feedback_thread_actionbar_back.png │ │ │ └── avoscloud_feedback_user_reply_background.9.png │ │ │ ├── drawable-xhdpi │ │ │ ├── avoscloud_feedback_notification.9.png │ │ │ ├── avoscloud_feedback_thread_actionbar_back.png │ │ │ ├── avoscloud_feedback_dev_reply_background.9.png │ │ │ └── avoscloud_feedback_user_reply_background.9.png │ │ │ ├── drawable │ │ │ ├── avoscloud_feedback_thread_actionbar_back.png │ │ │ └── avoscloud_feedback_actionbar_background.xml │ │ │ ├── values-zh │ │ │ └── avoscloud_feedback_string.xml │ │ │ ├── values │ │ │ ├── avoscloud_feedback_color.xml │ │ │ └── avoscloud_feedback_string.xml │ │ │ └── layout │ │ │ └── avoscloud_feedback_thread_actionbar.xml │ └── androidTest │ │ └── java │ │ └── com │ │ └── avos │ │ └── avoscloud │ │ └── feedback │ │ └── test │ │ ├── mock │ │ ├── MockComment.java │ │ └── MockFeedbackThread.java │ │ ├── utils │ │ ├── TestConstants.java │ │ └── TestExecutorService.java │ │ └── base │ │ └── NetworkTestBase.java └── build.gradle ├── avoscloud-statistics ├── gradle.properties ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── avos │ │ └── avoscloud │ │ ├── AVOnlineConfigureListener.java │ │ ├── BasicAnalyticsRequestController.java │ │ ├── ReportPolicy.java │ │ ├── AnalyticsRequestController.java │ │ ├── AnalyticsRequestControllerFactory.java │ │ ├── IntervalRequestController.java │ │ └── BoosterRequestController.java └── build.gradle ├── keys └── avos-cloud-sdk-release-key.keystore ├── .idea └── vcs.xml ├── settings.gradle ├── gradle.properties ├── common.function ├── .gitignore └── android-sdk-all.iml /hmsagent/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /avoscloud-fcm/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /avoscloud-gcm/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /avoscloud-mixpush/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /libs/okhttp-3.8.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/libs/okhttp-3.8.0.jar -------------------------------------------------------------------------------- /libs/okio-1.13.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/libs/okio-1.13.0.jar -------------------------------------------------------------------------------- /libs/qq.sdk.1.6.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/libs/qq.sdk.1.6.1.jar -------------------------------------------------------------------------------- /libs/fastjson-1.2.37.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/libs/fastjson-1.2.37.jar -------------------------------------------------------------------------------- /avoscloud-gcm/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-gcm Library 2 | POM_ARTIFACT_ID=avoscloud-gcm 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /avoscloud-sdk/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-sdk Library 2 | POM_ARTIFACT_ID=avoscloud-sdk 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /avoscloud-sns/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-sns Library 2 | POM_ARTIFACT_ID=avoscloud-sns 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /libs/protobuf-java-3.4.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/libs/protobuf-java-3.4.0.jar -------------------------------------------------------------------------------- /tools/android_code_style/ImportOrder.importorder: -------------------------------------------------------------------------------- 1 | #Organize Import Order 2 | 3=com 3 | 2=org 4 | 1=javax 5 | 0=java 6 | -------------------------------------------------------------------------------- /avoscloud-fcm/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-FCM Library 2 | POM_ARTIFACT_ID=avoscloud-fcm 3 | POM_PACKAGING=aar 4 | -------------------------------------------------------------------------------- /avoscloud-fcm/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | FCM 3 | 4 | -------------------------------------------------------------------------------- /avoscloud-push/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-push Library 2 | POM_ARTIFACT_ID=avoscloud-push 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /avoscloud-search/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-search Library 2 | POM_ARTIFACT_ID=avoscloud-search 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /avoscloud-feedback/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-feedback Library 2 | POM_ARTIFACT_ID=avoscloud-feedback 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /avoscloud-mixpush/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-mixpush Library 2 | POM_ARTIFACT_ID=avoscloud-mixpush 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /hmsagent/libs/hmssdk-2.6.3.306.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/hmsagent/libs/hmssdk-2.6.3.306.jar -------------------------------------------------------------------------------- /avoscloud-statistics/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=avoscloud-statistics Library 2 | POM_ARTIFACT_ID=avoscloud-statistics 3 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /avoscloud-sns/libs/x86/libweibosdkcore.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-sns/libs/x86/libweibosdkcore.so -------------------------------------------------------------------------------- /keys/avos-cloud-sdk-release-key.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/keys/avos-cloud-sdk-release-key.keystore -------------------------------------------------------------------------------- /libs/Java-WebSocket-1.3.2-leancloud.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/libs/Java-WebSocket-1.3.2-leancloud.jar -------------------------------------------------------------------------------- /avoscloud-sns/libs/mips/libweibosdkcore.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-sns/libs/mips/libweibosdkcore.so -------------------------------------------------------------------------------- /avoscloud-mixpush/libs/oppo_mcssdk-1.0.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-mixpush/libs/oppo_mcssdk-1.0.1.jar -------------------------------------------------------------------------------- /avoscloud-mixpush/libs/vivo_pushsdk_v2.3.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-mixpush/libs/vivo_pushsdk_v2.3.4.jar -------------------------------------------------------------------------------- /avoscloud-sns/libs/armeabi/libweibosdkcore.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-sns/libs/armeabi/libweibosdkcore.so -------------------------------------------------------------------------------- /libs/weibo.sdk.android.sso.3.0.1-leancloud.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/libs/weibo.sdk.android.sso.3.0.1-leancloud.jar -------------------------------------------------------------------------------- /avoscloud-mixpush/libs/MiPush_SDK_Client_3_6_9.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-mixpush/libs/MiPush_SDK_Client_3_6_9.jar -------------------------------------------------------------------------------- /avoscloud-gcm/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tools/android_code_style/checkstyle/checkstyle-6.2-all.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/tools/android_code_style/checkstyle/checkstyle-6.2-all.jar -------------------------------------------------------------------------------- /avoscloud-mixpush/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/values/avoscloud_search_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #56b8f4 5 | 6 | -------------------------------------------------------------------------------- /avoscloud-fcm/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/INoProguard.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | /** 4 | * 不混淆类 5 | */ 6 | public interface INoProguard { 7 | } 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/drawable/avoscloud_search_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-search/src/main/res/drawable/avoscloud_search_actionbar_back.png -------------------------------------------------------------------------------- /avoscloud-push/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVResponseArray.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.List; 4 | 5 | public class AVResponseArray { 6 | public List results; 7 | 8 | } 9 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/drawable-hdpi/avoscloud_search_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-search/src/main/res/drawable-hdpi/avoscloud_search_actionbar_back.png -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/drawable-mdpi/avoscloud_search_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-search/src/main/res/drawable-mdpi/avoscloud_search_actionbar_back.png -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/drawable-xhdpi/avoscloud_search_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-search/src/main/res/drawable-xhdpi/avoscloud_search_actionbar_back.png -------------------------------------------------------------------------------- /tools/android_code_style/lines_modified.sh: -------------------------------------------------------------------------------- 1 | echo $(git --no-pager blame --line-porcelain $1 | 2 | awk '/author Not Committed Yet/{if (a && a !~ /author Not Committed Yet/) print a} {a=$0}' | 3 | awk '{print $3}') 4 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_notification.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_notification.9.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_notification.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_notification.9.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':avoscloud-sdk' 2 | include ':avoscloud-feedback' 3 | include ':avoscloud-push' 4 | include ':avoscloud-search' 5 | include ':avoscloud-fcm' 6 | include ':hmsagent' 7 | include ':avoscloud-mixpush' 8 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_notification.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_notification.9.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable/avoscloud_feedback_thread_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable/avoscloud_feedback_thread_actionbar_back.png -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_dev_reply_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_dev_reply_background.9.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_thread_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_thread_actionbar_back.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_dev_reply_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_dev_reply_background.9.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_thread_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_thread_actionbar_back.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_thread_actionbar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_thread_actionbar_back.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_user_reply_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-hdpi/avoscloud_feedback_user_reply_background.9.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_user_reply_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-mdpi/avoscloud_feedback_user_reply_background.9.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_dev_reply_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_dev_reply_background.9.png -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_user_reply_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leancloud/android-sdk-all/HEAD/avoscloud-feedback/src/main/res/drawable-xhdpi/avoscloud_feedback_user_reply_background.9.png -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/handler/CheckUpdateHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common.handler; 2 | 3 | /** 4 | * 应用自升级回调 5 | */ 6 | public interface CheckUpdateHandler extends ICallbackCode { 7 | } 8 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ops/SingleValueOp.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.ops; 2 | 3 | /** 4 | * Created by lbt05 on 6/3/15. 5 | */ 6 | public interface SingleValueOp { 7 | 8 | abstract void setValues(Object values); 9 | } 10 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/java/com/avos/avoscloud/search/AVSearchResponse.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.search; 2 | 3 | import java.util.Map; 4 | 5 | public class AVSearchResponse { 6 | public String sid; 7 | public int hits; 8 | public Map[] results; 9 | } 10 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Aug 28 13:26:01 CST 2018 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip 7 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVClassName.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | @Retention(RetentionPolicy.RUNTIME) 7 | public @interface AVClassName { 8 | public String value(); 9 | } 10 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/values-zh/avoscloud_search_strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 打开应用 4 | 搜索结果 5 | 没有找到匹配的数据 6 | 7 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/drawable/avoscloud_feedback_actionbar_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/push/AVShutdownListener.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.push; 2 | 3 | import android.content.Context; 4 | 5 | /** 6 | * Created by yangchaozhong on 3/14/14. 7 | */ 8 | public interface AVShutdownListener { 9 | public void onShutdown(Context context); 10 | } 11 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/mock/MockGeoPoint.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.mock; 2 | 3 | /** 4 | * Created by zhangxiaobo on 15/3/13. 5 | */ 6 | public class MockGeoPoint { 7 | public static double longtitude = 40.0; 8 | public static double latitude = -30.0; 9 | } 10 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/values/avoscloud_search_strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Open App 4 | Search Result 5 | No Match Data Found 6 | 7 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/handler/ICallbackCode.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common.handler; 2 | 3 | /** 4 | * 回调接口 5 | */ 6 | public interface ICallbackCode { 7 | /** 8 | * 回调接口 9 | * @param rst 结果码 10 | */ 11 | void onResult(int rst); 12 | } 13 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/handler/SaveInfoHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * 保存玩家信息请求结果回调 7 | */ 8 | public interface SaveInfoHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /tools/add_code_style_checker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #CURRENT_PATH=${PWD} 4 | #SHELL_PATH=${}/`dirname $0` 5 | GIT_ROOT="$(git rev-parse --show-toplevel)" 6 | CODE_STYLE_DIR=$GIT_ROOT/tools/android_code_style 7 | cp $CODE_STYLE_DIR/code-style-checker.py $GIT_ROOT/.git/hooks/pre-commit 8 | chmod u+x,g+x,o+x $GIT_ROOT/.git/hooks/pre-commit 9 | -------------------------------------------------------------------------------- /avoscloud-sns/src/main/java/com/avos/sns/SNSType.java: -------------------------------------------------------------------------------- 1 | package com.avos.sns; 2 | 3 | /** 4 | * Created with IntelliJ IDEA. User: zhuzeng Date: 10/29/13 Time: 5:43 PM To change this template 5 | * use File | Settings | File Templates. 6 | */ 7 | public enum SNSType { 8 | AVOSCloudSNS, AVOSCloudSNSSinaWeibo, AVOSCloudSNSQQ, 9 | } 10 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/push/handler/GetTokenHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.push.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * 获取 pushtoken 回调 7 | */ 8 | public interface GetTokenHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMMessageField.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | @Retention(RetentionPolicy.RUNTIME) 7 | public @interface AVIMMessageField { 8 | public String name() default ""; 9 | } 10 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVResponse.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.*; 4 | 5 | public class AVResponse { 6 | public String objectId; 7 | public String updatedAt; 8 | public String createdAt; 9 | public Map[] results; 10 | public int count; 11 | public String className; 12 | } 13 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/push/handler/DeleteTokenHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.push.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * deleteToken 回调 7 | */ 8 | public interface DeleteTokenHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/push/handler/GetPushStateHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.push.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * getPushState 回调 7 | */ 8 | public interface GetPushStateHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/push/handler/QueryAgreementHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.push.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * queryAgreement 回调 7 | */ 8 | public interface QueryAgreementHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/mock/MyUser.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.mock; 2 | 3 | import com.alibaba.fastjson.annotation.JSONType; 4 | import com.avos.avoscloud.AVUser; 5 | 6 | /** 7 | * Created by zhangxiaobo on 15/3/16. 8 | */ 9 | @JSONType(asm = false) 10 | public class MyUser extends AVUser { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/handler/RegisterHardwareCapabilityHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * 保存玩家信息请求结果回调 7 | */ 8 | public interface RegisterHardwareCapabilityHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/handler/ConnectHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common.handler; 2 | 3 | /** 4 | * HuaweiApiClient 连接结果回调 5 | */ 6 | public interface ConnectHandler { 7 | /** 8 | * HuaweiApiClient 连接结果回调 9 | * @param rst 结果码 10 | */ 11 | void onConnect(int rst); 12 | } 13 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/push/handler/EnableReceiveNormalMsgHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.push.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * enableReceiveNormalMsg 回调 7 | */ 8 | public interface EnableReceiveNormalMsgHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/push/handler/EnableReceiveNotifyMsgHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.push.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * enableReceiveNotifyMsg 回调 7 | */ 8 | public interface EnableReceiveNotifyMsgHandler extends ICallbackCode { 9 | } 10 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/handler/ICallbackResult.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common.handler; 2 | 3 | /** 4 | * 回调接口 5 | */ 6 | public interface ICallbackResult { 7 | /** 8 | * 回调接口 9 | * @param rst 结果码 10 | * @param result 结果信息 11 | */ 12 | void onResult(int rst, R result); 13 | } 14 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | VERSION_NAME=4.7.15 2 | VERSION_CODE=2695 3 | GROUP=cn.leancloud.android 4 | 5 | POM_DESCRIPTION=AVOS Cloud Android SDK 6 | POM_URL=https://github.com/leancloud/AndroidSDK 7 | POM_SCM_URL=https://github.com/leancloud/AndroidSDK 8 | POM_SCM_CONNECTION=scm:git@github.com:leancloud/AndroidSDK.git 9 | POM_SCM_DEV_CONNECTION=scm:git@github.com:leancloud/AndroidSDK.git 10 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/sns/Handler/GetUiIntentHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.sns.Handler; 2 | 3 | import android.content.Intent; 4 | 5 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 6 | 7 | /** 8 | * 获取拉起社交界面的intent 9 | */ 10 | public interface GetUiIntentHandler extends ICallbackResult { 11 | } 12 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/hwid/handler/SignInHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.hwid.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.hwid.SignInHuaweiId; 5 | 6 | /** 7 | * 帐号登录回调 8 | */ 9 | public interface SignInHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/hwid/handler/SignOutHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.hwid.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.hwid.SignOutResult; 5 | 6 | /** 7 | * 帐号登出回调 8 | */ 9 | public interface SignOutHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/pay/handler/GetOrderHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.pay.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.pay.OrderResult; 5 | 6 | /** 7 | * 查询订单结果回调 8 | */ 9 | public interface GetOrderHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/pay/handler/PayHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.pay.handler; 2 | 3 | 4 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 5 | import com.huawei.hms.support.api.pay.PayResultInfo; 6 | 7 | /** 8 | * 支付结果回调 9 | */ 10 | public interface PayHandler extends ICallbackResult { 11 | } 12 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/sns/Handler/GetMsgSendIntentHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.sns.Handler; 2 | 3 | import android.content.Intent; 4 | 5 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 6 | 7 | /** 8 | * 获取发送消息的intent回调 9 | */ 10 | public interface GetMsgSendIntentHandler extends ICallbackResult { 11 | } 12 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/androidTest/java/com/avos/avoscloud/feedback/test/mock/MockComment.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.feedback.test.mock; 2 | 3 | /** 4 | * Created by zhangxiaobo on 15/3/25. 5 | */ 6 | public class MockComment { 7 | private MockComment() {} 8 | 9 | public static final String CONTENT = "what\'s wrong?"; 10 | public static final String CONTENT_ANOTHER = "someone can help me?"; 11 | } 12 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/BaseApiAgent.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | /** 4 | * API 实现类基类,用于处理公共操作 5 | * 目前实现的是client的连接及回调 6 | */ 7 | public abstract class BaseApiAgent implements IClientConnectCallback { 8 | protected void connect() { 9 | HMSAgentLog.d("connect"); 10 | ApiClientMgr.INST.connect(this, true); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/pay/handler/GetPurchaseInfoHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.pay.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.pay.PurchaseInfoResult; 5 | 6 | /** 7 | * 查询订单结果回调 8 | */ 9 | public interface GetPurchaseInfoHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVFollowResponse.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * Created with IntelliJ IDEA. User: zhuzeng Date: 12/26/13 Time: 4:09 PM To change this template 7 | * use File | Settings | File Templates. 8 | */ 9 | public class AVFollowResponse { 10 | public Map[] results; 11 | public Map[] followers; 12 | public Map[] followees; 13 | } 14 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/test/java/com/avos/avoscloud/ChildAVUser.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by wli on 2017/3/14. 5 | */ 6 | 7 | @AVClassName("ChildAVUser") 8 | public class ChildAVUser extends AVUser { 9 | 10 | public void setNickName(String name) { 11 | this.put("nickName", name); 12 | } 13 | 14 | public String getNickName() { 15 | return this.getString("nickName"); 16 | } 17 | } -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/handler/GetTemperatureHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.game.TemperatureResult; 5 | 6 | /** 7 | * 获取温度信息结果回调 8 | */ 9 | public interface GetTemperatureHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/pay/handler/ProductPayHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.pay.handler; 2 | 3 | 4 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 5 | import com.huawei.hms.support.api.pay.ProductPayResultInfo; 6 | 7 | /** 8 | * 商品编码支付结果回调 9 | */ 10 | public interface ProductPayHandler extends ICallbackResult { 11 | } 12 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/pay/handler/GetProductDetailsHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.pay.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.pay.ProductDetailResult; 5 | 6 | /** 7 | * 获取商品信息结果回调 8 | */ 9 | public interface GetProductDetailsHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/messages/AVIMRecalledMessage.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.messages; 2 | 3 | import com.avos.avoscloud.im.v2.AVIMMessageType; 4 | import com.avos.avoscloud.im.v2.AVIMTypedMessage; 5 | 6 | /** 7 | * Created by wli on 2017/6/28. 8 | */ 9 | 10 | @AVIMMessageType(type = AVIMMessageType.RECALLED_MESSAGE_TYPE) 11 | public class AVIMRecalledMessage extends AVIMTypedMessage { 12 | } -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/push/AVConnectivityListener.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.push; 2 | 3 | import android.content.Context; 4 | 5 | /** 6 | * Created by yangchaozhong on 3/14/14. 7 | */ 8 | public interface AVConnectivityListener { 9 | void onMobile(Context context); 10 | void onWifi(Context context); 11 | void onOtherConnected(Context context); 12 | void onNotConnected(Context context); 13 | } 14 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/AVLiveQuerySubscribeCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by wli on 2017/5/31. 5 | */ 6 | 7 | public abstract class AVLiveQuerySubscribeCallback extends AVCallback { 8 | 9 | public abstract void done(AVException e); 10 | 11 | @Override 12 | protected void internalDone0(Void aVoid, AVException avException) { 13 | done(avException); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/handler/GetCertificationInfoHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.game.PlayerCertificationInfo; 5 | 6 | /** 7 | * 获取实名信息结果回调 8 | */ 9 | public interface GetCertificationInfoHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/IActivityPauseCallback.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import android.app.Activity; 4 | 5 | /** 6 | * Activity onPause 事件回调接口 7 | */ 8 | public interface IActivityPauseCallback { 9 | 10 | /** 11 | * Activity onPause回调 12 | * @param activity 发生 onPause 事件的activity 13 | */ 14 | void onActivityPause(Activity activity); 15 | } 16 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/IActivityResumeCallback.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import android.app.Activity; 4 | 5 | /** 6 | * Activity onResume 事件回调接口 7 | */ 8 | public interface IActivityResumeCallback { 9 | 10 | /** 11 | * Activity onResume回调 12 | * @param activity 发生 onResume 事件的activity 13 | */ 14 | void onActivityResume(Activity activity); 15 | } 16 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/handler/GetCertificationIntentHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.game.CertificateIntentResult; 5 | 6 | /** 7 | * 获取实名Intent结果回调 8 | */ 9 | public interface GetCertificationIntentHandler extends ICallbackResult { 10 | } 11 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/mock/GameScore.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.mock; 2 | 3 | import com.alibaba.fastjson.annotation.JSONType; 4 | import com.avos.avoscloud.AVClassName; 5 | import com.avos.avoscloud.AVObject; 6 | 7 | /** 8 | * Created by zhangxiaobo on 15/3/13. 9 | */ 10 | @AVClassName("GameScore") 11 | @JSONType(asm = false) 12 | public class GameScore extends AVObject { 13 | public String name; 14 | } 15 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/IClientConnectCallback.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import com.huawei.hms.api.HuaweiApiClient; 4 | 5 | /** 6 | * HuaweiApiClient 连接结果回调 7 | */ 8 | public interface IClientConnectCallback { 9 | /** 10 | * HuaweiApiClient 连接结果回调 11 | * @param rst 结果码 12 | * @param client HuaweiApiClient 实例 13 | */ 14 | void onConnect(int rst, HuaweiApiClient client); 15 | } 16 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/handler/LoginHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game.handler; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | import com.huawei.hms.support.api.entity.game.GameUserData; 5 | 6 | /** 7 | * 游戏登录结果回调接口 8 | */ 9 | public interface LoginHandler extends ICallbackResult { 10 | 11 | /** 12 | * 登录帐号发生变化时回调 13 | */ 14 | void onChange(); 15 | } 16 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/drawable/avoscloud_search_result_open_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/handler/ICheckLoginSignHandler.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game.handler; 2 | 3 | /** 4 | * 游戏登录结果验签结果回调 5 | */ 6 | public interface ICheckLoginSignHandler { 7 | /** 8 | * 游戏登录结果验签结果回调 9 | * @param code 结果码,字符串类型,可能为null 10 | * @param resultDesc 结果描述 11 | * @param isCheckSuccess 是否验签成功 12 | */ 13 | void onCheckResult(String code, String resultDesc, boolean isCheckSuccess); 14 | } 15 | -------------------------------------------------------------------------------- /avoscloud-fcm/src/test/java/com/avos/avoscloud/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/IntentUtil.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.content.Intent; 4 | import android.os.Build; 5 | 6 | public class IntentUtil { 7 | // http://stackoverflow.com/questions/9783704/broadcast-receiver-onreceive-never-called 8 | public static Intent setupIntentFlags(Intent i) { 9 | if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) { 10 | i.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 11 | } 12 | return i; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVDeleteOption.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * AVDeleteOption is a option value for AVObject delete operation 5 | */ 6 | public class AVDeleteOption { 7 | AVQuery matchQuery; 8 | 9 | /** 10 | * Only delete object when query matches AVObject instance data 11 | * 12 | * @param query 13 | * @return 14 | */ 15 | 16 | public AVDeleteOption query(AVQuery query) { 17 | this.matchQuery = query; 18 | return this; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /avoscloud-sns/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/java/com/avos/avoscloud/AVOnlineConfigureListener.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import org.json.JSONObject; 4 | 5 | /** 6 | * 在线参数监听器,此接口只在在线参数有变化的时候才会回调 7 | * 8 | * @since 1.4.2 9 | * @author dennis 10 | * 11 | */ 12 | public interface AVOnlineConfigureListener { 13 | /** 14 | * 此接口只在在线参数有变化的时候才会回调,所有在线参数都是key-value结构,key和value都为字符串。 15 | * 16 | * @param data 在线参数的JSON数据对象 17 | */ 18 | public void onDataReceived(JSONObject data); 19 | } 20 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/StrUtils.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | /** 4 | * 工具类 5 | */ 6 | public final class StrUtils { 7 | /** 8 | * 返回对象的描述,这里为了避免用户数据隐私的泄露,只是返回对象本身的描述 类名@hashcode 9 | * @param object 对象 10 | * @return 对象的描述 11 | */ 12 | public static String objDesc(Object object) { 13 | return object == null ? "null" : (object.getClass().getName()+'@'+Integer.toHexString(object.hashCode())); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/UpdatePasswordCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * 这个方法是在针对一个已经登陆用户修改密码请求 5 | * 6 | */ 7 | public abstract class UpdatePasswordCallback extends AVCallback { 8 | /** 9 | * 请用您需要在修改密码完成以后的逻辑重载本方法 10 | * 11 | * @param e 修改密码请求可能产生的异常 12 | * 13 | */ 14 | public abstract void done(AVException e); 15 | 16 | @Override 17 | protected final void internalDone0(Void t, AVException avException) { 18 | this.done(avException); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/IActivityDestroyedCallback.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import android.app.Activity; 4 | 5 | /** 6 | * Activity onDestroyed 事件回调接口 7 | */ 8 | public interface IActivityDestroyedCallback { 9 | 10 | /** 11 | * Activity onPause回调 12 | * @param activityDestroyed 发生 onDestroyed 事件的activity 13 | * @param activityNxt 下个要显示的activity 14 | */ 15 | void onActivityDestroyed(Activity activityDestroyed, Activity activityNxt); 16 | } 17 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/IOUtils.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import java.io.Closeable; 4 | import java.io.IOException; 5 | 6 | /** 7 | * 工具类 8 | */ 9 | public final class IOUtils { 10 | public static void close(Closeable object) { 11 | if (object != null) { 12 | try { 13 | object.close(); 14 | } catch (IOException e) { 15 | HMSAgentLog.d("close fail"); 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/InboxStatusFindCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * 本类是用于Status中的收件箱查询 5 | * 6 | * 增加了一个end属性,来判断是否查询到最老的一页数据 7 | * 8 | * @author lbt05 9 | * 10 | */ 11 | public abstract class InboxStatusFindCallback extends FindCallback { 12 | boolean end; 13 | 14 | /** 15 | * 判断是否查询到最老的一页数据 16 | * 17 | * @return 18 | */ 19 | public boolean isEnd() { 20 | return end; 21 | } 22 | 23 | protected void setEnd(boolean end) { 24 | this.end = end; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /avoscloud-sns/src/main/res/layout/avoscloud_sns_web_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/layout/avoscloud_search_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /avoscloud-sns/src/main/java/com/avos/sns/SNSCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.sns; 2 | 3 | /** 4 | * User: summer Date: 13-4-11 Time: PM3:46 5 | */ 6 | public abstract class SNSCallback { 7 | 8 | 9 | /** 10 | * Override this function with the code you want to run after the save is complete. 11 | * 12 | * @param e The exception raised by the save, or null if it succeeded. 13 | */ 14 | public abstract void done(SNSBase base, SNSException e); 15 | 16 | final void internalDone(SNSBase base, SNSException e) { 17 | done(base, e); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMMessageType.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | @Retention(RetentionPolicy.RUNTIME) 7 | public @interface AVIMMessageType { 8 | int type(); 9 | 10 | int TEXT_MESSAGE_TYPE = -1; 11 | int IMAGE_MESSAGE_TYPE = -2; 12 | int AUDIO_MESSAGE_TYPE = -3; 13 | int VIDEO_MESSAGE_TYPE = -4; 14 | int LOCATION_MESSAGE_TYPE = -5; 15 | int FILE_MESSAGE_TYPE = -6; 16 | int RECALLED_MESSAGE_TYPE = -127; 17 | } 18 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/CloudQueryCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * CloudQueryCallback 是通过AVQuery直接调用cloudQuery查询之后被调用的回调函数 6 | *

7 | */ 8 | 9 | public abstract class CloudQueryCallback 10 | extends AVCallback { 11 | public abstract void done(AVCloudQueryResult result, AVException avException); 12 | 13 | @Override 14 | protected final void internalDone0(AVCloudQueryResult returnValue, AVException e) { 15 | done(returnValue, e); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/callback/AVServerDateCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * Created by lbt05 on 8/7/15. 10 | */ 11 | public abstract class AVServerDateCallback extends AVCallback { 12 | 13 | public abstract void done(Date serverDate, AVException e); 14 | 15 | @Override 16 | protected void internalDone0(Date date, AVException avException) { 17 | this.done(date, avException); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/values-zh/avoscloud_feedback_string.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 用户反馈 4 | 发送 5 | 您的反馈有了新回复 6 | 填写反馈 7 | 联系方式 8 | 刚刚 9 | 选取图片 10 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/session/LoginPacket.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.session; 2 | 3 | import com.avos.avoscloud.Messages; 4 | 5 | /** 6 | * Created by nsun on 4/24/14. 7 | */ 8 | public class LoginPacket extends CommandPacket { 9 | 10 | public LoginPacket() { 11 | this.setCmd("login"); 12 | } 13 | 14 | @Override 15 | protected Messages.GenericCommand.Builder getGenericCommandBuilder() { 16 | Messages.GenericCommand.Builder builder = super.getGenericCommandBuilder(); 17 | builder.setCmd(Messages.CommandType.login); 18 | return builder; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/utils/TestConstants.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.utils; 2 | 3 | /** 4 | * Created by zhangxiaobo on 15/2/6. 5 | */ 6 | public class TestConstants { 7 | private TestConstants() {} 8 | 9 | public static final String TEST_APP_ID = "holxaranoygah453iei0tuwo7lg0x3jut97eyk05cuwdqty0"; 10 | public static final String TEST_APP_KEY = "4kmx6fcj5trt2ggdzekfsf6xvk5zjif20uctz4jmd8xgw0we"; 11 | 12 | public static final String HEADER_APP_ID = "X-avoscloud-Application-Id"; 13 | public static final String HEADER_APP_KEY = "X-avoscloud-Application-Key"; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /common.function: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function fail_and_exit() 4 | { 5 | echo "$*, Failed and EXIT " 6 | exit 1 7 | } 8 | 9 | function get_current_branch() 10 | { 11 | git branch | sed -n -e 's/^\* \(.*\)/\1/p' 12 | } 13 | 14 | function json_replace() 15 | { 16 | # if hash key does not exist, will append to json 17 | ruby -e " 18 | require 'rubygems' 19 | require 'json' 20 | exit 1 unless ARGV.count > 2 21 | json = JSON.parse( File.read( ARGV[0] ) ) 22 | json[ ARGV[1] ] = ARGV[2] 23 | File.open( ARGV[0], 'w' ) { | file | file.write( JSON.dump( json ) ) } 24 | exit 0 25 | " $1 $2 $3 26 | } 27 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/values/avoscloud_feedback_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #888 5 | #fff 6 | #333333 7 | #000 8 | #56b8f4 9 | #898989 10 | #f8f8f8 11 | 12 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/upload/Uploader.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.upload; 2 | 3 | import com.avos.avoscloud.AVException; 4 | 5 | /** 6 | * Created by lbt05 on 6/12/16. 7 | */ 8 | public interface Uploader { 9 | AVException doWork(); 10 | 11 | String getFinalUrl(); 12 | String getFinalObjectId(); 13 | 14 | void execute(); 15 | 16 | void publishProgress(int percentage); 17 | 18 | boolean cancel(boolean interrupt); 19 | 20 | boolean isCancelled(); 21 | 22 | static interface UploadCallback { 23 | void finishedWithResults(String finalObjectId, String finalUrl); 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMMessageUpdatedCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMMessage; 6 | 7 | /** 8 | * Created by wli on 2017/6/29. 9 | */ 10 | public abstract class AVIMMessageUpdatedCallback extends AVCallback { 11 | 12 | public abstract void done(AVIMMessage message, AVException e); 13 | 14 | @Override 15 | protected void internalDone0(AVIMMessage message, AVException avException) { 16 | done(message, avException); 17 | } 18 | } -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/push/AVShutdownReceiver.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.push; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | /** 8 | * Created by yangchaozhong on 3/14/14. 9 | */ 10 | public class AVShutdownReceiver extends BroadcastReceiver { 11 | 12 | private AVShutdownListener listener; 13 | 14 | public AVShutdownReceiver(AVShutdownListener listener) { 15 | this.listener = listener; 16 | } 17 | 18 | public void onReceive(Context context, Intent intent) { 19 | this.listener.onShutdown(context); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/androidTest/java/com/avos/avoscloud/feedback/test/utils/TestConstants.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.feedback.test.utils; 2 | 3 | /** 4 | * Created by zhangxiaobo on 15/2/6. 5 | */ 6 | public class TestConstants { 7 | private TestConstants() {} 8 | 9 | public static final String TEST_APP_ID = "holxaranoygah453iei0tuwo7lg0x3jut97eyk05cuwdqty0"; 10 | public static final String TEST_APP_KEY = "4kmx6fcj5trt2ggdzekfsf6xvk5zjif20uctz4jmd8xgw0we"; 11 | 12 | public static final String HEADER_APP_ID = "X-avoscloud-Application-Id"; 13 | public static final String HEADER_APP_KEY = "X-avoscloud-Application-Key"; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ProgressCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * A ProgressCallback is used to get progress of an operation. 6 | *

7 | *

8 | * The easiest way to use a ProgressCallback is through an anonymous inner class. 9 | *

10 | */ 11 | public abstract class ProgressCallback extends AVCallback { 12 | public abstract void done(Integer percentDone); 13 | 14 | /** 15 | * Override this function with your desired callback. 16 | */ 17 | protected final void internalDone0(Integer returnValue, AVException e) { 18 | done(returnValue); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMChatRoom.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | /** 7 | * Created by fengjunwen on 2017/11/2. 8 | */ 9 | 10 | public class AVIMChatRoom extends AVIMConversation { 11 | protected AVIMChatRoom(AVIMClient client, String conversationId){ 12 | super(client, conversationId); 13 | setTransientForInit(true); 14 | } 15 | 16 | protected AVIMChatRoom(AVIMClient client, List members, 17 | Map attributes) { 18 | super(client, members, attributes, true); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/callback/AVFriendshipCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.AVFriendship; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * AVFriendshipQuery的getInBackground中得回调类 11 | */ 12 | public abstract class AVFriendshipCallback extends AVCallback { 13 | 14 | public abstract void done(AVFriendship friendship, AVException e); 15 | 16 | @Override 17 | protected final void internalDone0(AVFriendship returnValue, AVException e) { 18 | done(returnValue, e); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMConversationMemberCountCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMException; 6 | 7 | /** 8 | * 查询在线用户数目的回调抽象类 9 | */ 10 | public abstract class AVIMConversationMemberCountCallback extends AVCallback { 11 | public abstract void done(Integer memberCount, AVIMException e); 12 | 13 | @Override 14 | protected final void internalDone0(Integer returnValue, AVException e) { 15 | done(returnValue, AVIMException.wrapperAVException(e)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/test/java/com/avos/avoscloud/AVUtilsBase64Test.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.robolectric.RobolectricTestRunner; 6 | import org.robolectric.annotation.Config; 7 | 8 | /** 9 | * Created by fengjunwen on 2017/9/19. 10 | */ 11 | @RunWith(RobolectricTestRunner.class) 12 | @Config(constants = BuildConfig.class, manifest = Config.NONE, sdk = 21) 13 | public class AVUtilsBase64Test { 14 | @Test 15 | public void testDecode() { 16 | String data = "k7H16jjMiHfll6UuAoMK/OilCZc="; 17 | byte[] decodeData = AVUtils.base64Decode(data);//.decodeBase64(data); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/mock/Game.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.mock; 2 | 3 | import com.alibaba.fastjson.annotation.JSONType; 4 | import com.avos.avoscloud.AVClassName; 5 | import com.avos.avoscloud.AVObject; 6 | 7 | /** 8 | * Created by zhangxiaobo on 15/3/16. 9 | */ 10 | @AVClassName("Game") 11 | @JSONType(asm = false) 12 | public class Game extends AVObject { 13 | public Game() {} 14 | 15 | public Game(String name) { 16 | super(); 17 | setName(name); 18 | } 19 | 20 | public String getName() { 21 | return getString("name"); 22 | } 23 | 24 | public void setName(String value) { 25 | put("name", value); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMConversationCreatedCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMConversation; 6 | import com.avos.avoscloud.im.v2.AVIMException; 7 | 8 | public abstract class AVIMConversationCreatedCallback extends AVCallback { 9 | public abstract void done(AVIMConversation conversation, AVIMException e); 10 | 11 | @Override 12 | protected final void internalDone0(AVIMConversation returnValue, AVException e) { 13 | done(returnValue, AVIMException.wrapperAVException(e)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVObjectReferenceCount.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | public class AVObjectReferenceCount { 6 | AVObject value; 7 | AtomicInteger count; 8 | 9 | public AVObjectReferenceCount(AVObject o) { 10 | this.value = o; 11 | count = new AtomicInteger(1); 12 | } 13 | 14 | public int increment() { 15 | return count.incrementAndGet(); 16 | } 17 | 18 | public int desc() { 19 | return count.decrementAndGet(); 20 | } 21 | 22 | public int getCount() { 23 | return count.get(); 24 | } 25 | 26 | public AVObject getValue() { 27 | return value; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | 15 | # ADT 16 | .classpath 17 | .project 18 | .settings 19 | local.properties 20 | bin 21 | gen 22 | _layouts 23 | proguard.cfg 24 | 25 | # OSX 26 | .DS_Store 27 | 28 | # Gradle files 29 | .gradle/ 30 | build/ 31 | 32 | # Local configuration file (sdk path, etc) 33 | 34 | # Proguard folder generated by Eclipse 35 | proguard/ 36 | 37 | # IDEA 38 | **/*.iml 39 | *.iml 40 | *.ipr 41 | *.iws 42 | out 43 | .idea 44 | 45 | # Maven 46 | target 47 | release.properties 48 | pom.xml.* 49 | 50 | # VIM 51 | *~ 52 | *.swp 53 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMClientCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMClient; 6 | import com.avos.avoscloud.im.v2.AVIMException; 7 | 8 | /** 9 | * Created by lbt05 on 3/19/15. 10 | */ 11 | public abstract class AVIMClientCallback extends AVCallback { 12 | public abstract void done(AVIMClient client, AVIMException e); 13 | 14 | @Override 15 | protected void internalDone0(AVIMClient client, AVException avException) { 16 | done(client, AVIMException.wrapperAVException(avException)); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVCaptchaDigest.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by wli on 2017/5/10. 5 | */ 6 | public class AVCaptchaDigest { 7 | 8 | /** 9 | * vaptcha token 10 | */ 11 | private String nonce; 12 | 13 | /** 14 | * captcha image url 15 | */ 16 | private String url; 17 | 18 | String getNonce() { 19 | return nonce; 20 | } 21 | 22 | void setNonce(String nonce) { 23 | this.nonce = nonce; 24 | } 25 | 26 | /** 27 | * get the captcha image url 28 | * @return image url 29 | */ 30 | public String getUrl() { 31 | return url; 32 | } 33 | 34 | void setUrl(String url) { 35 | this.url = url; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMMessageRecalledCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.messages.AVIMRecalledMessage; 6 | 7 | /** 8 | * Created by wli on 2017/6/28. 9 | */ 10 | 11 | public abstract class AVIMMessageRecalledCallback extends AVCallback { 12 | 13 | public abstract void done(AVIMRecalledMessage recalledMessage, AVException e); 14 | 15 | @Override 16 | protected void internalDone0(AVIMRecalledMessage avimRecalledMessage, AVException avException) { 17 | done(avimRecalledMessage, avException); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMOnlineClientsCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMException; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 11 | * 作为AVIMClient方法中checkOnlineClients的回调方法 12 | */ 13 | public abstract class AVIMOnlineClientsCallback extends AVCallback> { 14 | public abstract void done(List object, AVIMException e); 15 | 16 | @Override 17 | protected final void internalDone0(List object, AVException error) { 18 | this.done(object, AVIMException.wrapperAVException(error)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /avoscloud-fcm/src/main/java/com/avos/avoscloud/AVFCMJobService.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.util.Log; 4 | 5 | import com.firebase.jobdispatcher.JobParameters; 6 | import com.firebase.jobdispatcher.JobService; 7 | 8 | /** 9 | * Created by fengjunwen on 2018/8/28. 10 | */ 11 | 12 | public class AVFCMJobService extends JobService { 13 | private static final String TAG = "AVFCMJobService"; 14 | 15 | public boolean onStartJob(JobParameters job) { 16 | Log.d(TAG, "Performing long running task in scheduled job"); 17 | return false; 18 | } 19 | 20 | public boolean onStopJob(JobParameters job) { 21 | Log.d(TAG, "end long running task in scheduled job"); 22 | return false; 23 | } 24 | } -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/values/avoscloud_feedback_string.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | AvosCloudFeedback 4 | Feedback 5 | Send 6 | Got new reply 7 | Write your feedback 8 | Contact information 9 | Just Now 10 | Select Image 11 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMClientStatusCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMClient; 6 | import com.avos.avoscloud.im.v2.AVIMException; 7 | 8 | /** 9 | * 获取AVIMClient当前连接状态的回调类 10 | * Created by lbt05 on 8/6/15. 11 | */ 12 | public abstract class AVIMClientStatusCallback extends AVCallback { 13 | public abstract void done(AVIMClient.AVIMClientStatus client); 14 | 15 | @Override 16 | protected void internalDone0(AVIMClient.AVIMClientStatus status, AVException avException) { 17 | done(status); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/CallbackCodeRunnable.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackCode; 4 | 5 | /** 6 | * 回调线程 7 | */ 8 | public class CallbackCodeRunnable implements Runnable { 9 | 10 | private ICallbackCode handlerInner; 11 | private int rtnCodeInner; 12 | 13 | public CallbackCodeRunnable(ICallbackCode handler, int rtnCode) { 14 | handlerInner = handler; 15 | rtnCodeInner = rtnCode; 16 | } 17 | 18 | @Override 19 | public void run() { 20 | if (handlerInner != null) { 21 | handlerInner.onResult(rtnCodeInner); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/EmptyConnectCallback.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import com.huawei.hms.api.HuaweiApiClient; 4 | 5 | /** 6 | * 连接client空回调 7 | */ 8 | public class EmptyConnectCallback implements IClientConnectCallback { 9 | 10 | private String msgPre; 11 | 12 | public EmptyConnectCallback(String msgPre){ 13 | this.msgPre = msgPre; 14 | } 15 | 16 | /** 17 | * HuaweiApiClient 连接结果回调 18 | * 19 | * @param rst 结果码 20 | * @param client HuaweiApiClient 实例 21 | */ 22 | @Override 23 | public void onConnect(int rst, HuaweiApiClient client) { 24 | HMSAgentLog.d(msgPre + rst); 25 | } 26 | } -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/SignatureCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import com.avos.avoscloud.SignatureFactory.SignatureException; 4 | 5 | abstract class SignatureCallback { 6 | 7 | public abstract Signature computeSignature() throws SignatureException; 8 | 9 | public abstract void onSignatureReady(Signature sig, AVException e); 10 | 11 | /** 12 | * 是否使用缓存的signature 13 | * 仅仅是在v2中得自动重连才会使用 14 | * 15 | * @return 16 | */ 17 | public boolean useSignatureCache() { 18 | return false; 19 | } 20 | 21 | /** 22 | * 是否需要缓存signature 23 | * 仅仅是在v2的open API中间才会需要去缓存 24 | * 25 | * @return 26 | */ 27 | public boolean cacheSignature() { 28 | return false; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/utils/AVFileUtil.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.utils; 2 | 3 | import com.avos.avoscloud.AVFile; 4 | import com.avos.avoscloud.AVUtils; 5 | 6 | /** 7 | * Created by fengjunwen on 2017/8/16. 8 | */ 9 | 10 | public class AVFileUtil { 11 | public static String getFileMimeType(AVFile avFile) { 12 | String fileName = avFile.getName(); 13 | String fileUrl = avFile.getUrl(); 14 | String mimeType = AVFile.DEFAULTMIMETYPE; 15 | if (!AVUtils.isBlankString(fileName)) { 16 | mimeType = AVUtils.getMimeTypeFromLocalFile(fileName); 17 | } else if (!AVUtils.isBlankString(fileUrl)) { 18 | mimeType = AVUtils.getMimeTypeFromUrl(fileUrl); 19 | } 20 | return mimeType; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | /** 4 | * 继承此类来处理与消息相关的事件 5 | */ 6 | public class AVIMMessageHandler extends MessageHandler { 7 | /** 8 | * 重载此方法来处理接收消息 9 | * 10 | * @param message 11 | * @param conversation 12 | * @param client 13 | */ 14 | @Override 15 | public void onMessage(AVIMMessage message, AVIMConversation conversation, AVIMClient client) { 16 | 17 | } 18 | 19 | /** 20 | * 重载此方法来处理消息回执 21 | * 22 | * @param message 23 | * @param conversation 24 | * @param client 25 | */ 26 | @Override 27 | public void onMessageReceipt(AVIMMessage message, AVIMConversation conversation, AVIMClient client) { 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMSingleMessageQueryCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMException; 6 | import com.avos.avoscloud.im.v2.AVIMMessage; 7 | 8 | /** 9 | * 针对某些明确知道只有一个消息返回的消息查询接口的回调 10 | * 11 | * 比如getLastMessage 12 | */ 13 | public abstract class AVIMSingleMessageQueryCallback extends AVCallback { 14 | 15 | 16 | public abstract void done(AVIMMessage msg, AVIMException e); 17 | 18 | @Override 19 | protected final void internalDone0(AVIMMessage returnValue, AVException e) { 20 | done(returnValue, AVIMException.wrapperAVException(e)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /avoscloud-push/src/test/java/com/avos/avoscloud/im/v2/video/AVIMVideoCaptureTests.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.video; 2 | 3 | import android.app.Activity; 4 | 5 | import com.avos.avoscloud.BuildConfig; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | import org.robolectric.RobolectricTestRunner; 10 | import org.robolectric.annotation.Config; 11 | 12 | /** 13 | * Created by fengjunwen on 2017/8/25. 14 | */ 15 | 16 | @RunWith(RobolectricTestRunner.class) 17 | @Config(constants = BuildConfig.class, manifest = Config.NONE, sdk = 21) 18 | public class AVIMVideoCaptureTests { 19 | @Test 20 | public void testSystemAppMethod() { 21 | Activity test = new Activity(); 22 | AVIMVideoCapture.dispatchTakeVideoIntent(test); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMTypedMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | /** 4 | * 继承此类来处理与自定义消息相关的事件 5 | */ 6 | public class AVIMTypedMessageHandler extends MessageHandler { 7 | /** 8 | * 重载此方法来处理接收消息 9 | * 10 | * @param message 11 | * @param conversation 12 | * @param client 13 | */ 14 | @Override 15 | public void onMessage(T message, AVIMConversation conversation, AVIMClient client) { 16 | 17 | } 18 | 19 | /** 20 | * 重载此方法来处理消息回执 21 | * 22 | * @param message 23 | * @param conversation 24 | * @param client 25 | */ 26 | @Override 27 | public void onMessageReceipt(T message, AVIMConversation conversation, AVIMClient client) { 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /avoscloud-push/src/test/java/com/avos/avoscloud/im/v2/audio/AVIMAudioRecorderTests.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.audio; 2 | 3 | import com.avos.avoscloud.BuildConfig; 4 | 5 | import org.junit.Assert; 6 | import org.junit.Test; 7 | import org.junit.runner.RunWith; 8 | import org.robolectric.RobolectricTestRunner; 9 | import org.robolectric.annotation.Config; 10 | 11 | /** 12 | * Created by fengjunwen on 2017/8/25. 13 | */ 14 | 15 | @RunWith(RobolectricTestRunner.class) 16 | @Config(constants = BuildConfig.class, manifest = Config.NONE, sdk = 21) 17 | public class AVIMAudioRecorderTests { 18 | @Test 19 | public void testDummy() { 20 | AVIMAudioRecorder recorder = new AVIMAudioRecorder("./tmp.dat", null); 21 | Assert.assertNotNull(recorder); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/test/java/com/avos/avoscloud/AVQueryTest.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | import org.junit.runner.RunWith; 6 | import org.robolectric.RobolectricTestRunner; 7 | import org.robolectric.annotation.Config; 8 | 9 | /** 10 | * Created by fengjunwen on 2017/9/11. 11 | */ 12 | 13 | @RunWith(RobolectricTestRunner.class) 14 | @Config(constants = BuildConfig.class, manifest = Config.NONE, sdk = 21) 15 | public class AVQueryTest { 16 | @Test 17 | public void testCloneMethod() { 18 | AVQuery query = new AVQuery<>("Person"); 19 | AVQuery newQuery = query.clone(); 20 | Assert.assertNotNull(newQuery); 21 | Assert.assertTrue("Person".equals(newQuery.getClassName())); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVCloudQueryResult.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.Collections; 4 | import java.util.List; 5 | 6 | /** 7 | * 8 | * CloudQuery的返回值 9 | * 10 | * 包含符合CloudQuery的一组对象 和 符合query的对象数(在指定了count查询的时候 比如:"select count(*) from _User") 11 | * 12 | */ 13 | public class AVCloudQueryResult { 14 | List results = Collections.emptyList(); 15 | int count; 16 | 17 | public List getResults() { 18 | return results; 19 | } 20 | 21 | void setResults(List results) { 22 | this.results = results; 23 | } 24 | 25 | public int getCount() { 26 | return count; 27 | } 28 | 29 | void setCount(int count) { 30 | this.count = count; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMMessagesQueryCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMException; 6 | import com.avos.avoscloud.im.v2.AVIMMessage; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 消息记录查询的回调 12 | * Created by lbt05 on 2/3/15. 13 | */ 14 | public abstract class AVIMMessagesQueryCallback extends AVCallback> { 15 | 16 | public abstract void done(List messages, AVIMException e); 17 | 18 | @Override 19 | protected final void internalDone0(List returnValue, AVException e) { 20 | done(returnValue, AVIMException.wrapperAVException(e)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVExceptionHolder.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created with IntelliJ IDEA. User: dennis (xzhuang@avos.com) Date: 13-7-22 Time: 上午11:37 5 | */ 6 | public final class AVExceptionHolder { 7 | 8 | private static final ThreadLocal local = new ThreadLocal() { 9 | @Override 10 | protected AVException initialValue() { 11 | return null; 12 | } 13 | }; 14 | 15 | public final static void add(AVException e) { 16 | local.set(e); 17 | } 18 | 19 | public final static boolean exists() { 20 | return local.get() != null; 21 | } 22 | 23 | public final static AVException remove() { 24 | AVException e = local.get(); 25 | local.remove(); 26 | return e; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVRuntimeException.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * AVOSCloud runtime exception. 5 | * 6 | * @author dennis 7 | * 8 | */ 9 | public class AVRuntimeException extends RuntimeException { 10 | 11 | /** 12 | * 13 | */ 14 | private static final long serialVersionUID = 1L; 15 | 16 | public AVRuntimeException() { 17 | super(); 18 | 19 | } 20 | 21 | public AVRuntimeException(String detailMessage, Throwable throwable) { 22 | super(detailMessage, throwable); 23 | 24 | } 25 | 26 | public AVRuntimeException(String detailMessage) { 27 | super(detailMessage); 28 | 29 | } 30 | 31 | public AVRuntimeException(Throwable throwable) { 32 | super(throwable); 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/FollowCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | 4 | 5 | /** 6 | * Created with IntelliJ IDEA. User: zhuzeng Date: 12/25/13 Time: 10:05 AM To change this template 7 | * use File | Settings | File Templates. 8 | */ 9 | 10 | public abstract class FollowCallback extends AVCallback { 11 | /** 12 | * Override this function with the code you want to run after the fetch is complete. 13 | * 14 | * @param object The object that was retrieved, or null if it did not succeed. 15 | * @param e The exception raised by the save, or null if it succeeded. 16 | */ 17 | public abstract void done(T object, AVException e); 18 | 19 | protected final void internalDone0(T returnValue, AVException e) { 20 | done(returnValue, e); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMConversationCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMException; 6 | 7 | /** 8 | * 作为Conversation操作的回调抽象类 9 | */ 10 | public abstract class AVIMConversationCallback extends AVCallback { 11 | 12 | /** 13 | * Override this function with the code you want to run after the save is complete. 14 | * 15 | * @param e The exception raised by the save, or null if it succeeded. 16 | */ 17 | public abstract void done(AVIMException e); 18 | 19 | @Override 20 | protected final void internalDone0(java.lang.Void returnValue, AVException e) { 21 | done(AVIMException.wrapperAVException(e)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMConversationQueryCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import java.util.List; 4 | 5 | import com.avos.avoscloud.AVCallback; 6 | import com.avos.avoscloud.AVException; 7 | import com.avos.avoscloud.im.v2.AVIMConversation; 8 | import com.avos.avoscloud.im.v2.AVIMException; 9 | 10 | /** 11 | * 从AVIMClient查询AVIMConversation时的回调抽象类 12 | */ 13 | public abstract class AVIMConversationQueryCallback 14 | extends AVCallback> { 15 | 16 | public abstract void done(List conversations, AVIMException e); 17 | 18 | @Override 19 | protected final void internalDone0(List returnValue, AVException e) { 20 | done(returnValue, AVIMException.wrapperAVException(e)); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/session/PeerBasedCommandPacket.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.session; 2 | 3 | import com.avos.avoscloud.Messages; 4 | import com.avos.avoscloud.im.v2.AVIMClient; 5 | 6 | /** 7 | * Created by nsun on 4/24/14. 8 | */ 9 | public class PeerBasedCommandPacket extends CommandPacket { 10 | 11 | private String peerId; 12 | 13 | public String getPeerId() { 14 | return peerId; 15 | } 16 | 17 | public void setPeerId(String peerId) { 18 | this.peerId = peerId; 19 | } 20 | 21 | @Override 22 | protected Messages.GenericCommand.Builder getGenericCommandBuilder() { 23 | Messages.GenericCommand.Builder builder = super.getGenericCommandBuilder(); 24 | if (null != getPeerId()) { 25 | builder.setPeerId(getPeerId()); 26 | } 27 | return builder; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/UIUtils.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import android.app.Activity; 4 | import android.view.WindowManager; 5 | 6 | /** 7 | * 工具类 8 | */ 9 | public final class UIUtils { 10 | /** 11 | * 判断当前activity是否为全屏 12 | * @param activity 当前activity 13 | * @return 是否全屏 14 | */ 15 | public static boolean isActivityFullscreen(Activity activity) 16 | { 17 | WindowManager.LayoutParams attrs = activity.getWindow().getAttributes(); 18 | if ((attrs.flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN) 19 | { 20 | return true; 21 | } 22 | else 23 | { 24 | return false; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/CallbackResultRunnable.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import com.huawei.android.hms.agent.common.handler.ICallbackResult; 4 | 5 | /** 6 | * 回调线程 7 | */ 8 | public class CallbackResultRunnable implements Runnable { 9 | 10 | private ICallbackResult handlerInner; 11 | private int rtnCodeInner; 12 | private R resultInner; 13 | 14 | public CallbackResultRunnable(ICallbackResult handler, int rtnCode, R payInfo) { 15 | handlerInner = handler; 16 | rtnCodeInner = rtnCode; 17 | resultInner = payInfo; 18 | } 19 | 20 | @Override 21 | public void run() { 22 | if (handlerInner != null) { 23 | handlerInner.onResult(rtnCodeInner, resultInner); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /avoscloud-push/src/test/java/com/avos/avoscloud/model/AVIMCustomMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.model; 2 | 3 | import com.avos.avoscloud.im.v2.AVIMClient; 4 | import com.avos.avoscloud.im.v2.AVIMConversation; 5 | import com.avos.avoscloud.im.v2.AVIMTypedMessageHandler; 6 | 7 | /** 8 | * Created by wli on 2017/8/29. 9 | */ 10 | 11 | public class AVIMCustomMessageHandler extends AVIMTypedMessageHandler { 12 | 13 | 14 | public AVIMCustomMessageHandler() { 15 | } 16 | 17 | @Override 18 | public void onMessage(AVIMCustomMessage message, AVIMConversation conversation, AVIMClient client) { 19 | 20 | } 21 | 22 | @Override 23 | public void onMessageReceipt(AVIMCustomMessage message, AVIMConversation conversation, AVIMClient client) { 24 | super.onMessageReceipt(message, conversation, client); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ObjectValueFilter.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.alibaba.fastjson.serializer.SerializerFeature; 5 | import com.alibaba.fastjson.serializer.ValueFilter; 6 | 7 | import org.json.JSONArray; 8 | import org.json.JSONObject; 9 | 10 | /** 11 | * 这个类主要是用来解决fastjson 遇到org.json.JSONObject与org.json.JSONArray没法正确序列化的问题 12 | * Created by lbt05 on 6/2/15. 13 | */ 14 | public class ObjectValueFilter implements ValueFilter { 15 | public static final ObjectValueFilter instance = new ObjectValueFilter(); 16 | 17 | @Override 18 | public Object process(Object object, String name, Object value) { 19 | if (value instanceof JSONObject || value instanceof JSONArray) { 20 | return JSON.parse(value.toString()); 21 | } 22 | return value; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /avoscloud-fcm/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/StatusCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created with IntelliJ IDEA. User: zhuzeng Date: 12/25/13 Time: 10:45 AM To change this template 5 | * use File | Settings | File Templates. 6 | */ 7 | 8 | 9 | public abstract class StatusCallback extends AVCallback { 10 | /** 11 | * Override this function with the code you want to run after the fetch is complete. 12 | * 13 | * @param statusObject The objects matching the query, or null if it failed. 14 | * @param avException The exception raised by the find, or null if it succeeded. 15 | */ 16 | public abstract void done(AVStatus statusObject, AVException avException); 17 | 18 | @Override 19 | protected final void internalDone0(AVStatus returnValue, AVException e) { 20 | done(returnValue, e); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/AVBroadcastReceiver.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | /** 8 | * Created with IntelliJ IDEA. User: tangxiaomin Date: 4/12/13 Time: 6:41 PM 9 | */ 10 | public class AVBroadcastReceiver extends BroadcastReceiver { 11 | 12 | 13 | @Override 14 | public void onReceive(Context context, Intent intent) { 15 | // intent完全有可能是null的情况,就太糟糕了 16 | // 难道刚刚开机的时候移动ISP还没有识别出来的时候就不去尝试连接了么? 17 | // if (AVUtils.isConnected(context)) { 18 | try { 19 | context.startService(new Intent(context, com.avos.avoscloud.PushService.class)); 20 | } catch (Exception ex) { 21 | LogUtil.log.e("failed to start PushService. cause: " + ex.getMessage()); 22 | } 23 | // } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMConversationSimpleResultCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMException; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by fengjunwen on 2017/12/20. 11 | */ 12 | 13 | public abstract class AVIMConversationSimpleResultCallback extends AVCallback> { 14 | /** 15 | * 结果处理函数 16 | * @param memberIdList 成员的 client id 列表 17 | * @param e 异常 18 | */ 19 | public abstract void done(List memberIdList, AVIMException e); 20 | 21 | @Override 22 | protected final void internalDone0(List returnValue, AVException e) { 23 | done(returnValue, AVIMException.wrapperAVException(e)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/mock/MockUser.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.mock; 2 | 3 | /** 4 | * Created by zhangxiaobo on 15/3/2. 5 | */ 6 | public class MockUser { 7 | public static final String NAME = "xiaobo"; 8 | public static final String PASSWORD = "123456"; 9 | public static final String NICKNAME = "jacob"; 10 | 11 | public static class Result { 12 | public static final String LOGIN = 13 | "{\"sessionToken\":\"4mg9cvexc1mp10y1yqzn0z9p9\",\"updatedAt\":\"2015-02-13T08:09:09.253Z\"" 14 | + ",\"objectId\":\"54cf556ee4b0fefed5711558\",\"username\":\"xiaobo\",\"createdAt\":" 15 | + "\"2015-02-02T10:46:06.460Z\",\"emailVerified\":false,\"authData\":{\"anonymous\":" 16 | + "{\"id\":\"60854727-6554-4d5a-bf08-34c24c7c540c\"}},\"mobilePhoneVerified\":false}"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /avoscloud-push/src/test/java/com/avos/avoscloud/model/AVIMCustomMessage.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.model; 2 | 3 | import com.avos.avoscloud.im.v2.AVIMMessageCreator; 4 | import com.avos.avoscloud.im.v2.AVIMMessageField; 5 | import com.avos.avoscloud.im.v2.AVIMMessageType; 6 | import com.avos.avoscloud.im.v2.AVIMTypedMessage; 7 | 8 | /** 9 | * Created by wli on 2017/8/29. 10 | */ 11 | @AVIMMessageType(type = -100) 12 | public class AVIMCustomMessage extends AVIMTypedMessage { 13 | 14 | public AVIMCustomMessage() { 15 | } 16 | 17 | @AVIMMessageField(name = "text") 18 | String text; 19 | 20 | public String getText() { 21 | return this.text; 22 | } 23 | 24 | public void setText(String text) { 25 | this.text = text; 26 | } 27 | 28 | public static final Creator CREATOR = new AVIMMessageCreator<>(AVIMCustomMessage.class); 29 | } 30 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/GenericRetryCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by lbt05 on 4/22/15. 5 | */ 6 | abstract class GenericRetryCallback extends GenericObjectCallback { 7 | GenericObjectCallback callback; 8 | 9 | public GenericRetryCallback(GenericObjectCallback callback) { 10 | this.callback = callback; 11 | } 12 | 13 | @Override 14 | public void onSuccess(String content, AVException e) { 15 | if (callback != null) { 16 | callback.onSuccess(content, e); 17 | } 18 | } 19 | 20 | @Override 21 | public void onFailure(Throwable error, String content) { 22 | if (callback != null) { 23 | callback.onFailure(error, content); 24 | } 25 | } 26 | 27 | @Override 28 | public boolean isRequestStatisticNeed() { 29 | return callback.isRequestStatisticNeed(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ops/AVOp.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.ops; 2 | 3 | import java.util.Map; 4 | 5 | import com.avos.avoscloud.AVObject; 6 | 7 | /** 8 | * A avoscloud operation 9 | * 10 | * @author apple 11 | * 12 | */ 13 | public interface AVOp extends Iterable { 14 | 15 | public static enum OpType { 16 | Set, Increment, AddUnique, Add, Remove, AddRelation, RemoveRelation, Delete, Null, Compound 17 | } 18 | 19 | public T cast(Class clazz); 20 | 21 | public String key(); 22 | 23 | public OpType type(); 24 | 25 | public Object apply(Object obj); 26 | 27 | public AVOp merge(AVOp other); 28 | 29 | public int size(); 30 | 31 | public AVOp get(int idx); 32 | 33 | public AVOp remove(int idx); 34 | 35 | public Map encodeOp(); 36 | 37 | public Object getValues(); 38 | } 39 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/AVIMEventHandler.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by lbt05 on 1/30/15. 5 | */ 6 | public abstract class AVIMEventHandler { 7 | public void processEvent(final int operation, final Object operator, final Object operand, 8 | final Object eventScene) { 9 | if (!AVUtils.isMainThread()) { 10 | if (!AVOSCloud.handler.post(new Runnable() { 11 | @Override 12 | public void run() { 13 | processEvent0(operation, operator, operand, eventScene); 14 | } 15 | })) { 16 | LogUtil.log.e("Post runnable to handler failed."); 17 | } 18 | } else { 19 | processEvent0(operation, operator, operand, eventScene); 20 | } 21 | }; 22 | 23 | protected abstract void processEvent0(int operation, Object operator, Object operand, 24 | Object eventScene); 25 | } 26 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVSaveOption.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * AVSaveOption is a option value for AVObject save operation 5 | */ 6 | public class AVSaveOption { 7 | 8 | AVQuery matchQuery; 9 | boolean fetchWhenSave; 10 | 11 | /** 12 | * refresh object value with latest data from remote server after AVObject saved 13 | * 14 | * @param fetchWhenSave set true to enable this functionality 15 | * @return 16 | */ 17 | public AVSaveOption setFetchWhenSave(boolean fetchWhenSave) { 18 | this.fetchWhenSave = fetchWhenSave; 19 | return this; 20 | } 21 | 22 | /** 23 | * Only save object when query matches AVObject instance data 24 | * 25 | * @param query 26 | * @return 27 | */ 28 | 29 | public AVSaveOption query(AVQuery query) { 30 | this.matchQuery = query; 31 | return this; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ops/CollectionAddOp.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.ops; 2 | 3 | import com.avos.avoscloud.AVObject; 4 | import com.avos.avoscloud.AVUtils; 5 | 6 | import java.util.Collection; 7 | import java.util.LinkedList; 8 | import java.util.List; 9 | 10 | /** 11 | * Created by lbt05 on 5/28/15. 12 | */ 13 | public abstract class CollectionAddOp extends CollectionOp { 14 | 15 | public CollectionAddOp() { 16 | super(); 17 | } 18 | 19 | public CollectionAddOp(String key, OpType type) { 20 | super(key, type); 21 | } 22 | 23 | public Object apply(Object oldValue) { 24 | List result = new LinkedList(); 25 | if (oldValue != null) { 26 | result.addAll((Collection) oldValue); 27 | } 28 | if (getValues() != null) { 29 | result.addAll(getValues()); 30 | } 31 | return result; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/RequestMobileCodeCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * RequestMobilePhoneVerify 用来验证用户的手机号码 6 | *

7 | *

8 | *  调用的范例如下 9 | *

10 | * 11 | *
12 |  * AVUser.requestMobilePhoneVerifyInBackgroud("12345678901",
13 |  *     new RequestMobileCodeCallback() {
14 |  *       public void done(AVException e) {
15 |  *         if (e == null) {
16 |  *           requestedSuccessfully();
17 |  *         } else {
18 |  *           requestDidNotSucceed();
19 |  *         }
20 |  *       }
21 |  *     });
22 |  * 
23 | */ 24 | public abstract class RequestMobileCodeCallback extends AVCallback { 25 | 26 | public abstract void done(AVException e); 27 | 28 | @Override 29 | protected final void internalDone0(Void t, AVException avException) { 30 | this.done(avException); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/StatusListCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created with IntelliJ IDEA. User: zhuzeng Date: 1/3/14 Time: 4:25 PM To change this template use 7 | * File | Settings | File Templates. 8 | */ 9 | public abstract class StatusListCallback extends AVCallback> { 10 | /** 11 | * Override this function with the code you want to run after the fetch is complete. 12 | * 13 | * @param statusObjects The objects matching the query, or null if it failed. 14 | * @param avException The exception raised by the find, or null if it succeeded. 15 | */ 16 | public abstract void done(List statusObjects, AVException avException); 17 | 18 | protected final void internalDone0(List returnValue, AVException e) { 19 | done(returnValue, e); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /avoscloud-fcm/src/androidTest/java/com/avos/avoscloud/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.avos.avoscloud.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/conversation/ConversationMemberRole.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.conversation; 2 | 3 | /** 4 | * 成员角色的枚举类型 5 | * 6 | * Created by fengjunwen on 2017/12/14. 7 | */ 8 | public enum ConversationMemberRole { 9 | MANAGER("Manager"), // 管理员 10 | MEMBER("Member"); // 普通成员 11 | private String role; 12 | ConversationMemberRole(String role) { 13 | this.role = role; 14 | } 15 | 16 | /** 17 | * 获取角色名字 18 | * @return 19 | */ 20 | public String getName() { 21 | return this.role; 22 | } 23 | 24 | /** 25 | * 从角色名字生成实例 26 | * @param role 角色名字 27 | * @return 28 | */ 29 | public static ConversationMemberRole fromString(String role) { 30 | for(ConversationMemberRole mr: ConversationMemberRole.values()) { 31 | if (mr.role.equalsIgnoreCase(role)) { 32 | return mr; 33 | } 34 | } 35 | return null; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/utils/TestExecutorService.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.utils; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | import java.util.concurrent.Future; 5 | import java.util.concurrent.FutureTask; 6 | import java.util.concurrent.ThreadPoolExecutor; 7 | import java.util.concurrent.TimeUnit; 8 | 9 | /** 10 | * Created by zhangxiaobo on 15/2/6. 11 | */ 12 | public class TestExecutorService extends ThreadPoolExecutor { 13 | public TestExecutorService(int corePoolSize, int maximumPoolSize, long keepAliveTime, 14 | TimeUnit unit, 15 | BlockingQueue workQueue) { 16 | super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue); 17 | } 18 | 19 | @Override 20 | public Future submit(Runnable runnable) { 21 | FutureTask futureTask = new FutureTask(runnable, null); 22 | futureTask.run(); 23 | return futureTask; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /android-sdk-all.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVMobilePhoneVerifyCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | public abstract class AVMobilePhoneVerifyCallback extends AVCallback { 4 | 5 | 6 | 7 | /** 8 | *

9 | * AVMobilePhoneVerifyCallback 用来验证用户的手机号码 10 | *

11 | *

12 | *  调用的范例如下 13 | *

14 | * 15 | *
16 |    * AVUser.verifyMobilePhoneInBackgroud("123456",
17 |    *     new AVMobilePhoneVerifyCallback() {
18 |    *       public void done(AVException e) {
19 |    *         if (e == null) {
20 |    *           requestedSuccessfully();
21 |    *         } else {
22 |    *           requestDidNotSucceed();
23 |    *         }
24 |    *       }
25 |    *     });
26 |    * 
27 | */ 28 | @Override 29 | protected final void internalDone0(Void t, AVException avException) { 30 | this.done(avException); 31 | } 32 | 33 | public abstract void done(AVException e); 34 | } 35 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/androidTest/java/com/avos/avoscloud/feedback/test/utils/TestExecutorService.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.feedback.test.utils; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | import java.util.concurrent.Future; 5 | import java.util.concurrent.FutureTask; 6 | import java.util.concurrent.ThreadPoolExecutor; 7 | import java.util.concurrent.TimeUnit; 8 | 9 | /** 10 | * Created by zhangxiaobo on 15/2/6. 11 | */ 12 | public class TestExecutorService extends ThreadPoolExecutor { 13 | public TestExecutorService(int corePoolSize, int maximumPoolSize, long keepAliveTime, 14 | TimeUnit unit, 15 | BlockingQueue workQueue) { 16 | super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue); 17 | } 18 | 19 | @Override 20 | public Future submit(Runnable runnable) { 21 | FutureTask futureTask = new FutureTask(runnable, null); 22 | futureTask.run(); 23 | return futureTask; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * User: summer Date: 13-4-11 Time: PM3:46 5 | */ 6 | public abstract class AVCallback { 7 | public void internalDone(final T t, final AVException avException) { 8 | if (mustRunOnUIThread() && !AVUtils.isMainThread()) { 9 | if (!AVOSCloud.handler.post(new Runnable() { 10 | @Override 11 | public void run() { 12 | internalDone0(t, avException); 13 | } 14 | })) { 15 | LogUtil.log.e("Post runnable to handler failed."); 16 | } 17 | } else { 18 | internalDone0(t, avException); 19 | } 20 | } 21 | 22 | protected boolean mustRunOnUIThread() { 23 | return true; 24 | } 25 | 26 | public void internalDone(final AVException avException) { 27 | this.internalDone(null, avException); 28 | } 29 | 30 | protected abstract void internalDone0(T t, AVException avException); 31 | } 32 | -------------------------------------------------------------------------------- /avoscloud-feedback/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "26.0.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 10 9 | targetSdkVersion 26 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | android.libraryVariants.all { variant -> 20 | def name = variant.buildType.name 21 | def task = project.tasks.create "jar${name.capitalize()}", Jar 22 | task.dependsOn variant.javaCompile 23 | task.from variant.javaCompile.destinationDir 24 | task.exclude 'com/avos/avoscloud/R.class' 25 | artifacts.add('archives', task); 26 | } 27 | 28 | dependencies { 29 | compile 'com.android.support:appcompat-v7:26.0.2' 30 | compile 'com.android.support:support-v4:26.0.2' 31 | compile project(':avoscloud-sdk') 32 | } 33 | 34 | apply from: '../maven_push.gradle' -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/FollowersAndFolloweesCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | /** 7 | * Created with IntelliJ IDEA. User: zhuzeng Date: 12/27/13 Time: 9:46 AM To change this template 8 | * use File | Settings | File Templates. 9 | */ 10 | 11 | public abstract class FollowersAndFolloweesCallback 12 | extends AVCallback> { 13 | /** 14 | * Override this function with the code you want to run after the fetch is complete. 15 | * 16 | * @param avObjects The objects matching the query, or null if it failed. 17 | * @param avException The exception raised by the find, or null if it succeeded. 18 | */ 19 | public abstract void done(Map avObjects, AVException avException); 20 | 21 | protected final void internalDone0(Map returnValue, AVException e) { 22 | done(returnValue, e); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/session/StaleMessageDepot.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.session; 2 | 3 | import com.avos.avoscloud.AVUtils; 4 | 5 | public class StaleMessageDepot { 6 | MessageQueue messageDepot; 7 | private static final int MAXLENGTH = 50; 8 | 9 | public StaleMessageDepot(String depotName) { 10 | this.messageDepot = new MessageQueue(depotName, String.class); 11 | } 12 | 13 | /** 14 | * 15 | * @param messageId 16 | * @return false if message arrived before. true 17 | */ 18 | public synchronized boolean putStableMessage(String messageId) { 19 | if (AVUtils.isBlankString(messageId)) { 20 | return true; 21 | } 22 | boolean isContains = messageDepot.contains(messageId); 23 | if (!isContains) { 24 | messageDepot.offer(messageId); 25 | while (messageDepot.size() > MAXLENGTH) { 26 | messageDepot.poll(); 27 | } 28 | } 29 | return !isContains; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVCaptchaOption.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by wli on 2017/5/9. 5 | */ 6 | public class AVCaptchaOption { 7 | 8 | /** 9 | * 宽度,单位是像素,下面的高度也是,会根据 size 自动调整,默认 85,范围在 60 - 200 10 | */ 11 | private int width = 0; 12 | 13 | /** 14 | * 高度,默认值30,范围在 30 - 100 15 | */ 16 | private int height = 0; 17 | 18 | int getWidth() { 19 | return width; 20 | } 21 | 22 | /** 23 | * Width of captcha image, in pixels. 24 | * Defaults to 85. Minimum is 85, maximum is 200. 25 | * @param width 26 | */ 27 | public void setWidth(int width) { 28 | this.width = width; 29 | } 30 | 31 | int getHeight() { 32 | return height; 33 | } 34 | 35 | /** 36 | * Height of captcha image, in pixels. 37 | * Defaults to 30. Minimum is 30, maximum is 100. 38 | * @param height 39 | */ 40 | public void setHeight(int height) { 41 | this.height = height; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/session/LiveQueryLoginPacket.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.session; 2 | 3 | import com.avos.avoscloud.AVUtils; 4 | import com.avos.avoscloud.Messages; 5 | import com.avos.avospush.session.LoginPacket; 6 | 7 | /** 8 | * Created by wli on 2017/5/31. 9 | */ 10 | 11 | public class LiveQueryLoginPacket extends LoginPacket { 12 | 13 | public static final int SERVICE_LIVE_QUERY = 1; 14 | public static final int SERVICE_PUSH = 0; 15 | private String subscribeId; 16 | 17 | public void setSubscribeId(String subscribeId) { 18 | this.subscribeId = subscribeId; 19 | } 20 | 21 | @Override 22 | protected Messages.GenericCommand.Builder getGenericCommandBuilder() { 23 | Messages.GenericCommand.Builder builder = super.getGenericCommandBuilder(); 24 | if (!AVUtils.isBlankString(subscribeId)) { 25 | builder.setInstallationId(subscribeId); 26 | builder.setService(SERVICE_LIVE_QUERY); 27 | } 28 | return builder; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMConversationMemberQueryCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import com.avos.avoscloud.AVCallback; 4 | import com.avos.avoscloud.AVException; 5 | import com.avos.avoscloud.im.v2.AVIMException; 6 | import com.avos.avoscloud.im.v2.conversation.AVIMConversationMemberInfo; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 对话成员信息查询结果回调类 12 | * Created by fengjunwen on 2017/12/17. 13 | */ 14 | public abstract class AVIMConversationMemberQueryCallback extends AVCallback> { 15 | /** 16 | * 结果处理函数 17 | * @param memberInfoList 结果列表 18 | * @param e 异常实例,正常情况下为 null。 19 | */ 20 | public abstract void done(List memberInfoList, AVIMException e); 21 | 22 | @Override 23 | protected final void internalDone0(List returnValue, AVException e) { 24 | done(returnValue, AVIMException.wrapperAVException(e)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/session/PushAckPacket.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.session; 2 | 3 | import com.avos.avoscloud.Messages; 4 | 5 | import java.util.HashMap; 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | * Created by nsun on 4/24/14. 11 | */ 12 | public class PushAckPacket extends CommandPacket { 13 | List ids; 14 | 15 | public PushAckPacket() { 16 | this.setCmd("ack"); 17 | } 18 | 19 | public void setMessageIds(List ids) { 20 | this.ids = ids; 21 | } 22 | 23 | @Override 24 | protected Messages.GenericCommand.Builder getGenericCommandBuilder() { 25 | Messages.GenericCommand.Builder builder = super.getGenericCommandBuilder(); 26 | builder.setAckMessage(getAckCommand()); 27 | return builder; 28 | } 29 | 30 | protected Messages.AckCommand getAckCommand() { 31 | Messages.AckCommand.Builder builder = Messages.AckCommand.newBuilder(); 32 | builder.addAllIds(ids); 33 | return builder.build(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/GenericObjectCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | 4 | public abstract class GenericObjectCallback { 5 | public void onSuccess(String content, AVException e) {} 6 | 7 | public void onFailure(int statusCode, Throwable error, String content) { 8 | if (isRetryNeeded(statusCode, error)) { 9 | if (AVOSCloud.showInternalDebugLog()) { 10 | LogUtil.avlog.d("retry this request"); 11 | } 12 | retry(error, content); 13 | } else { 14 | onFailure(error, content); 15 | } 16 | } 17 | 18 | public void onFailure(Throwable error, String content) { 19 | 20 | } 21 | 22 | 23 | public void onGroupRequestFinished(int left, int total, AVObject object) { 24 | 25 | } 26 | 27 | public boolean isRetryNeeded(int statusCode, Throwable error) { 28 | return false; 29 | } 30 | 31 | public void retry(Throwable error, String content) { 32 | 33 | } 34 | 35 | public boolean isRequestStatisticNeed() { 36 | return true; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /avoscloud-gcm/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | 4 | android { 5 | compileSdkVersion 26 6 | buildToolsVersion "26.0.2" 7 | 8 | defaultConfig { 9 | minSdkVersion 10 10 | targetSdkVersion 26 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | 15 | lintOptions { 16 | abortOnError false 17 | } 18 | } 19 | 20 | android.libraryVariants.all { variant -> 21 | def name = variant.buildType.name 22 | def task = project.tasks.create "jar${name.capitalize()}", Jar 23 | task.dependsOn variant.javaCompile 24 | task.from variant.javaCompile.destinationDir 25 | task.exclude '**/BuildConfig.class' 26 | task.exclude '**/R.class' 27 | task.exclude '**/R$*.class' 28 | artifacts.add('archives', task); 29 | } 30 | 31 | dependencies { 32 | compile project(':avoscloud-push') 33 | compile 'com.google.android.gms:play-services-gcm:8.1.0' 34 | compile 'com.android.support:appcompat-v7:25+' 35 | } 36 | 37 | 38 | apply from: '../maven_push.gradle' -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/layout/avoscloud_search_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 14 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /avoscloud-sns/src/main/java/com/avos/sns/SNSWebView.java: -------------------------------------------------------------------------------- 1 | package com.avos.sns; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.util.Log; 6 | import android.webkit.WebView; 7 | 8 | /** 9 | * Created with IntelliJ IDEA. User: zhuzeng Date: 11/4/13 Time: 5:26 PM To change this template use 10 | * File | Settings | File Templates. 11 | */ 12 | public class SNSWebView extends WebView { 13 | 14 | private static final String TAG = SNSWebView.class.getSimpleName(); 15 | 16 | public SNSWebView(Context context) { 17 | super(context); 18 | } 19 | 20 | public SNSWebView(Context context, AttributeSet attrs) { 21 | super(context, attrs); 22 | } 23 | 24 | public SNSWebView(Context context, AttributeSet attrs, int defStyle) { 25 | super(context, attrs, defStyle); 26 | } 27 | 28 | @Override 29 | public void loadUrl(String url) { 30 | Log.i(TAG, url); 31 | super.loadUrl(url); // To change body of overridden methods use File | Settings | File 32 | // Templates. 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/GetDataCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * A GetDataCallback is used to run code after a AVFile fetches its data on a background thread. 6 | *

7 | *

8 | * The easiest way to use a GetDataCallback is through an anonymous inner class. Override the done 9 | * function to specify what the callback should do after the fetch is complete. The done function 10 | * will be run in the UI thread, while the fetch happens in a background thread. This ensures that 11 | * the UI does not freeze while the fetch happens. 12 | *

13 | * 14 | *
15 |  * file.getDataInBackground(new GetDataCallback() {
16 |  *   public void done(byte[] data, AVException e)
17 |  *   {
18 |  *     // ...
19 |  *   }
20 |  * });
21 |  * 
22 | */ 23 | public abstract class GetDataCallback extends AVCallback { 24 | public abstract void done(byte[] data, AVException e); 25 | 26 | protected final void internalDone0(byte[] returnValue, AVException e) { 27 | done(returnValue, e); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/java/com/avos/avoscloud/BasicAnalyticsRequestController.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.os.Handler; 4 | import android.os.Looper; 5 | import android.os.Message; 6 | 7 | /** 8 | * Created by lbt05 on 2/13/15. 9 | */ 10 | abstract class BasicAnalyticsRequestController extends AnalyticsRequestController { 11 | 12 | Handler asyncHandler; 13 | 14 | BasicAnalyticsRequestController( 15 | final AnalyticsRequestController.AnalyticsRequestDispatcher dispatcher) { 16 | 17 | asyncHandler = new android.os.Handler(controllerThread.getLooper()) { 18 | @Override 19 | public void handleMessage(Message msg) { 20 | if (dispatcher != null && requestValidate(msg)) { 21 | prepareRequest(); 22 | dispatcher.sendRequest(); 23 | } 24 | onRequestDone(); 25 | } 26 | }; 27 | } 28 | 29 | /** 30 | * prepare request to send 31 | */ 32 | public void prepareRequest() {} 33 | 34 | /** 35 | * after request sent. 36 | */ 37 | public void onRequestDone() { 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMMessageCreator.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | import java.lang.reflect.Array; 7 | import java.lang.reflect.Constructor; 8 | 9 | /** 10 | * Created by lbt05 on 1/6/16. 11 | */ 12 | public class AVIMMessageCreator implements Parcelable.Creator { 13 | 14 | Class mClazz; 15 | 16 | public AVIMMessageCreator(Class clazz) { 17 | this.mClazz = clazz; 18 | } 19 | 20 | @Override 21 | public T createFromParcel(Parcel source) { 22 | AVIMMessage message = null; 23 | try { 24 | Constructor ctor = mClazz.getDeclaredConstructor(Parcel.class); 25 | message = ctor.newInstance(source); 26 | } catch (Exception ex) { 27 | message = new AVIMMessage(source); 28 | } 29 | message = AVIMMessageManager.parseTypedMessage(message); 30 | return (T) message; 31 | } 32 | 33 | @Override 34 | public T[] newArray(int size) { 35 | return (T[]) Array.newInstance(mClazz, size); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMMessageQueryDirection.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | /** 4 | * Created by fengjunwen on 2017/9/5. 5 | */ 6 | 7 | public enum AVIMMessageQueryDirection { 8 | AVIMMessageQueryDirectionUnknown(-1), 9 | AVIMMessageQueryDirectionFromNewToOld(0), 10 | AVIMMessageQueryDirectionFromOldToNew(1); 11 | 12 | private static String descriptions[] = new String[]{"Unknown", "Old", "New"}; 13 | private int code = -1; 14 | 15 | private AVIMMessageQueryDirection(int code) { 16 | this.code = code; 17 | } 18 | 19 | public int getCode() { 20 | return this.code; 21 | } 22 | 23 | public String getDescription() { 24 | return descriptions[code + 1]; 25 | } 26 | 27 | public static AVIMMessageQueryDirection parseFromCode(int code) { 28 | switch (code) { 29 | case 0: 30 | return AVIMMessageQueryDirectionFromNewToOld; 31 | case 1: 32 | return AVIMMessageQueryDirectionFromOldToNew; 33 | default: 34 | return AVIMMessageQueryDirectionUnknown; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /avoscloud-search/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "26.0.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 10 9 | targetSdkVersion 26 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | 14 | compileOptions { 15 | sourceCompatibility JavaVersion.VERSION_1_7 16 | targetCompatibility JavaVersion.VERSION_1_7 17 | } 18 | 19 | lintOptions { 20 | abortOnError false 21 | } 22 | 23 | packagingOptions { 24 | exclude 'META-INF/LICENSE.txt' 25 | exclude 'META-INF/NOTICE.txt' 26 | } 27 | } 28 | 29 | android.libraryVariants.all { variant -> 30 | def name = variant.buildType.name 31 | def task = project.tasks.create "jar${name.capitalize()}", Jar 32 | task.dependsOn variant.javaCompile 33 | task.from variant.javaCompile.destinationDir 34 | task.exclude 'com/avos/avoscloud/R.class' 35 | artifacts.add('archives', task); 36 | } 37 | 38 | dependencies { 39 | compile project(':avoscloud-sdk') 40 | } 41 | 42 | apply from: '../maven_push.gradle' -------------------------------------------------------------------------------- /hmsagent/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "26.0.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 16 9 | targetSdkVersion 26 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | debuggable true 19 | } 20 | } 21 | } 22 | 23 | dependencies { 24 | compile fileTree(include: ['*.jar'], dir: 'libs') 25 | 26 | // 此处版本号仅为示例,请手动修改成实际集成的HMSSDK版本号 27 | String HMSSDKVer ='2.6.3.301' 28 | // compile 'com.huawei.android.hms:iap:'+HMSSDKVer 29 | // compile 'com.huawei.android.hms:game:'+HMSSDKVer 30 | // compile 'com.huawei.android.hms:sns:'+HMSSDKVer 31 | // compile 'com.huawei.android.hms:hwid:'+HMSSDKVer 32 | // compile 'com.huawei.android.hms:push:'+HMSSDKVer 33 | // compile 'com.huawei.android.hms:opendevice:'+HMSSDKVer 34 | 35 | } 36 | 37 | 38 | -------------------------------------------------------------------------------- /avoscloud-mixpush/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | 4 | android { 5 | compileSdkVersion 26 6 | buildToolsVersion "26.0.2" 7 | 8 | defaultConfig { 9 | minSdkVersion 16 10 | targetSdkVersion 26 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | 15 | lintOptions { 16 | abortOnError false 17 | } 18 | } 19 | 20 | android.libraryVariants.all { variant -> 21 | def name = variant.buildType.name 22 | def task = project.tasks.create "jar${name.capitalize()}", Jar 23 | task.dependsOn variant.javaCompile 24 | task.from variant.javaCompile.destinationDir 25 | task.exclude '**/BuildConfig.class' 26 | task.exclude '**/R.class' 27 | task.exclude '**/R$*.class' 28 | artifacts.add('archives', task); 29 | } 30 | 31 | dependencies { 32 | compile files('libs/MiPush_SDK_Client_3_6_9.jar', 'libs/HMS_SDK_2.6.1.301.jar', 'libs/vivo_pushsdk_v2.3.4.jar') 33 | compile project(':avoscloud-push') 34 | compile project(':hmsagent') 35 | compile 'com.meizu.flyme.internet:push-internal:3.6.2@aar' 36 | } 37 | 38 | 39 | apply from: '../maven_push.gradle' -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/java/com/avos/avoscloud/ReportPolicy.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created with IntelliJ IDEA. User: zhuzeng Date: 8/27/13 Time: 4:49 PM 5 | */ 6 | public enum ReportPolicy { 7 | REALTIME(0), // 实时发送,app每产生一条消息都会发送到服务器, debug only 8 | BATCH(1), // 批量发送,默认当消息数量达到30条时发送一次。 9 | SENDDAILY(4), // 每日发送 10 | SENDWIFIONLY(5), // 仅在WIFI下启动时发送 , debug only. 11 | SEND_INTERVAL(6), // 间隔一段时间发送,每隔一段时间一次性发送到服务器。30 seconds 12 | SEND_ON_EXIT(7); // 只在启动时发送,本次产生的所有数据在下次启动时发送。 13 | 14 | private int value = 0; 15 | 16 | private ReportPolicy(int value) { 17 | this.value = value; 18 | } 19 | 20 | public static ReportPolicy valueOf(int value) { 21 | switch (value) { 22 | case 0: 23 | return REALTIME; 24 | case 1: 25 | return BATCH; 26 | case 4: 27 | return SENDDAILY; 28 | case 5: 29 | return SENDWIFIONLY; 30 | case 6: 31 | return SEND_INTERVAL; 32 | case 7: 33 | return SEND_ON_EXIT; 34 | default: 35 | return null; 36 | } 37 | } 38 | 39 | public int value() { 40 | return this.value; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/messages/AVIMTextMessage.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.messages; 2 | 3 | import com.avos.avoscloud.im.v2.AVIMMessageCreator; 4 | import com.avos.avoscloud.im.v2.AVIMMessageField; 5 | import com.avos.avoscloud.im.v2.AVIMMessageType; 6 | import com.avos.avoscloud.im.v2.AVIMTypedMessage; 7 | 8 | import java.util.Map; 9 | 10 | @AVIMMessageType(type = AVIMMessageType.TEXT_MESSAGE_TYPE) 11 | public class AVIMTextMessage extends AVIMTypedMessage { 12 | 13 | public AVIMTextMessage() { 14 | 15 | } 16 | 17 | @AVIMMessageField(name = "_lctext") 18 | String text; 19 | @AVIMMessageField(name = "_lcattrs") 20 | Map attrs; 21 | 22 | public String getText() { 23 | return this.text; 24 | } 25 | 26 | public void setText(String text) { 27 | this.text = text; 28 | } 29 | 30 | public Map getAttrs() { 31 | return this.attrs; 32 | } 33 | 34 | public void setAttrs(Map attr) { 35 | this.attrs = attr; 36 | } 37 | 38 | public static final Creator CREATOR = new AVIMMessageCreator(AVIMTextMessage.class); 39 | } 40 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/GetDataStreamCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.io.InputStream; 4 | 5 | /** 6 | *

7 | * A GetDataStreamCallback is used to run code after a AVFile fetches its data on a background thread. 8 | *

9 | *

10 | * The easiest way to use a GetDataStreamCallback is through an anonymous inner class. Override the done 11 | * function to specify what the callback should do after the fetch is complete. The done function 12 | * will be run in the UI thread, while the fetch happens in a background thread. This ensures that 13 | * the UI does not freeze while the fetch happens. 14 | *

15 | * 16 | *
17 |  * file.getDataStreamInBackground(new GetDataStreamCallback() {
18 |  *   public void done(InputStream data, AVException e)
19 |  *   {
20 |  *     // ...
21 |  *   }
22 |  * });
23 |  * 
24 | */ 25 | public abstract class GetDataStreamCallback extends AVCallback { 26 | public abstract void done(InputStream data, AVException e); 27 | 28 | protected final void internalDone0(InputStream returnValue, AVException e) { 29 | done(returnValue, e); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMTemporaryConversation.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | 5 | import com.avos.avoscloud.AVException; 6 | import com.avos.avoscloud.AVUtils; 7 | import com.avos.avoscloud.LogUtil; 8 | import com.avos.avoscloud.im.v2.callback.AVIMConversationCallback; 9 | 10 | import java.util.HashMap; 11 | import java.util.List; 12 | import java.util.Map; 13 | 14 | /** 15 | * Created by fengjunwen on 2017/11/2. 16 | */ 17 | 18 | public class AVIMTemporaryConversation extends AVIMReadonlyConversation { 19 | protected AVIMTemporaryConversation(AVIMClient client, List members, 20 | Map attributes) { 21 | super(client, members, attributes); 22 | isTemporary = true; 23 | } 24 | 25 | protected AVIMTemporaryConversation(AVIMClient client, String conversationId) { 26 | super(client, conversationId); 27 | isTemporary = true; 28 | } 29 | 30 | /* 31 | * 判断当前临时对话是否已经过期 32 | */ 33 | public boolean isExpired() { 34 | long now = System.currentTimeMillis() / 1000; 35 | return now > this.temporaryExpiredat; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /avoscloud-statistics/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "26.0.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 10 9 | targetSdkVersion 26 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | 14 | compileOptions { 15 | sourceCompatibility JavaVersion.VERSION_1_7 16 | targetCompatibility JavaVersion.VERSION_1_7 17 | } 18 | 19 | lintOptions { 20 | abortOnError false 21 | } 22 | 23 | packagingOptions { 24 | exclude 'META-INF/LICENSE.txt' 25 | exclude 'META-INF/NOTICE.txt' 26 | } 27 | } 28 | 29 | android.libraryVariants.all { variant -> 30 | def name = variant.buildType.name 31 | def task = project.tasks.create "jar${name.capitalize()}", Jar 32 | task.dependsOn variant.javaCompile 33 | task.from variant.javaCompile.destinationDir 34 | task.exclude '**/BuildConfig.class' 35 | task.exclude '**/R.class' 36 | task.exclude '**/R$*.class' 37 | artifacts.add('archives', task); 38 | } 39 | 40 | dependencies { 41 | compile project(':avoscloud-sdk') 42 | } 43 | 44 | apply from: '../maven_push.gradle' -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMReservedMessageType.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import java.io.File; 4 | 5 | /** 6 | * 预留的MessageType 7 | * 8 | */ 9 | public enum AVIMReservedMessageType { 10 | UnsupportedMessageType(0), 11 | TextMessageType(-1), 12 | ImageMessageType(-2), 13 | AudioMessageType(-3), 14 | VideoMessageType(-4), 15 | LocationMessageType(-5), 16 | FileMessageType(-6); 17 | int type; 18 | 19 | AVIMReservedMessageType(int type) { 20 | this.type = type; 21 | } 22 | 23 | public int getType() { 24 | return type; 25 | } 26 | 27 | public static AVIMReservedMessageType getAVIMReservedMessageType(int type) { 28 | switch (type) { 29 | case 0: 30 | return UnsupportedMessageType; 31 | case -1: 32 | return TextMessageType; 33 | case -2: 34 | return ImageMessageType; 35 | case -3: 36 | return AudioMessageType; 37 | case -4: 38 | return VideoMessageType; 39 | case -5: 40 | return LocationMessageType; 41 | case -6: 42 | return FileMessageType; 43 | default: 44 | return UnsupportedMessageType; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/session/SessionAckPacket.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.session; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | import com.alibaba.fastjson.JSON; 8 | import com.avos.avoscloud.AVUtils; 9 | import com.avos.avoscloud.Messages; 10 | 11 | /** 12 | * Created by nsun on 5/13/14. 13 | */ 14 | public class SessionAckPacket extends PeerBasedCommandPacket { 15 | 16 | List ids; 17 | 18 | public SessionAckPacket() { 19 | this.setCmd("ack"); 20 | } 21 | 22 | public void setMessageId(String id) { 23 | ids = new ArrayList(1); 24 | ids.add(id); 25 | } 26 | 27 | @Override 28 | protected Messages.GenericCommand.Builder getGenericCommandBuilder() { 29 | Messages.GenericCommand.Builder builder = super.getGenericCommandBuilder(); 30 | builder.setAckMessage(getAckCommand()); 31 | return builder; 32 | } 33 | 34 | protected Messages.AckCommand getAckCommand() { 35 | Messages.AckCommand.Builder builder = Messages.AckCommand.newBuilder(); 36 | if (!AVUtils.isEmptyList(ids)) { 37 | builder.addAllIds(ids); 38 | } 39 | return builder.build(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/test/java/com/avos/avoscloud/TestConfig.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by wli on 2017/4/27. 5 | */ 6 | 7 | public class TestConfig { 8 | 9 | public static String TEST_APP_ID = "683jigxkqb10jrirelvd9vcn9ywbq2o436lfz1kngsvigm27"; 10 | public static String TEST_APP_KEY = "ualzl8f8pxmryous77m3gf2z0dyhrhk6xdb7zkiu6flc0jxy"; 11 | 12 | public static String TEST_LIVEQUERY_APP_ID = "1XWY1LmVrYyqkB0oXwYssgf0-gzGzoHsz"; 13 | public static String TEST_LIVEQUERY_APP_KEY = "Y895phPIQhSf8qxt9ymOhol8"; 14 | 15 | public static String TEST_UCLOUD_APP_ID = "683jigxkqb10jrirelvd9vcn9ywbq2o436lfz1kngsvigm27"; 16 | public static String TEST_UCLOUD_APP_KEY = "ualzl8f8pxmryous77m3gf2z0dyhrhk6xdb7zkiu6flc0jxy"; 17 | 18 | public static String TEST_QCLOUD_APP_ID = "uOTbYSwdMgm7Sg3fdoOBrdUu-9Nh9j0Va"; 19 | public static String TEST_QCLOUD_APP_KEY = "FEeNGXloz2BRl1qvWuEjVnFo"; 20 | 21 | public static String TEST_US_APP_ID = "JtRCJghq94QKJxcAedDdXCb0-MdYXbMMI"; 22 | public static String TEST_US_APP_KEY = "F2g209ntJhgIYopdSI87IGQv"; 23 | 24 | static String TEST_USER_NAME = "default_test_user_name"; 25 | static String TEST_USER_PWD = "default_test_user_pwd"; 26 | } 27 | -------------------------------------------------------------------------------- /avoscloud-push/src/test/java/com/avos/avoscloud/PushTestConfig.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by wli on 2017/4/27. 5 | */ 6 | 7 | public class PushTestConfig { 8 | 9 | public static String TEST_APP_ID = "683jigxkqb10jrirelvd9vcn9ywbq2o436lfz1kngsvigm27"; 10 | public static String TEST_APP_KEY = "ualzl8f8pxmryous77m3gf2z0dyhrhk6xdb7zkiu6flc0jxy"; 11 | 12 | public static String TEST_LIVEQUERY_APP_ID = "1XWY1LmVrYyqkB0oXwYssgf0-gzGzoHsz"; 13 | public static String TEST_LIVEQUERY_APP_KEY = "Y895phPIQhSf8qxt9ymOhol8"; 14 | 15 | public static String TEST_UCLOUD_APP_ID = "683jigxkqb10jrirelvd9vcn9ywbq2o436lfz1kngsvigm27"; 16 | public static String TEST_UCLOUD_APP_KEY = "ualzl8f8pxmryous77m3gf2z0dyhrhk6xdb7zkiu6flc0jxy"; 17 | 18 | public static String TEST_QCLOUD_APP_ID = "uOTbYSwdMgm7Sg3fdoOBrdUu-9Nh9j0Va"; 19 | public static String TEST_QCLOUD_APP_KEY = "FEeNGXloz2BRl1qvWuEjVnFo"; 20 | 21 | public static String TEST_US_APP_ID = "JtRCJghq94QKJxcAedDdXCb0-MdYXbMMI"; 22 | public static String TEST_US_APP_KEY = "F2g209ntJhgIYopdSI87IGQv"; 23 | 24 | static String TEST_USER_NAME = "default_test_user_name"; 25 | static String TEST_USER_PWD = "default_test_user_pwd"; 26 | } 27 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/push/AVConnectivityReceiver.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.push; 2 | 3 | import com.avos.avoscloud.AVUtils; 4 | 5 | import android.content.BroadcastReceiver; 6 | import android.content.Context; 7 | import android.content.Intent; 8 | 9 | /** 10 | * Created by yangchaozhong on 3/14/14. 11 | */ 12 | public class AVConnectivityReceiver extends BroadcastReceiver { 13 | 14 | private final AVConnectivityListener listener; 15 | 16 | public AVConnectivityReceiver(AVConnectivityListener listener) { 17 | this.listener = listener; 18 | } 19 | 20 | @Override 21 | public void onReceive(Context context, Intent intent) { 22 | int status = AVUtils.getConnectivityStatus(context); 23 | switch (status) { 24 | case AVUtils.TYPE_MOBILE: 25 | listener.onMobile(context); 26 | break; 27 | case AVUtils.TYPE_WIFI: 28 | listener.onWifi(context); 29 | break; 30 | case AVUtils.TYPE_OTHERS: 31 | listener.onOtherConnected(context); 32 | break; 33 | case AVUtils.TYPE_NOT_CONNECTED: 34 | listener.onNotConnected(context); 35 | break; 36 | default: 37 | break; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/game/UpdateGameInfoApi.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.game; 2 | 3 | import com.huawei.android.hms.agent.common.ApiClientMgr; 4 | import com.huawei.android.hms.agent.common.HMSAgentLog; 5 | import com.huawei.android.hms.agent.common.StrUtils; 6 | import com.huawei.hms.api.HuaweiApiClient; 7 | import com.huawei.hms.support.api.entity.core.CommonCode; 8 | import com.huawei.hms.support.api.game.GameInfo; 9 | import com.huawei.hms.support.api.game.HuaweiGame; 10 | 11 | /** 12 | * 上传设备信息 13 | */ 14 | public class UpdateGameInfoApi { 15 | 16 | /** 17 | * 对外接口上传设备信息 18 | * @param gameInfo 设备信息 19 | */ 20 | public long updateGameInfo(GameInfo gameInfo){ 21 | HMSAgentLog.i("updateGameInfo:gameInfo=" + StrUtils.objDesc(gameInfo)); 22 | 23 | HuaweiApiClient client = ApiClientMgr.INST.getApiClient(); 24 | if (client == null || !ApiClientMgr.INST.isConnect(client)) { 25 | HMSAgentLog.e("client not connted"); 26 | return CommonCode.ErrorCode.CLIENT_API_INVALID; 27 | } 28 | 29 | return HuaweiGame.HuaweiGameApi.updateGameInfo(client, gameInfo); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/layout/avoscloud_search_actionbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | 27 | 28 | -------------------------------------------------------------------------------- /avoscloud-sns/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | buildToolsVersion "26.0.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 10 9 | targetSdkVersion 26 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | 14 | compileOptions { 15 | sourceCompatibility JavaVersion.VERSION_1_7 16 | targetCompatibility JavaVersion.VERSION_1_7 17 | } 18 | 19 | lintOptions { 20 | abortOnError false 21 | } 22 | 23 | sourceSets { 24 | main { 25 | jniLibs.srcDirs = ['libs'] 26 | } 27 | } 28 | } 29 | 30 | android.libraryVariants.all { variant -> 31 | def name = variant.buildType.name 32 | def task = project.tasks.create "jar${name.capitalize()}", Jar 33 | task.dependsOn variant.javaCompile 34 | task.from variant.javaCompile.destinationDir 35 | task.exclude 'com/avos/avoscloud/R.class' 36 | artifacts.add('archives', task); 37 | } 38 | 39 | dependencies { 40 | compile project(':avoscloud-sdk') 41 | compile 'cn.leancloud.android:qq-sdk:1.6.1-leancloud' 42 | compile 'cn.leancloud.android:weibo-sdk-android-sso:3.0.1-leancloud' 43 | } 44 | 45 | apply from: '../maven_push.gradle' -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMClientOpenOption.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | /** 4 | * Created by wli on 2017/2/7. 5 | */ 6 | 7 | public class AVIMClientOpenOption { 8 | 9 | /** 10 | * 是否强制单点登陆,默认为强制 11 | */ 12 | private boolean isForceSingleLogin = true; 13 | private boolean isReconnect = false; 14 | 15 | public AVIMClientOpenOption() { 16 | } 17 | 18 | /** 19 | * 判断是否恢复重连 20 | * @return 21 | */ 22 | public boolean isReconnect() { 23 | return this.isReconnect; 24 | } 25 | 26 | /** 27 | * 设置恢复重连标记 28 | * 29 | * @param reconnect 30 | */ 31 | public void setReconnect(boolean reconnect) { 32 | this.isReconnect = reconnect; 33 | } 34 | 35 | /** 36 | * 是否强制单点登录 37 | * 38 | * @return 39 | * @since v4.6.3 40 | */ 41 | @Deprecated 42 | public boolean isForceSingleLogin() { 43 | return isForceSingleLogin; 44 | } 45 | 46 | /** 47 | * 设置单点登录(已废除,请调用 #setReconnect 方法代替) 48 | * 49 | * @param forceSingleLogin 50 | * @since v4.6.3 51 | */ 52 | @Deprecated 53 | public void setForceSingleLogin(boolean forceSingleLogin) { 54 | isForceSingleLogin = forceSingleLogin; 55 | isReconnect = !forceSingleLogin; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/androidTest/java/com/avos/avoscloud/feedback/test/mock/MockFeedbackThread.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.feedback.test.mock; 2 | 3 | /** 4 | * Created by zhangxiaobo on 15/3/25. 5 | */ 6 | public class MockFeedbackThread { 7 | private MockFeedbackThread() {} 8 | 9 | public static final String OBJECT_ID = "55122ba7e4b0e3088f997550"; 10 | 11 | public static class Url { 12 | public static final String FEEDBACK = "https://api.leancloud.cn/1.1/feedback"; 13 | public static final String THREAD = "https://api.leancloud.cn/1.1/feedback/" + OBJECT_ID 14 | + "/threads"; 15 | } 16 | 17 | public static class Result { 18 | public static final String GET = 19 | "{\"results\":[{\"content\":\"" + MockComment.CONTENT 20 | + "\",\"type\":\"user\",\"feedback\":{\"__type\":\"Pointer\",\"className\":" 21 | + "\"UserFeedback\",\"objectId\":\"55122ba7e4b0e3088f997550\"},\"createdAt\":" 22 | + "\"2015-03-25T03:38:06.960Z\",\"updatedAt\":\"2015-03-25T03:38:06.960Z\",\"" 23 | + "objectId\":\"55122d9ee4b0e3088f998774\"}]}"; 24 | public static final String POST_FEEDBACK = 25 | "{\"createdAt\":\"2015-03-25T03:29:43.871Z\",\"objectId\":\"" + OBJECT_ID + "\"}"; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/java/com/avos/avoscloud/AnalyticsRequestController.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.os.HandlerThread; 4 | import android.os.Message; 5 | 6 | /** 7 | * Created by lbt05 on 2/11/15. 8 | */ 9 | abstract class AnalyticsRequestController { 10 | static HandlerThread controllerThread = new HandlerThread( 11 | "com.avos.avoscloud.AnalyticsRequestController"); 12 | 13 | static { 14 | controllerThread.start(); 15 | } 16 | 17 | /** 18 | * 申请准备发送 session 数据 19 | * @param currentSessionId 20 | */ 21 | public void requestToSend(String currentSessionId) { 22 | }; 23 | 24 | /** 25 | * 退出 26 | */ 27 | public void quit() { 28 | }; 29 | 30 | /** 31 | * 校验消息合法性 32 | * @param message 33 | * @return 34 | */ 35 | public boolean requestValidate(Message message) { 36 | return true; 37 | }; 38 | 39 | /** 40 | * 处理结束之后的附加操作 41 | */ 42 | public void onRequestDone() { 43 | }; 44 | 45 | /** 46 | * session 评估 47 | * @param session 48 | */ 49 | public void appraisalSession(AnalyticsSession session) { 50 | } 51 | 52 | interface AnalyticsRequestDispatcher { 53 | /** 54 | * 发送数据 55 | */ 56 | public void sendRequest(); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/androidTest/java/com/avos/avoscloud/test/base/NetworkTestBase.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.test.base; 2 | 3 | import com.avos.avoscloud.PaasClient; 4 | import com.avos.avoscloud.test.utils.TestExecutorService; 5 | 6 | import org.apache.http.message.BasicHeader; 7 | import org.junit.Before; 8 | import org.robolectric.Robolectric; 9 | 10 | import java.util.concurrent.BlockingQueue; 11 | import java.util.concurrent.SynchronousQueue; 12 | import java.util.concurrent.TimeUnit; 13 | 14 | /** 15 | * Created by zhangxiaobo on 15/2/6. 16 | */ 17 | public class NetworkTestBase extends TestBase { 18 | @Before 19 | public void setup() { 20 | super.setup(); 21 | BlockingQueue queue = new SynchronousQueue(); 22 | TestExecutorService pool = new TestExecutorService(10, 10, 10, TimeUnit.MILLISECONDS, queue); 23 | 24 | // TestExecutorService to run on UI thread, submit immediately. 25 | PaasClient.storageInstance().clientInstance(false).setThreadPool(pool); 26 | PaasClient.storageInstance().clientInstance(true).setThreadPool(pool); 27 | 28 | Robolectric.getFakeHttpLayer().logHttpRequests(); 29 | } 30 | 31 | protected BasicHeader buildJsonHeader() { 32 | return new BasicHeader("Content-Type", "application/json"); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/main/res/layout/avoscloud_feedback_thread_actionbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | 27 | 28 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ops/CompoundOp.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.ops; 2 | 3 | import java.util.Collection; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | 9 | 10 | public class CompoundOp extends CollectionOp { 11 | 12 | @Override 13 | public Map encodeOp() { 14 | throw new UnsupportedOperationException(); 15 | } 16 | 17 | public CompoundOp() { 18 | super(); 19 | } 20 | 21 | public CompoundOp(String key, AVOp... avOps) { 22 | super(key, OpType.Compound); 23 | this.ops = new LinkedList(); 24 | if (avOps != null) { 25 | for (AVOp op : avOps) { 26 | this.ops.add(op); 27 | } 28 | } 29 | } 30 | 31 | public void addFirst(AVOp object) { 32 | ops.addFirst(object); 33 | } 34 | 35 | public void addLast(AVOp object) { 36 | ops.addLast(object); 37 | } 38 | 39 | public AVOp removeFirst() { 40 | return ops.removeFirst(); 41 | } 42 | 43 | public AVOp removeLast() { 44 | return ops.removeLast(); 45 | } 46 | 47 | public List getValues() { 48 | return ops; 49 | } 50 | 51 | public Object apply(Object oldValue) { 52 | for (AVOp op : ops) { 53 | oldValue = op.apply(oldValue); 54 | } 55 | return oldValue; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /avoscloud-feedback/src/androidTest/java/com/avos/avoscloud/feedback/test/base/NetworkTestBase.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.feedback.test.base; 2 | 3 | import com.avos.avoscloud.PaasClient; 4 | import com.avos.avoscloud.feedback.test.utils.TestExecutorService; 5 | 6 | import org.apache.http.message.BasicHeader; 7 | import org.junit.Before; 8 | import org.robolectric.Robolectric; 9 | 10 | import java.util.concurrent.BlockingQueue; 11 | import java.util.concurrent.SynchronousQueue; 12 | import java.util.concurrent.TimeUnit; 13 | 14 | /** 15 | * Created by zhangxiaobo on 15/2/6. 16 | */ 17 | public class NetworkTestBase extends TestBase { 18 | @Before 19 | public void setup() { 20 | super.setup(); 21 | BlockingQueue queue = new SynchronousQueue(); 22 | TestExecutorService pool = new TestExecutorService(10, 10, 10, TimeUnit.MILLISECONDS, queue); 23 | 24 | // TestExecutorService to run on UI thread, submit immediately. 25 | PaasClient.storageInstance().clientInstance(false).setThreadPool(pool); 26 | PaasClient.storageInstance().clientInstance(true).setThreadPool(pool); 27 | 28 | Robolectric.getFakeHttpLayer().logHttpRequests(); 29 | } 30 | 31 | protected BasicHeader buildJsonHeader() { 32 | return new BasicHeader("Content-Type", "application/json"); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/java/com/avos/avoscloud/AnalyticsRequestControllerFactory.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | class AnalyticsRequestControllerFactory { 4 | /** 5 | * 生成 RequestController 实例 6 | * @param sessionId 7 | * @param reportPolicy 8 | * @param implement 9 | * @return 10 | */ 11 | static AnalyticsRequestController getAnalyticsRequestController(String sessionId, 12 | ReportPolicy reportPolicy, AnalyticsImpl implement) { 13 | AnalyticsRequestController requestController = null; 14 | switch (reportPolicy) { 15 | case SEND_INTERVAL: 16 | requestController = 17 | new IntervalRequestController(sessionId, implement, AnalyticsUtils.getRequestInterval()); 18 | break; 19 | case REALTIME: 20 | case SENDWIFIONLY: 21 | requestController = new RealTimeRequestController(implement);//implement.realTimeController; 22 | break; 23 | case SEND_ON_EXIT: 24 | requestController = new BoosterRequestController(sessionId, implement); 25 | break; 26 | case BATCH: 27 | default: 28 | // default is batch policy for common 29 | requestController = 30 | new BatchRequestController(sessionId, implement, AnalyticsUtils.getRequestInterval()); 31 | break; 32 | } 33 | return requestController; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/test/java/com/avos/avoscloud/AVStatusTest.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import junit.framework.Assert; 4 | 5 | import org.junit.Before; 6 | import org.junit.Test; 7 | import org.junit.runner.RunWith; 8 | import org.robolectric.RobolectricTestRunner; 9 | import org.robolectric.RuntimeEnvironment; 10 | import org.robolectric.annotation.Config; 11 | 12 | import java.util.concurrent.CountDownLatch; 13 | 14 | /** 15 | * Created by wli on 2017/4/27. 16 | */ 17 | 18 | @RunWith(RobolectricTestRunner.class) 19 | @Config(constants = BuildConfig.class, manifest = Config.NONE, sdk = 21) 20 | public class AVStatusTest { 21 | 22 | @Before 23 | public void initAvos() { 24 | AVOSCloud.initialize(RuntimeEnvironment.application, TestConfig.TEST_APP_ID, TestConfig.TEST_APP_KEY); 25 | } 26 | 27 | @Test 28 | public void testResetUnreadStatusesCount() throws AVException, InterruptedException { 29 | AVUser user = new AVUser(); 30 | user.logIn(TestConfig.TEST_USER_NAME, TestConfig.TEST_USER_PWD); 31 | final CountDownLatch latch = new CountDownLatch(1); 32 | AVStatus.resetUnreadStatusesCount("private", new AVCallback() { 33 | @Override 34 | protected void internalDone0(Object o, AVException avException) { 35 | latch.countDown(); 36 | Assert.assertNull(avException); 37 | } 38 | }); 39 | latch.await(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ops/DeleteOp.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.ops; 2 | 3 | import java.util.Map; 4 | 5 | import com.avos.avoscloud.AVObject; 6 | import com.avos.avoscloud.AVUtils; 7 | 8 | /** 9 | * A delete op 10 | * 11 | * @author dennis 12 | * 13 | */ 14 | public class DeleteOp extends BaseOp { 15 | 16 | public DeleteOp() { 17 | super(); 18 | } 19 | 20 | public DeleteOp(String key) { 21 | super(key, OpType.Delete); 22 | } 23 | 24 | @Override 25 | public Map encodeOp() { 26 | return AVUtils.createDeleteOpMap(key); 27 | } 28 | 29 | @Override 30 | public AVOp merge(AVOp other) { 31 | assertKeyEquals(other); 32 | switch (other.type()) { 33 | case Compound: 34 | other.cast(CompoundOp.class).addFirst(this); 35 | return other; 36 | case Set: 37 | case Add: 38 | case AddUnique: 39 | case AddRelation: 40 | case Increment: 41 | return other; 42 | case Remove: 43 | case RemoveRelation: 44 | case Null: 45 | case Delete: 46 | return this; 47 | default: 48 | throw new IllegalStateException("Unknow op type " + other.type()); 49 | } 50 | } 51 | 52 | public Object getValues() { 53 | return null; 54 | } 55 | 56 | public Object apply(Object value) { 57 | return null; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMMessageManagerHelper.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | /** 4 | * Created by lbt05 on 1/28/15. 5 | */ 6 | public class AVIMMessageManagerHelper { 7 | public static void processMessage(AVIMMessage message, int convType, AVIMClient client, boolean hasMore, 8 | boolean isTransient) { 9 | message.setCurrentClient(client.getClientId()); 10 | AVIMMessageManager.processMessage(message, convType, client, hasMore, isTransient); 11 | } 12 | 13 | public static void processMessageReceipt(AVIMMessage message, AVIMClient client) { 14 | AVIMMessageManager.processMessageReceipt(message, client); 15 | } 16 | 17 | public static AVIMClientEventHandler getClientEventHandler() { 18 | return AVIMClient.getClientEventHandler(); 19 | } 20 | 21 | public static AVIMConversationEventHandler getConversationEventHandler() { 22 | return AVIMMessageManager.getConversationEventHandler(); 23 | } 24 | 25 | public static AVIMMessage parseTypedMessage(AVIMMessage message) { 26 | return AVIMMessageManager.parseTypedMessage(message); 27 | } 28 | 29 | public static void removeConversationCache(AVIMConversation conversation) { 30 | conversation.storage.deleteConversationData(conversation.getConversationId()); 31 | } 32 | 33 | public static String getMessageToken(AVIMMessage msg) { 34 | return msg.getUniqueToken(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/test/java/com/avos/avoscloud/AVCloudTest.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import junit.framework.Assert; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Created by wli on 2017/8/4. 9 | */ 10 | 11 | public class AVCloudTest { 12 | @Test 13 | public void testConvertCloudResponse() { 14 | String content = "{\"result\":{\"content\":\"2222我若是写代码。\",\"ACL\":{\"*\":{\"read\":true},\"59229e282f301e006b1b637e\":{\"read\":true}},\"number\":123,\"userName\":{\"__type\":\"Pointer\",\"className\":\"_User\",\"objectId\":\"59631dab128fe1507271d9b7\"},\"asdfds\":{\"__type\":\"Pointer\",\"className\":\"_File\",\"objectId\":\"5875e04a61ff4b005c5c28ba\"},\"objectId\":\"56de3e5aefa631005ec03f67\",\"createdAt\":\"2016-03-08T02:52:10.733Z\",\"updatedAt\":\"2017-08-02T10:58:05.630Z\",\"__type\":\"Object\",\"className\":\"Comment\"}}"; 15 | AVObject object = (AVObject) AVCloud.convertCloudResponse(content); 16 | 17 | Assert.assertEquals(object.getClassName(), "Comment"); 18 | Assert.assertEquals(object.get("content"), "2222我若是写代码。"); 19 | Assert.assertEquals(object.getInt("number"), 123); 20 | 21 | Assert.assertEquals(object.getObjectId(), "56de3e5aefa631005ec03f67"); 22 | Assert.assertNotNull(object.getCreatedAt()); 23 | Assert.assertNotNull(object.getUpdatedAt()); 24 | Assert.assertNotNull(object.getACL()); 25 | Assert.assertNotNull(object.get("asdfds")); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ops/CollectionOp.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.ops; 2 | 3 | 4 | import com.alibaba.fastjson.annotation.JSONType; 5 | import com.avos.avoscloud.AVFile; 6 | import com.avos.avoscloud.AVObject; 7 | import com.avos.avoscloud.AVUtils; 8 | 9 | import java.util.Collection; 10 | import java.util.LinkedList; 11 | import java.util.List; 12 | 13 | /** 14 | * Created by lbt05 on 5/28/15. 15 | */ 16 | @JSONType(ignores = {"parsedValues"}) 17 | public abstract class CollectionOp extends BaseOp { 18 | public CollectionOp() { 19 | super(); 20 | } 21 | 22 | public CollectionOp(String key, OpType type) { 23 | super(key, type); 24 | } 25 | 26 | public void setValues(Collection values) { 27 | this.getValues().clear(); 28 | this.getValues().addAll(values); 29 | }; 30 | 31 | @Override 32 | public abstract Collection getValues(); 33 | 34 | public List getParsedValues() { 35 | List result = new LinkedList(); 36 | for (Object v : getValues()) { 37 | if (v instanceof AVObject) { 38 | Object realValue = AVUtils.mapFromPointerObject((AVObject) v); 39 | result.add(realValue); 40 | } else if (v instanceof AVFile) { 41 | Object realValue = AVUtils.mapFromFile((AVFile) v); 42 | result.add(realValue); 43 | } else { 44 | result.add(v); 45 | } 46 | } 47 | return result; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/test/java/com/avos/avoscloud/FastJsonTest.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | 5 | import org.junit.Assert; 6 | import org.junit.Before; 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | import org.robolectric.RobolectricTestRunner; 10 | import org.robolectric.RuntimeEnvironment; 11 | import org.robolectric.annotation.Config; 12 | 13 | /** 14 | * Created by wli on 2017/6/19. 15 | */ 16 | 17 | @RunWith(RobolectricTestRunner.class) 18 | @Config(constants = BuildConfig.class, manifest = Config.NONE, sdk = 21) 19 | public class FastJsonTest { 20 | 21 | @Before 22 | public void initAvos() { 23 | AVOSCloud.initialize(RuntimeEnvironment.application, TestConfig.TEST_APP_ID, TestConfig.TEST_APP_KEY); 24 | } 25 | 26 | @Test 27 | public void testFastJson() { 28 | final String key = "test"; 29 | final String oldValue = "11111"; 30 | final String newValue = "22222"; 31 | AVObject oldObject = new AVObject("fastjson_test"); 32 | oldObject.put(key, oldValue); 33 | Assert.assertTrue(oldValue.equals(oldObject.get(key))); 34 | 35 | String content = JSON.toJSONString(oldObject); 36 | AVObject newObject = (AVObject) JSON.parse(content); 37 | 38 | Assert.assertTrue(oldValue.equals(newObject.get(key))); 39 | 40 | newObject.put(key, newValue); 41 | Assert.assertTrue(newValue.equals(newObject.get(key))); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/java/com/avos/avoscloud/IntervalRequestController.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.os.Message; 4 | 5 | /** 6 | * 7 | * Created by lbt05 on 2/9/15. 8 | */ 9 | class IntervalRequestController extends BoosterRequestController { 10 | 11 | IntervalTimer timer; 12 | 13 | IntervalRequestController(String sessionId, final AnalyticsRequestDispatcher dispatcher, 14 | long countDownInterval) { 15 | super(sessionId, dispatcher); 16 | timer = 17 | new IntervalTimer(controllerThread.getLooper(), 18 | countDownInterval) { 19 | @Override 20 | public void onTrigger() { 21 | 22 | if (dispatcher != null) { 23 | if (AVOSCloud.isDebugLogEnabled()) { 24 | LogUtil.avlog.d("send stats interval request"); 25 | } 26 | dispatcher.sendRequest(); 27 | } 28 | } 29 | }; 30 | timer.start(); 31 | } 32 | 33 | public void quit() { 34 | timer.cancel(); 35 | } 36 | 37 | private final void skip() { 38 | timer.skip(); 39 | } 40 | 41 | @Override 42 | public void prepareRequest() { 43 | if (AVOSCloud.isDebugLogEnabled()) { 44 | LogUtil.avlog.d("send stats interval request for new session"); 45 | } 46 | } 47 | 48 | @Override 49 | public void onRequestDone() { 50 | currentSessionId = tmpSessionId; 51 | skip(); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMBaseBroadcastReceiver.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.support.v4.content.LocalBroadcastManager; 7 | 8 | import com.avos.avoscloud.AVCallback; 9 | import com.avos.avoscloud.AVException; 10 | import com.avos.avoscloud.AVOSCloud; 11 | 12 | /** 13 | * Created by lbt05 on 3/19/15. 14 | */ 15 | public abstract class AVIMBaseBroadcastReceiver extends BroadcastReceiver { 16 | AVCallback callback; 17 | 18 | public AVIMBaseBroadcastReceiver(AVCallback callback) { 19 | this.callback = callback; 20 | } 21 | 22 | @Override 23 | public void onReceive(Context context, Intent intent) { 24 | try { 25 | Throwable error = null; 26 | if (null != intent && null != intent.getExtras() && intent.getExtras().containsKey(Conversation.callbackExceptionKey)) { 27 | error = (Throwable) intent.getExtras().getSerializable(Conversation.callbackExceptionKey); 28 | } 29 | execute(intent, error); 30 | LocalBroadcastManager.getInstance(AVOSCloud.applicationContext) 31 | .unregisterReceiver(this); 32 | } catch (Exception e) { 33 | if (callback != null) { 34 | callback.internalDone(null, new AVException(e)); 35 | } 36 | } 37 | } 38 | 39 | public abstract void execute(Intent intent, Throwable error); 40 | } 41 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVConstants.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created with IntelliJ IDEA. User: tangxiaomin Date: 4/12/13 Time: 5:07 PM 5 | */ 6 | public final class AVConstants { 7 | public static final String AV_PUSH_SERVICE_NOTIFICATION_MSG = "AV_NOTIFICATION_MSG"; 8 | public static final String AV_PUSH_SERVICE_APPLICATION_ID = "AV_APPLICATION_ID"; 9 | public static final String AV_PUSH_SERVICE_DEFAULT_CALLBACK = "AV_DEFAULT_CALLBACK"; 10 | public static final String AV_PUSH_SERVICE_ACTION_MESSAGE = "AV_PUSH_SERVICE_ACTION_MESSAGE"; 11 | public static final String AV_PUSH_SERVICE_SETTINGS_KEY = "AV_PUSH_SERVICE_SETTINGS_KEY"; 12 | 13 | public static final String PUSH_INTENT_KEY = "com.avoscloud.push"; 14 | public static final String AVSEARCH_HIGHTLIGHT = "highlight_avoscloud_"; 15 | public static final String AVSEARCH_APP_URL = "app_url_avoscloud_"; 16 | public static final String AVSEARCH_DEEP_LINK = "deep_link_avoscloud_"; 17 | 18 | public static final String AV_MIXPUSH_MI_NOTIFICATION_ACTION = "com.avos.avoscloud.mi_notification_action"; 19 | public static final String AV_MIXPUSH_MI_NOTIFICATION_ARRIVED_ACTION = "com.avos.avoscloud.mi_notification_arrived_action"; 20 | public static final String AV_MIXPUSH_FLYME_NOTIFICATION_ACTION = "com.avos.avoscloud.flyme_notification_action"; 21 | } 22 | 23 | 24 | enum AVOperationType { 25 | kAVOperationSnapshot, kAVOperationPendingOperation, 26 | }; 27 | -------------------------------------------------------------------------------- /avoscloud-gcm/src/main/java/com/avos/avoscloud/AVGCMService.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.text.TextUtils; 6 | import com.alibaba.fastjson.JSONObject; 7 | 8 | import com.google.android.gms.gcm.GcmListenerService; 9 | 10 | /** 11 | * Created by wli on 15/8/19. 12 | * 接收并处理 GCM 推送过来的消息 13 | */ 14 | public class AVGCMService extends GcmListenerService { 15 | 16 | @Override 17 | public void onMessageSent(String msgId) { 18 | super.onMessageSent(msgId); 19 | } 20 | 21 | @Override 22 | public void onDeletedMessages() { 23 | super.onDeletedMessages(); 24 | } 25 | 26 | @Override 27 | public void onMessageReceived(String from, Bundle data) { 28 | if (null != data) { 29 | String channel = data.getString("_channel"); 30 | String action = data.getString("action"); 31 | String content = data.getString("gcm.notification.body"); 32 | 33 | JSONObject jsonObject = new JSONObject(); 34 | jsonObject.put("alert", TextUtils.isEmpty(content) ? "" : content); 35 | 36 | if (AVOSCloud.isDebugLogEnabled()) { 37 | LogUtil.avlog.d("got gcm message:" + jsonObject.toJSONString()); 38 | } 39 | 40 | AVNotificationManager.getInstance().processGcmMessage(channel, action, jsonObject.toJSONString()); 41 | } 42 | } 43 | 44 | @Override 45 | public void onRebind(Intent intent) { 46 | super.onRebind(intent); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/AVSessionListener.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import com.avos.avospush.session.CommandPacket; 4 | 5 | import android.content.Context; 6 | 7 | import java.util.List; 8 | 9 | public abstract class AVSessionListener { 10 | 11 | public abstract void onError(Context context, AVSession session, Throwable e, int sessionOperation, 12 | int requestId); 13 | 14 | public void onError(Context context, AVSession session, Throwable e) { 15 | this.onError(context, session, e, AVSession.OPERATION_UNKNOW, CommandPacket.UNSUPPORTED_OPERATION); 16 | } 17 | 18 | public abstract void onSessionOpen(Context context, AVSession session, int requestId); 19 | 20 | public abstract void onSessionClose(Context context, AVSession session, int requestId); 21 | 22 | public abstract void onSessionTokenRenewed(Context context, AVSession session, int requestId); 23 | 24 | public abstract void onSessionPaused(Context context, AVSession session); 25 | 26 | public abstract void onSessionResumed(Context context, AVSession session); 27 | 28 | public abstract void onOnlineQuery(Context context, AVSession session, List onlinePeerIds, 29 | int requestCode); 30 | 31 | public abstract void onGoaway(Context context, AVSession session); 32 | 33 | /* 34 | * 这个方法主要是用来处理服务器端的主动登出当前用户的登录的 35 | */ 36 | public abstract void onSessionClosedFromServer(Context context, AVSession session, int code); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/Signature.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import com.alibaba.fastjson.annotation.JSONType; 4 | 5 | import java.util.Collections; 6 | import java.util.List; 7 | 8 | /** 9 | * Created by nsun on 5/15/14. 10 | */ 11 | @JSONType(ignores = {"expired"}) 12 | public class Signature { 13 | 14 | private String signature; 15 | 16 | private long timestamp; 17 | 18 | private String nonce; 19 | 20 | private List signedPeerIds; 21 | 22 | @Deprecated 23 | public List getSignedPeerIds() { 24 | if (signedPeerIds == null) { 25 | signedPeerIds = Collections.emptyList(); 26 | } 27 | return signedPeerIds; 28 | } 29 | 30 | @Deprecated 31 | public void setSignedPeerIds(List signedPeerIds) { 32 | this.signedPeerIds = signedPeerIds; 33 | } 34 | 35 | public String getSignature() { 36 | return signature; 37 | } 38 | 39 | public void setSignature(String signature) { 40 | this.signature = signature; 41 | } 42 | 43 | public long getTimestamp() { 44 | return timestamp; 45 | } 46 | 47 | public void setTimestamp(long timestamp) { 48 | this.timestamp = timestamp; 49 | } 50 | 51 | public String getNonce() { 52 | return nonce; 53 | } 54 | 55 | public void setNonce(String nonce) { 56 | this.nonce = nonce; 57 | } 58 | 59 | protected boolean isExpired() { 60 | return timestamp + 14400 < (System.currentTimeMillis() / 1000); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/push/AVWebSocketListener.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.push; 2 | 3 | import com.avos.avoscloud.Messages; 4 | 5 | /** 6 | * Created by yangchaozhong on 3/28/14. 7 | */ 8 | public interface AVWebSocketListener { 9 | void onWebSocketOpen(); 10 | 11 | void onWebSocketClose(); 12 | 13 | void onDirectCommand(Messages.DirectCommand directCommand); 14 | 15 | void onSessionCommand(String op, Integer requestId, Messages.SessionCommand command); 16 | 17 | void onAckCommand(Integer requestKey, Messages.AckCommand ackCommand); 18 | 19 | void onMessageReceipt(Messages.RcpCommand rcpCommand); 20 | 21 | void onReadCmdReceipt(Messages.RcpCommand rcpCommand); 22 | 23 | void onListenerAdded(boolean open); 24 | 25 | void onListenerRemoved(); 26 | 27 | void onBlacklistCommand(String operation, Integer requestKey, Messages.BlacklistCommand blacklistCommand); 28 | 29 | void onConversationCommand(String operation, Integer requestKey, Messages.ConvCommand convCommand); 30 | 31 | void onError(Integer requestKey, Messages.ErrorCommand errorCommand); 32 | 33 | void onHistoryMessageQuery(Integer requestKey, Messages.LogsCommand command); 34 | 35 | void onGoaway(); 36 | 37 | /** 38 | * process unread count of offline messages 39 | */ 40 | void onUnreadMessagesCommand(Messages.UnreadCommand unreadCommand); 41 | 42 | void onMessagePatchCommand(boolean isModify, Integer requestKey, Messages.PatchCommand command); 43 | } 44 | -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/BaseAgentActivity.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.view.Window; 7 | import android.view.WindowManager; 8 | 9 | /** 10 | * 基础activity,用来处理公共的透明参数 11 | */ 12 | public class BaseAgentActivity extends Activity { 13 | 14 | public static final String EXTRA_IS_FULLSCREEN = "should_be_fullscreen"; 15 | 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | requestActivityTransparent(); 20 | } 21 | 22 | /** 23 | * 启用透明的跳板Activity 24 | */ 25 | private void requestActivityTransparent() { 26 | try { 27 | Intent intent = getIntent(); 28 | if (intent != null && intent.getBooleanExtra(EXTRA_IS_FULLSCREEN, false)) { 29 | getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 30 | } 31 | requestWindowFeature(Window.FEATURE_NO_TITLE); 32 | Window window = getWindow(); 33 | if (window != null) { 34 | window.addFlags(0x04000000); 35 | } 36 | } catch (Exception e) { 37 | HMSAgentLog.w("requestActivityTransparent exception:" + e.getMessage()); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVInternalLogger.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.util.Log; 4 | 5 | /** 6 | * Created by wli on 16/6/15. 7 | */ 8 | class AVInternalLogger extends AVLogger { 9 | 10 | @Override 11 | public int v(String tag, String msg) { 12 | return Log.v(tag, msg); 13 | } 14 | 15 | @Override 16 | public int v(String tag, String msg, Throwable tr) { 17 | return Log.v(tag, msg, tr); 18 | } 19 | 20 | @Override 21 | public int d(String tag, String msg) { 22 | return Log.d(tag, msg); 23 | } 24 | 25 | @Override 26 | public int d(String tag, String msg, Throwable tr) { 27 | return Log.d(tag, msg, tr); 28 | } 29 | 30 | @Override 31 | public int i(String tag, String msg) { 32 | return Log.i(tag, msg); 33 | } 34 | 35 | @Override 36 | public int i(String tag, String msg, Throwable tr) { 37 | return Log.i(tag, msg, tr); 38 | } 39 | 40 | @Override 41 | public int w(String tag, String msg) { 42 | return Log.w(tag, msg); 43 | } 44 | 45 | @Override 46 | public int w(String tag, String msg, Throwable tr) { 47 | return Log.w(tag, msg, tr); 48 | } 49 | 50 | @Override 51 | public int w(String tag, Throwable tr) { 52 | return Log.w(tag, tr); 53 | } 54 | 55 | @Override 56 | public int e(String tag, String msg) { 57 | return Log.e(tag, msg); 58 | } 59 | 60 | @Override 61 | public int e(String tag, String msg, Throwable tr) { 62 | return Log.e(tag, msg, tr); 63 | } 64 | } -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/SaveCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * A SaveCallback is used to run code after saving a AVObject in a background thread. 6 | *

7 | *

8 | * The easiest way to use a SaveCallback is through an anonymous inner class. Override the done 9 | * function to specify what the callback should do after the save is complete. The done function 10 | * will be run in the UI thread, while the save happens in a background thread. This ensures that 11 | * the UI does not freeze while the save happens. 12 | *

13 | *

14 | * For example, this sample code saves the object myObject and calls a different function depending 15 | * on whether the save succeeded or not. 16 | *

17 | * 18 | *
19 |  * myObject.saveInBackground(new SaveCallback() {
20 |  *   public void done(AVException e) {
21 |  *     if (e == null) {
22 |  *       myObjectSavedSuccessfully();
23 |  *     } else {
24 |  *       myObjectSaveDidNotSucceed();
25 |  *     }
26 |  *   }
27 |  * });
28 |  * 
29 | */ 30 | public abstract class SaveCallback extends AVCallback { 31 | 32 | /** 33 | * Override this function with the code you want to run after the save is complete. 34 | * 35 | * @param e The exception raised by the save, or null if it succeeded. 36 | */ 37 | public abstract void done(AVException e); 38 | 39 | protected final void internalDone0(java.lang.Void returnValue, AVException e) { 40 | done(e); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/messages/AVIMLocationMessage.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.messages; 2 | 3 | import com.avos.avoscloud.AVGeoPoint; 4 | import com.avos.avoscloud.im.v2.AVIMMessageCreator; 5 | import com.avos.avoscloud.im.v2.AVIMMessageField; 6 | import com.avos.avoscloud.im.v2.AVIMMessageType; 7 | import com.avos.avoscloud.im.v2.AVIMTypedMessage; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * Created by lbt05 on 1/22/15. 13 | */ 14 | @AVIMMessageType(type = AVIMMessageType.LOCATION_MESSAGE_TYPE) 15 | public class AVIMLocationMessage extends AVIMTypedMessage { 16 | public AVIMLocationMessage() { 17 | 18 | } 19 | 20 | 21 | @AVIMMessageField(name = "_lcloc") 22 | AVGeoPoint location; 23 | @AVIMMessageField(name = "_lctext") 24 | String text; 25 | @AVIMMessageField(name = "_lcattrs") 26 | Map attrs; 27 | 28 | public String getText() { 29 | return this.text; 30 | } 31 | 32 | public void setText(String text) { 33 | this.text = text; 34 | } 35 | 36 | public Map getAttrs() { 37 | return this.attrs; 38 | } 39 | 40 | public void setAttrs(Map attr) { 41 | this.attrs = attr; 42 | } 43 | 44 | public AVGeoPoint getLocation() { 45 | return location; 46 | } 47 | 48 | public void setLocation(AVGeoPoint location) { 49 | this.location = location; 50 | } 51 | 52 | public static final Creator CREATOR = new AVIMMessageCreator<>(AVIMLocationMessage.class); 53 | } 54 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/DeleteCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * A DeleteCallback is used to run code after saving a AVObject in a background thread. 6 | *

7 | *

8 | * The easiest way to use a DeleteCallback is through an anonymous inner class. Override the done 9 | * function to specify what the callback should do after the delete is complete. The done function 10 | * will be run in the UI thread, while the delete happens in a background thread. This ensures that 11 | * the UI does not freeze while the delete happens. 12 | *

13 | *

14 | * For example, this sample code deletes the object myObject and calls a different function 15 | * depending on whether the save succeeded or not. 16 | *

17 | * 18 | *
19 |  * myObject.deleteInBackground(new DeleteCallback() {
20 |  *   public void done(AVException e) {
21 |  *     if (e == null) {
22 |  *       myObjectWasDeletedSuccessfully();
23 |  *     } else {
24 |  *       myObjectDeleteDidNotSucceed();
25 |  *     }
26 |  *   }
27 |  * });
28 |  * 
29 | */ 30 | public abstract class DeleteCallback extends AVCallback { 31 | /** 32 | * Override this function with the code you want to run after the delete is complete. 33 | * 34 | * @param e The exception raised by the delete, or null if it succeeded. 35 | */ 36 | public abstract void done(AVException e); 37 | 38 | protected final void internalDone0(Void returnValue, AVException e) { 39 | done(e); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avospush/session/MessagePatchModifiedPacket.java: -------------------------------------------------------------------------------- 1 | package com.avos.avospush.session; 2 | 3 | import com.avos.avoscloud.Messages; 4 | import com.avos.avoscloud.im.v2.AVIMClient; 5 | 6 | /** 7 | * Created by wli on 2017/6/30. 8 | */ 9 | public class MessagePatchModifiedPacket extends PeerBasedCommandPacket { 10 | 11 | private long lastPatchTime; 12 | 13 | public MessagePatchModifiedPacket() { 14 | this.setCmd("patch"); 15 | } 16 | 17 | @Override 18 | protected Messages.GenericCommand.Builder getGenericCommandBuilder() { 19 | Messages.GenericCommand.Builder builder = super.getGenericCommandBuilder(); 20 | builder.setOp(Messages.OpType.modified); 21 | builder.setPatchMessage(getPatchCommand()); 22 | return builder; 23 | } 24 | 25 | protected Messages.PatchCommand getPatchCommand() { 26 | Messages.PatchCommand.Builder builder = Messages.PatchCommand.newBuilder(); 27 | builder.setLastPatchTime(lastPatchTime); 28 | return builder.build(); 29 | } 30 | 31 | public static MessagePatchModifiedPacket getPatchMessagePacket(String peerId, long lastPatchTime) { 32 | MessagePatchModifiedPacket messagePatchModifiedPacket = new MessagePatchModifiedPacket(); 33 | if (AVIMClient.getClientsCount() > 1) { 34 | // peerId is necessary only when more than 1 client logined. 35 | messagePatchModifiedPacket.setPeerId(peerId); 36 | } 37 | messagePatchModifiedPacket.lastPatchTime = lastPatchTime; 38 | return messagePatchModifiedPacket; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/SignUpCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * A SignUpCallback is used to run code after signing up a AVUser in a background thread. 6 | *

7 | *

8 | * The easiest way to use a SignUpCallback is through an anonymous inner class. Override the done 9 | * function to specify what the callback should do after the save is complete. The done function 10 | * will be run in the UI thread, while the signup happens in a background thread. This ensures that 11 | * the UI does not freeze while the signup happens. 12 | *

13 | *

14 | * For example, this sample code signs up the object myUser and calls a different function depending 15 | * on whether the signup succeeded or not. 16 | *

17 | * 18 | *
19 |  * myUser.signUpInBackground(new SignUpCallback() {
20 |  *   public void done(AVException e) {
21 |  *     if (e == null) {
22 |  *       myUserSignedUpSuccessfully();
23 |  *     } else {
24 |  *       myUserSignUpDidNotSucceed();
25 |  *     }
26 |  *   }
27 |  * });
28 |  * 
29 | */ 30 | public abstract class SignUpCallback extends AVCallback { 31 | 32 | /** 33 | * Override this function with the code you want to run after the signUp is complete. 34 | * 35 | * @param e The exception raised by the signUp, or null if it succeeded. 36 | */ 37 | public abstract void done(AVException e); 38 | 39 | protected final void internalDone0(Void t, AVException avException) { 40 | this.done(avException); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/ops/NullOP.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.ops; 2 | 3 | import java.util.Collections; 4 | import java.util.Iterator; 5 | import java.util.Map; 6 | 7 | import com.avos.avoscloud.AVObject; 8 | 9 | public class NullOP implements AVOp { 10 | 11 | public static NullOP INSTANCE = new NullOP(); 12 | 13 | public NullOP() { 14 | super(); 15 | } 16 | 17 | @Override 18 | public T cast(Class clazz) { 19 | throw new UnsupportedOperationException(); 20 | } 21 | 22 | @Override 23 | public Iterator iterator() { 24 | throw new UnsupportedOperationException(); 25 | } 26 | 27 | @Override 28 | public String key() { 29 | return "__ALL_POSSIABLE_KEYS"; 30 | } 31 | 32 | @Override 33 | public OpType type() { 34 | return OpType.Null; 35 | } 36 | 37 | @Override 38 | public Object apply(Object obj) { 39 | return obj; 40 | } 41 | 42 | @Override 43 | public AVOp merge(AVOp other) { 44 | return other; 45 | } 46 | 47 | @Override 48 | public Map encodeOp() { 49 | return Collections.emptyMap(); 50 | } 51 | 52 | @Override 53 | public int size() { 54 | // TODO Auto-generated method stub 55 | return 0; 56 | } 57 | 58 | @Override 59 | public AVOp get(int idx) { 60 | // TODO Auto-generated method stub 61 | return null; 62 | } 63 | 64 | @Override 65 | public AVOp remove(int idx) { 66 | // TODO Auto-generated method stub 67 | return null; 68 | } 69 | 70 | public Object getValues(){ 71 | return null; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMMessageInterval.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | /** 4 | * Message Query Interval 5 | * Created by fengjunwen on 2017/9/5. 6 | */ 7 | 8 | public class AVIMMessageInterval { 9 | public AVIMMessageIntervalBound startIntervalBound; 10 | public AVIMMessageIntervalBound endIntervalBound; 11 | 12 | public static class AVIMMessageIntervalBound { 13 | public String messageId; 14 | public long timestamp; 15 | public boolean closed; 16 | private AVIMMessageIntervalBound(String messageId, long timestamp, boolean closed) { 17 | this.messageId = messageId; 18 | this.timestamp = timestamp; 19 | this.closed = closed; 20 | } 21 | } 22 | 23 | /** 24 | * create query bound 25 | * @param messageId - message id 26 | * @param timestamp - message timestamp 27 | * @param closed - included specified message flag. 28 | * true: include 29 | * false: not include. 30 | * @return query interval bound instance 31 | */ 32 | public static AVIMMessageIntervalBound createBound(String messageId, long timestamp, boolean closed) { 33 | return new AVIMMessageIntervalBound(messageId, timestamp, closed); 34 | } 35 | 36 | /** 37 | * query interval constructor. 38 | * @param start - interval start bound 39 | * @param end - interval end bound 40 | */ 41 | public AVIMMessageInterval(AVIMMessageIntervalBound start, AVIMMessageIntervalBound end) { 42 | this.startIntervalBound = start; 43 | this.endIntervalBound = end; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /avoscloud-statistics/src/main/java/com/avos/avoscloud/BoosterRequestController.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import android.os.Message; 4 | 5 | /** 6 | * 改变启动时发送的业务逻辑 7 | * 8 | * 原本的启动时发送是指在整个App被启动时才发送,一来不合理,二来不可控制 9 | * 10 | * 所以现在改成新起一个session就要发送 11 | * 12 | * Created by lbt05 on 2/13/15. 13 | */ 14 | class BoosterRequestController extends BasicAnalyticsRequestController { 15 | String currentSessionId; 16 | String tmpSessionId; 17 | 18 | BoosterRequestController(String sessionId, AnalyticsRequestDispatcher dispatcher) { 19 | super(dispatcher); 20 | this.currentSessionId = sessionId; 21 | } 22 | 23 | 24 | private Message makeMessage(String sessionId) { 25 | Message msg = new Message(); 26 | msg.obj = sessionId; 27 | return msg; 28 | } 29 | 30 | @Override 31 | public void requestToSend(String sessionId) { 32 | asyncHandler.sendMessage(makeMessage(sessionId)); 33 | } 34 | 35 | @Override 36 | public void quit() { 37 | 38 | } 39 | 40 | @Override 41 | public void prepareRequest() { 42 | if (AVOSCloud.isDebugLogEnabled() && AVOSCloud.showInternalDebugLog()) { 43 | LogUtil.avlog.d("sent analytics request on booster"); 44 | } 45 | } 46 | 47 | @Override 48 | public boolean requestValidate(Message message) { 49 | tmpSessionId = (String) message.obj; 50 | return (!AVUtils.isBlankString(currentSessionId) && !currentSessionId.equals(tmpSessionId)) 51 | && super.requestValidate(message); 52 | } 53 | 54 | @Override 55 | public void onRequestDone() { 56 | currentSessionId = tmpSessionId; 57 | 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /avoscloud-push/src/test/java/com/avos/avoscloud/AVPushWebSocketClientTests.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | import org.junit.runner.RunWith; 6 | import org.robolectric.RobolectricTestRunner; 7 | import org.robolectric.RuntimeEnvironment; 8 | import org.robolectric.annotation.Config; 9 | 10 | import java.net.URI; 11 | import java.nio.ByteBuffer; 12 | 13 | /** 14 | * Created by fengjunwen on 2017/9/4. 15 | */ 16 | 17 | @RunWith(RobolectricTestRunner.class) 18 | @Config(constants = BuildConfig.class, manifest = Config.NONE, sdk = 21) 19 | public class AVPushWebSocketClientTests { 20 | 21 | private AVPushWebSocketClient.AVPacketParser listener = new AVPushWebSocketClient.AVPacketParser() { 22 | @Override 23 | public void loginCmd() { 24 | 25 | } 26 | 27 | @Override 28 | public void processCommand(ByteBuffer bytes) { 29 | 30 | } 31 | 32 | @Override 33 | public void processConnectionStatus(AVException e) { 34 | 35 | } 36 | 37 | @Override 38 | public void processRemoteServerNotAvailable() { 39 | 40 | } 41 | 42 | @Override 43 | public void processSessionsStatus(boolean closeEvent) { 44 | 45 | } 46 | }; 47 | 48 | @Before 49 | public void setUp() { 50 | AVOSCloud.applicationContext = RuntimeEnvironment.application; 51 | } 52 | @Test 53 | public void testVPNUrl() { 54 | String pushServer = "wss://intviu-rtm.leancloud.cn/"; 55 | AVPushWebSocketClient client = new AVPushWebSocketClient(URI.create(pushServer), listener, "lc.protobuf2.3", true); 56 | client.connect(); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/callback/AVIMOperationPartiallySucceededCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2.callback; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | import com.avos.avoscloud.AVCallback; 9 | import com.avos.avoscloud.AVException; 10 | import com.avos.avoscloud.im.v2.AVIMException; 11 | import com.avos.avoscloud.im.v2.Conversation; 12 | 13 | /** 14 | * Created by fengjunwen on 2017/12/20. 15 | */ 16 | 17 | public abstract class AVIMOperationPartiallySucceededCallback extends AVCallback> { 18 | /** 19 | * 部分成功结果回调函数 20 | * 21 | * @param e 异常实例,如果 null != e 则表示操作失败,此时不用参考后面的两个参数 successfulClientIds/failures。 22 | * @param successfulClientIds 操作整体成功(此时 null == e),其中成功的成员 id 列表。 23 | * @param failures 操作整体成功(此时 null == e),其中部分失败的成员信息列表。 24 | */ 25 | public abstract void done(AVIMException e, List successfulClientIds, List failures); 26 | 27 | @Override 28 | protected final void internalDone0(Map returnValue, AVException e) { 29 | if (null != e) { 30 | done(AVIMException.wrapperAVException(e), null, null); 31 | } else { 32 | String[] allowed = (String[]) returnValue.get(Conversation.callbackConvMemberMuted_SUCC); 33 | ArrayList failed = (ArrayList) returnValue.get(Conversation.callbackConvMemberMuted_FAIL); 34 | 35 | done(AVIMException.wrapperAVException(e), Arrays.asList(allowed), failed); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/RefreshCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * A RefreshCallback is used to run code after refresh is used to update a AVObject in a background 6 | * thread. 7 | *

8 | *

9 | * The easiest way to use a RefreshCallback is through an anonymous inner class. Override the done 10 | * function to specify what the callback should do after the refresh is complete. The done function 11 | * will be run in the UI thread, while the refresh happens in a background thread. This ensures that 12 | * the UI does not freeze while the refresh happens. 13 | *

14 | *

15 | * For example, this sample code refreshes an object of class "MyClass" and id myId. It calls a 16 | * different function depending on whether the refresh succeeded or not. 17 | *

18 | * 19 | *
20 |  * object.refreshInBackground(new RefreshCallback() {
21 |  *   public void done(AVObject object, AVException e) {
22 |  *     if (e == null) {
23 |  *       objectWasRefreshedSuccessfully(object);
24 |  *     } else {
25 |  *       objectRefreshFailed();
26 |  *     }
27 |  *   }
28 |  * });
29 |  * 
30 | */ 31 | public abstract class RefreshCallback extends AVCallback { 32 | /** 33 | * Override this function with the code you want to run after the save is complete. 34 | * 35 | * @param e The exception raised by the save, or null if it succeeded. 36 | */ 37 | public abstract void done(T object, AVException e); 38 | 39 | protected final void internalDone0(T returnValue, AVException e) { 40 | done(returnValue, e); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /avoscloud-search/src/main/res/layout/avoscloud_search_result_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 17 | 24 | 25 | 26 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVFriendship.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.LinkedList; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | /** 8 | * 用户好友关系,同时包含用户的粉丝和用户的关注 9 | */ 10 | public class AVFriendship { 11 | 12 | List followers = new LinkedList(); 13 | List followees = new LinkedList(); 14 | 15 | AVUser user; 16 | 17 | /** 18 | * 获取用户的粉丝 19 | * 20 | * @return 21 | */ 22 | public List getFollowers() { 23 | return followers; 24 | } 25 | 26 | protected void setFollowers(List followers) { 27 | this.followers = followers; 28 | } 29 | 30 | /** 31 | * 获取用户的关注 32 | * 33 | * @return 34 | */ 35 | public List getFollowees() { 36 | return followees; 37 | } 38 | 39 | protected void setFollowees(List followees) { 40 | this.followees = followees; 41 | } 42 | 43 | public AVUser getUser() { 44 | return user; 45 | } 46 | 47 | protected void setUser(AVUser user) { 48 | this.user = user; 49 | } 50 | 51 | static class AVFriendshipResponse { 52 | List> followers; 53 | List> followees; 54 | 55 | public List> getFollowers() { 56 | return followers; 57 | } 58 | 59 | public void setFollowers(List> followers) { 60 | this.followers = followers; 61 | } 62 | 63 | public List> getFollowees() { 64 | return followees; 65 | } 66 | 67 | public void setFollowees(List> followees) { 68 | this.followees = followees; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/GetFileCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * 5 | *

6 | * A GetFileCallback is used to run code after a AVFile.parseFileWithObjectId is used to fetch a 7 | * AVFile by object id in a background thread. 8 | *

9 | *

10 | * The easiest way to use a GetFileCallback is through an anonymous inner class. Override the done 11 | * function to specify what the callback should do after the fetch is complete. The done function 12 | * will be run in the UI thread, while the fetch happens in a background thread. This ensures that 13 | * the UI does not freeze while the fetch happens. 14 | *

15 | *

16 | * For example, this sample code fetches an AVFile with object id 'myId': 17 | *

18 | * 19 | *
20 |  * AVFile.parseFileWithObjectId(myId, new GetFileCallback<AVFile>() {
21 |  *   public void done(AVFile file, AVException e) {
22 |  *     if (e == null) {
23 |  *       fileWasRetrievedSuccessfully(object);
24 |  *     } else {
25 |  *       fileRetrievalFailed();
26 |  *     }
27 |  *   }
28 |  * });
29 |  * 
30 | */ 31 | 32 | public abstract class GetFileCallback extends AVCallback { 33 | /** 34 | * Override this function with the code you want to run after the fetch is complete. 35 | * 36 | * @param object The object that was retrieved, or null if it did not succeed. 37 | * @param e The exception raised by the save, or null if it succeeded. 38 | */ 39 | public abstract void done(T object, AVException e); 40 | 41 | protected final void internalDone0(T returnValue, AVException e) { 42 | done(returnValue, e); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /avoscloud-fcm/src/main/java/com/avos/avoscloud/AVFirebaseMessagingService.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.alibaba.fastjson.JSONObject; 5 | 6 | import com.google.firebase.messaging.FirebaseMessagingService; 7 | import com.google.firebase.messaging.RemoteMessage; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * Created by fengjunwen on 2018/8/28. 13 | */ 14 | 15 | public class AVFirebaseMessagingService extends FirebaseMessagingService { 16 | /** 17 | * FCM 有两种消息:通知消息与数据消息。 18 | * 通知消息 -- 就是普通的通知栏消息,应用在后台的时候,通知消息会直接显示在通知栏,默认情况下, 19 | * 用户点按通知即可打开应用启动器(通知消息附带的参数在 Bundle 内),我们无法处理。 20 | * 21 | * 数据消息 -- 类似于其他厂商的「透传消息」。应用在前台的时候,数据消息直接发送到应用内,应用层通过这一接口进行响应。 22 | * 23 | * @param remoteMessage 24 | */ 25 | @Override 26 | public void onMessageReceived(RemoteMessage remoteMessage) { 27 | Map data = remoteMessage.getData(); 28 | if (null == data) { 29 | return; 30 | } 31 | LogUtil.log.d("received message from: " + remoteMessage.getFrom() + ", payload: " + data.toString()); 32 | try { 33 | JSONObject jsonObject = JSON.parseObject(data.get("payload")); 34 | if (null != jsonObject) { 35 | String channel = jsonObject.getString("_channel"); 36 | String action = jsonObject.getString("action"); 37 | 38 | AVNotificationManager.getInstance().processGcmMessage(channel, action, jsonObject.toJSONString()); 39 | } 40 | } catch (Exception ex) { 41 | LogUtil.avlog.e("failed to parse push data.", ex); 42 | } 43 | } 44 | 45 | @Override 46 | public void onDeletedMessages() { 47 | super.onDeletedMessages(); 48 | } 49 | } -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/RequestEmailVerifyCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * RequestEmailVerifyCallback 用来验证用户的邮箱. 6 | *

7 | *

8 | * The easiest way to use a RequestEmailVerifyCallback is through an anonymous inner class. Override 9 | * the done function to specify what the callback should do after the request is complete. The done 10 | * function will be run in the UI thread, while the request happens in a background thread. This 11 | * ensures that the UI does not freeze while the request happens. 12 | *

13 | *

14 | * For example, this sample code requests an email verify for a user and calls a different function 15 | * depending on whether the request succeeded or not. 16 | *

17 | * 18 | *
19 |  * AVUser.requestEmailVerfiyInBackground("forgetful@example.com",
20 |  *     new RequestEmailVerifyCallback() {
21 |  *       public void done(AVException e) {
22 |  *         if (e == null) {
23 |  *           requestedSuccessfully();
24 |  *         } else {
25 |  *           requestDidNotSucceed();
26 |  *         }
27 |  *       }
28 |  *     });
29 |  * 
30 | */ 31 | public abstract class RequestEmailVerifyCallback extends AVCallback { 32 | /** 33 | * Override this function with the code you want to run after the request is complete. 34 | * 35 | * @param e The exception raised by the save, or null if no account is associated with the email 36 | * address. 37 | */ 38 | public abstract void done(AVException e); 39 | 40 | @Override 41 | protected void internalDone0(Void t, AVException avException) { 42 | this.done(avException); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/LogInCallback.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | *

5 | * A LogInCallback is used to run code after logging in a user. 6 | *

7 | *

8 | * The easiest way to use a LogInCallback is through an anonymous inner class. Override the done 9 | * function to specify what the callback should do after the login is complete. The done function 10 | * will be run in the UI thread, while the login happens in a background thread. This ensures that 11 | * the UI does not freeze while the save happens. 12 | *

13 | *

14 | * For example, this sample code logs in a user and calls a different function depending on whether 15 | * the login succeeded or not. 16 | *

17 | * 18 | *
19 |  * AVUser.logInInBackground("username", "password", new LogInCallback() {
20 |  *   public void done(AVUser user, AVException e) {
21 |  *     if (e == null && user != null) {
22 |  *       loginSuccessful();
23 |  *     } else if (user == null) {
24 |  *       usernameOrPasswordIsInvalid();
25 |  *     } else {
26 |  *       somethingWentWrong();
27 |  *     }
28 |  *   }
29 |  * });
30 |  * 
31 | */ 32 | public abstract class LogInCallback extends AVCallback { 33 | /** 34 | * Override this function with the code you want to run after the save is complete. 35 | * 36 | * @param user The user that logged in, if the username and password is valid. 37 | * @param e The exception raised by the login. 38 | */ 39 | public abstract void done(T user, AVException e); 40 | 41 | protected final void internalDone0(T returnValue, AVException e) { 42 | done(returnValue, e); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /avoscloud-sdk/src/main/java/com/avos/avoscloud/AVLogger.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | /** 4 | * Created by wli on 16/6/15. 5 | */ 6 | public abstract class AVLogger { 7 | public static final int LOG_LEVEL_VERBOSE = 1 << 1; 8 | public static final int LOG_LEVEL_DEBUG = 1 << 2; 9 | public static final int LOG_LEVEL_INFO = 1 << 3; 10 | public static final int LOG_LEVEL_WARNING = 1 << 4; 11 | public static final int LOG_LEVEL_ERROR = 1 << 5; 12 | public static final int LOG_LEVEL_NONE = ~0; 13 | boolean enabled; 14 | int logLevel = LOG_LEVEL_NONE; 15 | 16 | public boolean isDebugEnabled() { 17 | return enabled; 18 | } 19 | 20 | public void setDebugEnabled(boolean enable) { 21 | enabled = enable; 22 | } 23 | 24 | public boolean showInternalDebugLog() { 25 | return false; 26 | } 27 | 28 | public int getLogLevel() { 29 | return logLevel; 30 | } 31 | 32 | public void setLogLevel(int logLevel) { 33 | this.logLevel = logLevel; 34 | } 35 | 36 | public abstract int v(String tag, String msg); 37 | 38 | public abstract int v(String tag, String msg, Throwable tr); 39 | 40 | public abstract int d(String tag, String msg); 41 | 42 | public abstract int d(String tag, String msg, Throwable tr); 43 | 44 | public abstract int i(String tag, String msg); 45 | 46 | public abstract int i(String tag, String msg, Throwable tr); 47 | 48 | public abstract int w(String tag, String msg); 49 | 50 | public abstract int w(String tag, String msg, Throwable tr); 51 | 52 | 53 | public abstract int w(String tag, Throwable tr); 54 | 55 | public abstract int e(String tag, String msg); 56 | 57 | public abstract int e(String tag, String msg, Throwable tr); 58 | } -------------------------------------------------------------------------------- /hmsagent/src/main/java/com/huawei/android/hms/agent/common/ThreadUtil.java: -------------------------------------------------------------------------------- 1 | package com.huawei.android.hms.agent.common; 2 | 3 | import android.os.Handler; 4 | import android.os.Looper; 5 | 6 | import java.util.concurrent.ExecutorService; 7 | import java.util.concurrent.Executors; 8 | 9 | /** 10 | * 线程工具,用于执行线程等 11 | */ 12 | public final class ThreadUtil { 13 | public static final ThreadUtil INST = new ThreadUtil(); 14 | 15 | private ExecutorService executors; 16 | 17 | private ThreadUtil(){ 18 | } 19 | 20 | /** 21 | * 在线程中执行 22 | * @param runnable 要执行的runnable 23 | */ 24 | public void excute(Runnable runnable) { 25 | ExecutorService executorService = getExecutorService(); 26 | if (executorService != null) { 27 | // 优先使用线程池,提高效率 28 | executorService.execute(runnable); 29 | } else { 30 | // 线程池获取失败,则直接使用线程 31 | new Thread(runnable).start(); 32 | } 33 | } 34 | 35 | /** 36 | * 在主线程中执行 37 | * @param runnable 要执行的runnable 38 | */ 39 | public void excuteInMainThread(Runnable runnable){ 40 | new Handler(Looper.getMainLooper()).post(runnable); 41 | } 42 | 43 | /** 44 | * 获取缓存线程池 45 | * @return 缓存线程池服务 46 | */ 47 | private ExecutorService getExecutorService(){ 48 | if (executors == null) { 49 | try { 50 | executors = Executors.newCachedThreadPool(); 51 | } catch (Exception e) { 52 | HMSAgentLog.e("create thread service error:" + e.getMessage()); 53 | } 54 | } 55 | 56 | return executors; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/HeartBeatPolicy.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud; 2 | 3 | import java.util.concurrent.Future; 4 | import java.util.concurrent.ScheduledThreadPoolExecutor; 5 | import java.util.concurrent.TimeUnit; 6 | 7 | /** 8 | * Created by wli on 2017/6/7. 9 | */ 10 | 11 | abstract class HeartBeatPolicy { 12 | 13 | /** 14 | * 定时任务 15 | */ 16 | private static final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1); 17 | 18 | private Future healthFuture; 19 | 20 | /** 21 | * 最近收到 ping 的时间 22 | */ 23 | private long lastPongTS; 24 | 25 | /** 26 | * 心跳设置为 180s 27 | */ 28 | private final long HEART_BEAT_INTERNAL = 180 * 1000; 29 | 30 | /** 31 | * 超时时长设置为两个心跳 32 | */ 33 | private final long HEALTHY_THRESHOLD = HEART_BEAT_INTERNAL * 2; 34 | 35 | private Runnable healthMonitor = new Runnable() { 36 | @Override 37 | public void run() { 38 | if (System.currentTimeMillis() - lastPongTS > HEALTHY_THRESHOLD) { 39 | onTimeOut(); 40 | } else { 41 | sendPing(); 42 | } 43 | } 44 | }; 45 | 46 | synchronized void onPong() { 47 | lastPongTS = System.currentTimeMillis(); 48 | } 49 | 50 | synchronized void startHeartbeat() { 51 | stopHeartbeat(); 52 | lastPongTS = System.currentTimeMillis(); 53 | healthFuture = executor.scheduleAtFixedRate(healthMonitor, HEART_BEAT_INTERNAL, HEART_BEAT_INTERNAL, 54 | TimeUnit.MILLISECONDS); 55 | } 56 | 57 | synchronized void stopHeartbeat() { 58 | if (null != healthFuture) { 59 | healthFuture.cancel(true); 60 | } 61 | } 62 | 63 | public abstract void onTimeOut(); 64 | 65 | public abstract void sendPing(); 66 | } 67 | -------------------------------------------------------------------------------- /hmsagent/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\DevApps\android\android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -ignorewarning 27 | 28 | -keepattributes *Annotation* 29 | -keepattributes Exceptions 30 | -keepattributes InnerClasses 31 | -keepattributes Signature 32 | -keepattributes SourceFile,LineNumberTable 33 | 34 | -keep class com.hianalytics.android.**{*;} 35 | -keep class com.huawei.updatesdk.**{*;} 36 | -keep class com.huawei.hms.**{*;} 37 | -keep class com.huawei.gamebox.plugin.gameservice.**{*;} 38 | -keep public class com.huawei.android.hms.agent.** extends android.app.Activity { public *; protected *; } 39 | -keep interface com.huawei.android.hms.agent.common.INoProguard {*;} 40 | -keep class * extends com.huawei.android.hms.agent.common.INoProguard {*;} 41 | -------------------------------------------------------------------------------- /avoscloud-push/src/main/java/com/avos/avoscloud/im/v2/AVIMConversationQueryConditions.java: -------------------------------------------------------------------------------- 1 | package com.avos.avoscloud.im.v2; 2 | 3 | import com.avos.avoscloud.QueryConditions; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * Created by wli on 2016/11/1. 9 | */ 10 | 11 | final class AVIMConversationQueryConditions extends QueryConditions { 12 | private boolean isWithLastMessageRefreshed = false; 13 | private boolean isCompact = false; 14 | 15 | /** 16 | * 是否携带最后一条消息 17 | * 18 | * @return 19 | */ 20 | public boolean isWithLastMessagesRefreshed() { 21 | return isWithLastMessageRefreshed; 22 | } 23 | 24 | /** 25 | * 设置是否携带最后一条消息 26 | * 27 | * @param isWithLastMessageRefreshed 28 | */ 29 | public void setWithLastMessagesRefreshed(boolean isWithLastMessageRefreshed) { 30 | this.isWithLastMessageRefreshed = isWithLastMessageRefreshed; 31 | } 32 | 33 | public void setCompact(boolean isCompact) { 34 | this.isCompact = isCompact; 35 | } 36 | 37 | @Override 38 | public Map assembleParameters() { 39 | Map parameters = super.assembleParameters(); 40 | if (isWithLastMessageRefreshed) { 41 | parameters.put(Conversation.QUERY_PARAM_LAST_MESSAGE, Boolean.toString(isWithLastMessageRefreshed)); 42 | } else if (parameters.containsKey(Conversation.QUERY_PARAM_LAST_MESSAGE)) { 43 | parameters.remove(Conversation.QUERY_PARAM_LAST_MESSAGE); 44 | } 45 | 46 | if (isCompact) { 47 | parameters.put(Conversation.QUERY_PARAM_COMPACT, Boolean.toString(isCompact)); 48 | } else if (parameters.containsKey(Conversation.QUERY_PARAM_COMPACT)) { 49 | parameters.remove(Conversation.QUERY_PARAM_COMPACT); 50 | } 51 | return parameters; 52 | } 53 | } 54 | --------------------------------------------------------------------------------