龙虎国际娱乐平台

友盟+搜索

{{errorMsg}}

龙虎国际娱乐平台概述

友盟微社区,旨在帮助开发者在 APP 内快速建立一个专属的社区,让用户与用户、用户与开发者之间可以双向沟通,同时借助话题和关系链,用户可自行创造、传播高价值内容,提高 APP 粘性。

创建微社区,获取AppKey

1)如果你尚未在友盟注册开发者账号,需要先注册
2)如果你之前已经在友盟注册了开发者账户,可以直接使用该账户登录。
3)得到账户之后到友盟微社区官网进行登录,登录成功之后并进入到"我的社区",点击**添加新社区**,输出社区相关信息之后点击创建即可。
4)然后点击新创建的社区的"社区管理",进入到社区设置页面,选择"应用"一栏,然后再选择"创建新应用"或者"添加新应用",此时你可以新建应用或者从已有的应用中选择,填写完应用基本信息后,点击"创建"即可。
5)此时您就会得到友盟Appkey。
注:一个微社区可对应多个Appkey。 详情请看龙虎国际娱乐平台文档使用流程

下载并集成SDK

友盟微社区Android SDK下载最新的SDK。

环境1-Eclipse

添加资源文件和jar文件有两种方式,请根据您的需求进行选择

方法A:添加工程引用(升级方便,推荐)

下载Android微社区_DEMO,解压后,将文件夹中的umeng_community_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。
Demo压缩包目录

方法B:添加资源到现有项目中

解压Android微社区_SDK压缩包,将文件夹中的umeng_community_android_sdk_library文件下面的core、location、login、push、ui(ui中db和main是必选的,dicuss和weibo分别对应AG龙虎国际娱乐网站版和微博版,二者只能选其一)、share、social_sdk,(如果您未使用自带的登录和分享,该包可以不拷贝)目录中libs跟res文件夹复制到你的项目工程根目录下(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程Path中):
SDK压缩包目录

环境2-Android Studio

下载Android微社区_DEMO,解压后,在Android Studio 选择File->New->Import Module…,选择umeng_community_library_project文件夹。

精简版说明:

精简版的demo工程需要依赖umeng_community_simplify_library_project工程,并且注入精简版的登录方式和登录成功策略。 LoginSDKManager.getInstance().addAndUse(new LoginSimplify()); CommConfig.getConfig().setLoginResultStrategy(new LoginSuccessStrategory()); 使用自己登录系统的用户,可以注入自己的登录方式。

环境配置

AndroidManifest.xml配置

将下面几个配置拷贝到AndroidManifest.xml中相应的位置. (由于不同版本中mainfest中activity不同,使用不同版本请参考对应版本的demo工程中的mainfest)

权限配置

<!-- 使用相机 --> <uses-feature android:name="android.hardware.camera" android:required="true" /> <!-- 检测网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取mac地址作为用户的备用唯一标识 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取用户手机的IMEI,用来唯一的标识用户 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 缓存资源优先存入SDcard --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许应用程序联网,以便向我们的服务器端发送数据 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 定位所需的权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 推送相关的权限 --> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- QQ登录所需权限 --> <uses-permission android:name="android.permission.GET_TASKS" />

Activity与Service注册

