本人菜鸟一枚,自学不才,在Android开发圈子也是摸打滚爬,3,4年,之前没有写博客的习惯,只是自己总结一些,没有分享。当然好多还是参考的大神们分享的东西,去github fork 别人的代码。。
话不多说,开干!
【1】SDK的集成套路,注册登录SDK官网点击打开链接,下载SDK,看集成文档。
【2】特别值得一提的是,融云的SDK,模块化很好,下载SDK时,可以先择需要集成的模块,见下图:
IMKit SDK是融云做好的UI库,java代码封装成了jar,布局文件暴露,可以自己修改颜色样式。IMKit Module依赖IMLibModule。
【3】导入AndroidStudio时,将IMKit及IMLIb都以Module的方式导入。
然后app项目添加依赖module,只添加IMKit,即可。app的dependencies如下:
【4】在IMLib的AndroidManifest.xml中将RONG_CLOUD_APP_KEY修改为自己在官网创建项目生成的appkey。
(集成过SDK的都明白这一步!!!不赘述)
【5】在自己项目的AndroidManifest.xml文件中添加FileProvider
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.bj.rongyundemo.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/rc_file_path" />
</provider>
需要注意的是authorities的值修改为"自己的包名.FileProvider"。至此融云的配置基本完成,可以进行开发了。
【6】融云初始化,在自己的Application中定义。代码如下:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext())) ||
"io.rong.push".equals(getCurProcessName(getApplicationContext()))) {
/**
* IMKit SDK调用第一步 初始化
*/
RongIM.init(this);
}
}
/**
* 获得当前进程的名字
*
* @param context
* @return 进程号
*/
public static String getCurProcessName(Context context) {
int pid = android.os.Process.myPid();
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : activityManager
.getRunningAppProcesses()) {
if (appProcess.pid =