融云最简洁的实例(eclipse环境下,附源码下载)
2016-04-19 23:30
375 查看
从官网上下了DEMO却总是无法集成,查了好多资料,发现好多人和我遇到同样的情况,我就又耐心地一步一步集成,终于可以跑通了,以下是代码,附源码包供免费下载
AndroidManifest.xml
APP.java
MainActivity.java
activity_main.xml
ConversationListActivity.java
conversation_list.xml
ConversationActivity.java
conversation.xml
本Demo源代码下载地址:http://download.csdn.net/detail/lvyoujt/9407602
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cctvjiaotao.rongyundemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 获取机型信息权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> <!-- 查看 Wi-Fi 状态 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 查看网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CAMERA" /> <!-- 录音 --> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 控制振动器 --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- 防止设备休眠 --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name="com.cctvjiaotao.rongyundemo.APP"> <!-- 主页 --> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 会话列表 --> <activity android:name=".ConversationListActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="com.cctvjiaotao.rongyundemo" android:pathPrefix="/conversationlist" android:scheme="rong"/> </intent-filter> </activity> <!-- 会话 --> <activity android:name=".ConversationActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="com.cctvjiaotao.rongyundemo" android:pathPrefix="/conversation" android:scheme="rong"/> </intent-filter> </activity> <!-- begin imlib request --> <service android:name="io.rong.push.PushService" android:process="io.rong.push" > <!-- Waring: The name of the push process can't be changed!!! --> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="io.rong.push" /> </intent-filter> </service> <service android:name="io.rong.push.CommandService" android:process="io.rong.push" > <!-- Waring: The name of the push process can't be changed!!! --> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="io.rong.command" /> </intent-filter> </service> <receiver android:name="io.rong.push.PushReceiver" android:process="io.rong.push" > <!-- Waring: The name of the push process can't be changed!!! --> <intent-filter> <action android:name="io.rong.imlib.action.push.heartbeat" /> </intent-filter> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <activity android:name="io.rong.imkit.tools.SelectPictureActivity" android:screenOrientation="portrait" /> <activity android:name="io.rong.imkit.tools.PreviewPictureActivity" android:screenOrientation="portrait" /> <activity android:name="io.rong.imkit.tools.RongWebviewActivity" android:screenOrientation="portrait" /> <activity android:name="io.rong.imkit.widget.provider.TakingPicturesActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" /> <service android:name="io.rong.imlib.ipc.RongService" android:process=":ipc" > </service> <service android:name="io.rong.imlib.ReConnectService" /> <receiver android:name="io.rong.imlib.ConnectChangeReceiver" /> <receiver android:name="io.rong.imlib.ipc.PushMessageReceiver" > <intent-filter> <action android:name="io.rong.push.message" /> </intent-filter> </receiver> <receiver android:name="io.rong.imlib.HeartbeatReceiver" android:process=":ipc" /> <meta-data android:name="RONG_CLOUD_APP_KEY" android:value="输入你的APP_KEY" /> <!-- end --> </application> </manifest>
APP.java
package com.cctvjiaotao.rongyundemo; import io.rong.imkit.RongIM; import android.app.Application; /** * @作者: jiatao * @修改时间:2016-4-19 下午9:51:32 * @包名:com.cctvjiaotao.rongyundemo * @文件名:APP.java * @版权声明:www.cctvjiatao.com * @功能: TODO */ public class APP extends Application { @Override public void onCreate() { super.onCreate(); RongIM.init(this); } }
MainActivity.java
package com.cctvjiaotao.rongyundemo; import io.rong.imkit.RongIM; import io.rong.imlib.RongIMClient.ConnectCallback; import io.rong.imlib.RongIMClient.ErrorCode; import io.rong.imlib.model.Conversation.ConversationType; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Context context; private Button btn1, btn2, btn3; private String token = "你的token"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; setContentView(R.layout.activity_main); initView(); } private void initView() { btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn3 = (Button) findViewById(R.id.btn3); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.btn1: conn(); break; case R.id.btn2: RongIM.getInstance().startConversationList(context); break; case R.id.btn3: RongIM.getInstance().startConversation(context, ConversationType.PRIVATE, "9527", "Hello"); break; } } private void conn() { RongIM.connect(token, new ConnectCallback() { @Override public void onSuccess(String arg0) { Toast.makeText(context, "连接成功", 2).show(); } @Override public void onError(ErrorCode arg0) { Toast.makeText(context, "连接失败", 2).show(); } @Override public void onTokenIncorrect() { Toast.makeText(context, "连接onTokenIncorrect", 2).show(); } }); } }
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.cctvjiaotao.rongyundemo.MainActivity" > <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="连接融云服务器" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自动列表会话页面" /> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自动列表会话页面" /> </LinearLayout>
ConversationListActivity.java
package com.cctvjiaotao.rongyundemo; import android.os.Bundle; import android.support.v4.app.FragmentActivity; /** * @作者: jiatao * @修改时间:2016-4-19 下午9:58:21 * @包名:com.cctvjiaotao.rongyundemo * @文件名:ConversationListActivity.java * @版权声明:www.cctvjiatao.com * @功能: 会话列表 */ public class ConversationListActivity extends FragmentActivity { @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.conversation_list); } }
conversation_list.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <fragment android:name="io.rong.imkit.fragment.ConversationListFragment" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
ConversationActivity.java
package com.cctvjiaotao.rongyundemo; import android.os.Bundle; import android.support.v4.app.FragmentActivity; /** * @作者: jiatao * @修改时间:2016-4-19 下午10:00:25 * @包名:com.cctvjiaotao.rongyundemo * @文件名:ConversationActivity.java * @版权声明:www.cctvjiatao.com * @功能: 会话页面 */ public class ConversationActivity extends FragmentActivity { @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.conversation); } }
conversation.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <fragment android:name="io.rong.imkit.fragment.ConversationListFragment" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
本Demo源代码下载地址:http://download.csdn.net/detail/lvyoujt/9407602
相关文章推荐
- Java基础语法知识之数据类型
- Java ArrayList、Vector和LinkedList等的差别与用法(转)
- Common CLI
- Java创建线程的三种方式
- java并发编程实践学习---java的类锁和对象锁
- Spring MVC中一般 普通类调用service
- Java大数处理类:BigInteger类和BigDecimal类
- Java 多线程
- Java语言基础1
- Java语言基础2
- Java Set简单用法
- spring事务管理几种方式(转)
- 20145229吴姗珊 《Java程序设计》2天小总结
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
- leetcode 46,47. Permutations I/II 全排列问题 java
- 关于cmd命令运行java文件class
- Spring技术内幕——深入解析Spring架构与设计原理收藏
- Java中使用native2ascii工具处理.properties文件
- java命令行路径
- Java对象的序列化和反序列化