<!-- 微博版activity组件 start --> <activity android:name="com.umeng.commm.ui.activities.FindActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.FindActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <!--用户中心--> <activity android:name="com.umeng.commm.ui.activities.UserInfoActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.UserInfoActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.commm.ui.activities.TopicActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- 话题详情页--> <activity android:name="com.umeng.commm.ui.activities.TopicDetailActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.TopicDetailActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <!--话题--> <activity android:name="com.umeng.commm.ui.activities.FeedsActivity" android:alwaysRetainTaskState="true" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.FeedsActivity" android:alwaysRetainTaskState="true" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- 搜索结果Activity --> <activity android:name="com.umeng.commm.ui.activities.RelativeUserActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.RelativeUserActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" /> <!--发表--> <activity android:name="com.umeng.commm.ui.activities.PostFeedActivity" android:configChanges="orientation|keyboardHidden" android:exported="true" android:windowSoftInputMode="stateHidden|adjustResize" > </activity> <activity android:name="com.umeng.comm.ui.activities.PostFeedActivity" android:configChanges="orientation|keyboardHidden" android:exported="true" android:windowSoftInputMode="stateHidden|adjustResize" > </activity> <!--topic picker--> <activity android:name="com.umeng.comm.ui.activities.TopicPickActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- forward--> <activity android:name="com.umeng.commm.ui.activities.ForwardActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.ForwardActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- 搜索Activity --> <activity android:name="com.umeng.commm.ui.activities.SearchActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.SearchActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- searchtopic --> <activity android:name="com.umeng.commm.ui.activities.SearchTopicActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateVisible|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.SearchTopicActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateVisible|adjustResize" /> <!-- feed详情页面 --> <activity android:name="com.umeng.commm.ui.activities.FeedDetailActivity" android:configChanges="orientation|keyboardHidden" android:launchMode="singleTask" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.FeedDetailActivity" android:configChanges="orientation|keyboardHidden" android:launchMode="singleTask" android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- guide--> <activity android:name="com.umeng.commm.ui.activities.GuideActivity" android:configChanges="orientation|keyboardHidden" android:launchMode="singleTask" android:windowSoftInputMode="stateHidden|adjustResize" /> <activity android:name="com.umeng.comm.ui.activities.GuideActivity" android:configChanges="orientation|keyboardHidden" android:launchMode="singleTask" android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- feed详情页面 --> <!-- 设置页面activity --> <activity android:name="com.umeng.comm.ui.imagepicker.activities.SettingActivity" /> <!--<activity android:name="com.umeng.comm.ui.activities.SettingActivity" />--> <!-- 引导页面activity --> <!--<activity android:name="com.umeng.comm.ui.activities.GuideBaseActivity" />--> <!-- 点赞用户页面 --> <activity android:name="com.umeng.commm.ui.activities.LikeUsersActivity" /> <activity android:name="com.umeng.comm.ui.activities.LikeUsersActivity" /> <!-- 友盟登录界面 --> <activity android:name="com.umeng.community.login.LoginActivity" /> <!-- 显示某个位置Feed的Activity --> <activity android:name="com.umeng.commm.ui.activities.LocationFeedActivity" /> <activity android:name="com.umeng.comm.ui.activities.LocationFeedActivity" /> <!-- ##################分享相关#################### --> <!-- 腾讯SSO授权的Activity注册 --> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent1104606393" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- 微信回调activity --> <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name=".WBShareActivity" android:configChanges="keyboardHidden|orientation" android:screenOrientation="portrait" > <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="adjustResize" android:exported="false" > </activity> <service android:name="com.sina.weibo.sdk.net.DownloadService" android:exported="false"></service> <activity android:name="com.umeng.common.ui.activities.AlbumActivity" /> <activity android:name="com.umeng.commm.ui.activities.FollowedTopicActivity" /> <activity android:name="com.umeng.comm.ui.activities.FollowedTopicActivity" /> <activity android:name="com.umeng.commm.ui.activities.NotificationActivity" /> <activity android:name="com.umeng.comm.ui.activities.NotificationActivity" /> <activity android:name="com.umeng.commm.ui.activities.NewMsgActivity" /> <activity android:name="com.umeng.comm.ui.activities.NewMsgActivity" /> <!-- 图片选择相关 --> <activity android:name="com.umeng.common.ui.imagepicker.PhotoSelectorActivity" /> <activity android:name="com.umeng.common.ui.imagepicker.PhotoPreviewActivity" /> <activity android:name="com.umeng.common.ui.activities.MessageChatActivity" /> <meta-data android:name="com.amap.api.v2.apikey" android:value="557e18d1afb32a69351be5abc7f1cd25" /> <activity android:name="com.umeng.common.ui.activities.BrowserActivity" android:configChanges="keyboardHidden|orientation|screenSize" /> <!-- ##################### 推送相关 ##################### --> <receiver android:name="com.umeng.message.NotificationProxyBroadcastReceiver" android:exported="false"></receiver> <receiver android:name="com.umeng.message.SystemReceiver" android:process=":push"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <receiver android:name="com.umeng.message.MessageReceiver" android:exported="false" android:process=":push"> <intent-filter> <action android:name="org.agoo.android.intent.action.RECEIVE" /> </intent-filter> </receiver> <receiver android:name="com.umeng.message.ElectionReceiver" android:process=":push"> <intent-filter> <action android:name="org.agoo.android.intent.action.ELECTION_RESULT_V4" /> <category android:name="umeng" /> </intent-filter> </receiver> <receiver android:name="com.umeng.message.RegistrationReceiver" android:exported="false"> <intent-filter> <action android:name="com.umeng.community.example.intent.action.COMMAND" /> </intent-filter> </receiver> <receiver android:name="com.umeng.message.UmengMessageBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name="com.umeng.message.UmengService" android:exported="true" android:label="PushService" android:process=":push"> <intent-filter> <action android:name="com.umeng.community.example.intent.action.START" /> </intent-filter> <intent-filter> <action android:name="com.umeng.community.example.intent.action.COCKROACH" /> </intent-filter> <intent-filter> <action android:name="org.agoo.android.intent.action.PING_V4" /> <category android:name="umeng" /> </intent-filter> </service> <service android:name="com.umeng.message.UmengIntentService" android:process=":push" /> <service android:name="com.umeng.message.UmengMessageIntentReceiverService" android:exported="true" android:process=":push"> <intent-filter> <action android:name="org.android.agoo.client.MessageReceiverService" /> </intent-filter> <intent-filter> <action android:name="org.android.agoo.client.ElectionReceiverService" /> </intent-filter> </service> <service android:name="com.umeng.message.UmengMessageCallbackHandlerService" android:exported="false"> <intent-filter> <action android:name="com.umeng.messge.registercallback.action" /> </intent-filter> <intent-filter> <action android:name="com.umeng.message.unregistercallback.action" /> </intent-filter> <intent-filter> <action android:name="com.umeng.message.message.handler.action" /> </intent-filter> <intent-filter> <action android:name="com.umeng.message.autoupdate.handler.action" /> </intent-filter> </service> <!-- If you donot want to use the standard notification bar in SDK, you can define IntentService instead to handle message. --> <service android:name="com.umeng.message.UmengDownloadResourceService" android:exported="false" /> <service android:name="com.umeng.message.local.UmengLocalNotificationService" android:exported="false" />

