安卓入门示例之在项目中接入第三方SDK
本示例将演示如下内容:
在android studio中新建一个项目
Next, 然后选择Minimum SDK
然后一路Next, Finish
项目创建完成后,切换到project
首先下载SDK
解压下载的sdk
然后在android studio导入依赖的sdk module
然后用同样的方式导入IMLib
如果报错,可能会提示你需要安装android sdk 21,如下图所示
从下图可以看到,Error中提示要install的部分安装完成后,代码中红色的错误标记被移除了
在java目录下创建App.java文件
在App.java中引用sdk的RongIM库,此时编辑器中会出现红色标记,表示我们还未添加该sdk到项目依赖中
Paste_Image.png
示例代码如下
package com.testproject;
import android.app.Application;
/**
* Created by yang on 2016/12/3.
*/
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
RongIM
}
}
打开app的module设置,并且添加依赖
Paste_Image.png
Paste_Image.png
Paste_Image.png
添加IMKit和IMLib模块后,再次输入RongIM.i
,此时 Android Studio IDE会进行自动补全
Paste_Image.png
按下回车键,IDE会自动在文件的开始处导入库 import io.rong.imkit.RongIM;
Paste_Image.png
完整代码如下
package com.testproject;
import android.app.Application;
import io.rong.imkit.RongIM;
/**
* Created by yang on 2016/12/3.
*/
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
RongIM.init(this);
}
}
打开app\build.gradle
文件,也证实我们成功的添加了对IMKit和IMLib模块的依赖
Paste_Image.png
在app的AndroidManifest中添加我们刚才创建的application name
Paste_Image.png
首先下载一个sdk的demo
Paste_Image.png
Paste_Image.png
然后我们来仿造demo的配置,来动手写一个demo
在 IMLib 的 AndroidManifest 里配置好 App Key
Paste_Image.png
我们从demo项目中将App Key拷贝过来
Paste_Image.png
粘贴到TestProject的IMLib模块 的 AndroidManifest中
Paste_Image.png
将demo项目中的权限配置拷贝过来
Paste_Image.png
权限配置如下
粘贴到我们的项目中
Paste_Image.png
因为sealtalk这个项目比较复杂,我们选另一个比较简单的demo,作为我们的仿造对象,从这里下载或者直接从GITHUB下载
Paste_Image.png
在 MainActivity 中调用RongIM.connect() 连接融云。注意此处的 Token 为一个测试 Token,你需要换成你自己的 Token,这个 Token 还需要与 RONG_CLOUD_APP_KEY 匹配。
我们从demo-app-android-quick-start项目里选一个token,作为用户token
Paste_Image.png
我们将如下代码粘贴到 MainActivity.java
Paste_Image.png
代码如下
String token = "d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==";//test
RongIM.connect(token, new RongIMClient.ConnectCallback() {
/**
* Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 Token
*/
@Override
public void onTokenIncorrect() {
Log.d("LoginActivity", "--onTokenIncorrect");
}
/**
* 连接融云成功
* @param userid 当前 token
*/
@Override
public void onSuccess(String userid) {
Log.d("LoginActivity", "--onSuccess" + userid);
}
/**
* 连接融云失败
* @param errorCode 错误码,可到官网 查看错误码对应的注释
*/
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Log.d("LoginActivity", "--onError" + errorCode);
}
});
MainActivity.java
完整代码如下:
package com.testproject;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
String token = "d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==";//test
RongIM.connect(token, new RongIMClient.ConnectCallback() {
/**
* Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 Token
*/
@Override
public void onTokenIncorrect() {
Log.d("LoginActivity", "--onTokenIncorrect");
}
/**
* 连接融云成功
* @param userid 当前 token
*/
@Override
public void onSuccess(String userid) {
Log.d("LoginActivity", "--onSuccess" + userid);
}
/**
* 连接融云失败
* @param errorCode 错误码,可到官网 查看错误码对应的注释
*/
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Log.d("LoginActivity", "--onError" + errorCode);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
同时我们将demo-app-android-quick-start项目里的 RONG_CLOUD_APP_KEY 替换我们之前写在 TestProject\IMLib\AndroidManifest.xml
里的KEY
Paste_Image.png
运行 APP
Paste_Image.png
选择在Genymotion模拟器中运行
Paste_Image.png
如果APP能跑起来,模拟器将运行我们修改后的APP
Paste_Image.png
在Android Monitor中搜索关键词 onSuccess
Paste_Image.png
发现我们之前添加到TestProject\app\src\main\java\com\testproject\MainActivity.java
的代码已经被执行
Paste_Image.png
SDK接入成功
参考资料:
作者:爱是不求自己的益处
链接:https://www.jianshu.com/p/68a0da4a9ada
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。