友盟App Key

<!-- 友盟App Key, 必须替换为您在友盟官网上申请到的. --> <meta-data android:name="UMENG_APPKEY" android:value="4eaee02c527015373b000003" > </meta-data> <!-- 友盟的App secret --> <meta-data android:name="UMENG_MESSAGE_SECRET" android:value="a499504e1326471ef496c4e55cac9268" > </meta-data> 如果选用多种UmengSDK龙虎国际娱乐平台使用不同Appkey,可为微社区SDK配置单独的appkey,如下: /*代码添加Appkey,如果设置了非null值,微社区SDK将使用该值.*/ Constants.UMENG_APPKEY = "xxxxxxxxx";

高德定位SDK Appkey

微社区里的定位使用了高德定位SDK,所以用户需要到高德定位SDK页面申请App Key。并且将这个Key填写到AndroidManifest.xml中,例如如下 : <meta-data android:name="com.amap.api.v2.apikey" android:value="这里填写你的高德定位SDK Appkey" /> 最后再代码中通过如下代码注入高德定位SDK即可: java // 确保不要重复注入同一类型的对象,建议在Application类的onCreate中执行该代码。 LocationSDKManager.getInstance().addAndUse(new DefaultLocationImpl()) ;

分享登录SDK的配置

友盟微社区内部使用了友盟社会化分享登录组件SDK,因此分享组件的相关配置保持不变。如果您使用微社区自带的分享功能,拷贝share和login目录中jar和资源到您的工程中,并配置相关平台appid等信息。在application中配置如下: PlatformConfig.setWeixin("wx96110a1e3af63a39", "c60e3d3ff109a5d17013df272df99199"); PlatformConfig.setSinaWeibo("275392174", "d96fb6b323c60a42ed9f74bfab1b4f7a"); PlatformConfig.setQQZone("1104606393", "X4BAsJAVKtkDQ1zQ"); 并且在使用分享的activity中加入回调: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { ShareSDKManager.getInstance().getCurrentSDK().onActivityResult(this,requestCode,resultCode,data); } 另外微社区中的分享SDK不需要配置分享内容,因为微社区中的Feed消息就是分享内容,如果想修改则需要修改对应的UI源码。 微社区登录相关的配置可以在参考这里 注意,部分分享功能需要依赖签名,请使用demo工程目录下的debug.keystore

使用第三方Push组件

友盟微社区内部使用了友盟push组件,如果想替换成其他第三方的push组件,需要实现Pushable接口,注入即可 代码实例: PushSDKManager.getInstance().addAndUse(new Pushable() { @Override public void enable(Context context) { //打开push服务 } @Override public void setUserAlias(CommUser user) { //设置设备号的别名,需要把当前用户的uid设置给push的SDK } @Override public void disable() { } @Override public boolean isEnabled() { return false; } }); 注:使用其他第三方push组件,将不能收到微社区内部的评论,AT等操作的推送服务

开源工程集成的依赖关系

1) umeng_community_library_common_ui依赖umeng_community_core,和login();
2) umeng_community_library_weibo/umeng_community_library_discuss依赖
3) umeng_community_core,umeng_community_login,umeng_community_share,umeng_community_push,umeng_community_library_common_ui,umeng_community_location umeng_community_library_db依赖umeng_community_core
如果使用androidstudio,三个工程都依赖同一个jar包,这个三个工程又同时被某个app工程依赖,可能会造成编译错误,推荐的解决办法是,新建一个commonlib工程,将所有需要依赖的jar放进去,在commonlib工程的build.gradle 文件中加入 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } artifacts.add("default", file('xxxxxx')) 用artifacts.add所有的jar包。再让需要依赖jar包的工程都依赖commonlib即可

混淆配置

如果您的App开启了混淆,那么您需要在您的混淆配置文件中添加如下配置: -dontusemixedcaseclassnames -dontshrink -dontoptimize -dontpreverify -dontwarn com.umeng.comm.** -dontwarn com.umeng.commm.** -dontwarn com.google.android.maps.** -dontwarn android.webkit.WebView -keep class activeandroid.** {*;} -keep class com.umeng.** {*;} -keep class android.** {*;} -keepattributes *Annotation* -ignorewarnings -keep class org.apache.http.** {*;} -dontwarn org.apache.http.** -keep class org.apache.http.* {*;} -dontwarn org.apache.http.* -keep,allowshrinking class org.android.agoo.service.* { public <fields>; public <methods>; } -keep,allowshrinking class com.umeng.message.* { public <fields>; public <methods>; } -keep public class com.umeng.community.example.R$*{ *; } -keep class com.umeng.comm.push.UmengPushImpl { public * ; } -keep class android.support.v4.** {*;} -dontwarn android.webkit.WebView -dontwarn com.tencent.weibo.sdk.** -keepattributes Exceptions,InnerClasses,Signature -keepattributes SourceFile,LineNumberTable -keep public interface com.tencent.** -keep public interface com.umeng.socialize.** -keep public class com.umeng.socialize.* {*;} -keep public class javax.** -keep public class android.webkit.** -keep public class com.tencent.** {*;} -keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;} -keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;} # adding push -keep class com.umeng.message.* { public <fields>; public <methods>; } -keep class com.umeng.message.protobuffer.* { public <fields>; public <methods>; } -keep class com.squareup.wire.* { public <fields>; public <methods>; } -keep class com.umeng.message.local.* { public <fields>; public <methods>; } -keep class org.android.agoo.impl.*{ public <fields>; public <methods>; } -dontwarn com.xiaomi.** -dontwarn com.ut.mini.** -keep class org.android.agoo.service.* {*;} -keep class org.android.spdy.**{*;} -keep public class com.umeng.community.example.R$*{ public static final int *; } -keepattributes Exceptions,InnerClasses,Signature,EnclosingMethod -keepattributes SourceFile,LineNumberTable -keepattributes *Annotation* #分享相关混淆 -dontwarn android.webkit.WebView -dontwarn com.umeng.** -dontwarn com.tencent.weibo.sdk.** -keepattributes Exceptions,InnerClasses,Signature -keepattributes SourceFile,LineNumberTable -keep public interface com.tencent.** -keep public interface com.umeng.socialize.** -keep public class com.umeng.socialize.* {*;} -keep public class javax.** -keep public class android.webkit.** -keep public class com.tencent.** {*;} -keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;} -keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;} -keep class com.sina.** {*;} -dontwarn com.sina.**

代码集成

引用说明

AG龙虎国际娱乐网站版引用说明
import com.umeng.commm.ui.fragments.CommunityMainFragment;
微博版引用说明
import com.umeng.comm.ui.fragments.CommunityMainFragment;

代码调用

可以通过如下代码打开微社区主页: // 获取CommunitySDK实例, 参数1为Context类型 CommunitySDK mCommSDK = CommunityFactory.getCommSDK(YourContext); // 打开微社区的接口, 参数1为Context类型 mCommSDK.openCommunity(YourContext); 效果图
SDK压缩包目录

其他

常见问题

  • 如果您想将微社区以Fragment的形式集成到您的应用中,请参考详细集成文档
  • 另外强烈建议您阅读sdk包中的api_docs/doc目录下的文档,该文档中包含了微社区SDK对外开放的所有接口以及实体类说明。
  • 如果集成微社区SDK后出现**NoClassDefFoundError**或者找不到某个确实存在的类,那么很有可能是android.support.v4.jar文件冲突,因为微社区SDK包中带了一份v4文件,因此确保你工程中的v4文件或者其他jar文件只有一份即可。

关于微社区原理

在使用微社区的过程中,可能涉及到反射、依赖注入、MVP模式等概念,请参考以下文章:
Java反射
依赖注入
android MVP模式

进阶使用

请参考详细集成文档。
龙虎国际娱乐平台qy8千亿国际新官网qy8千亿国际官网龙8国际
龙8国际梦之城娱乐手机APP龙8娱乐老虎机龙8娱乐老虎机
龙8国际qy8千亿国际新官网qy8千亿国际官网亚虎娱乐官网
龙虎国际娱乐平台龙虎国际娱乐官网AG龙虎国际娱乐网站龙8国际
龙8国际梦之城娱乐手机APP龙8娱乐老虎机龙8娱乐老虎机