环信_Android_第一部_JAR包集成

自己新建 project...不用easeui的包,太不友好了..全部自己解封.自己写

个是在要Android studio 3.3.2版本中测试有效在android7和8(API24,25,26,27)四个个版本中有效.

如果到了Adnroid9(API28,Q)会有so报错.在AndroidMaifest.xml有两处用☆标出来

注意三点.

1:复制两个文件夹文件

libs.av 是全的

libs.lite  简装

app\src\main\jniLibs         放so文件(主要是arm64-v8a,armeabi-v7a,x86这三个文件夹)
app\libs                             放jar文件(hyphenatechat_3.5.3.jar)

 环信_Android_第一部_JAR包集成_第1张图片

 

EMApplication 在main

如果要用环信自建的UI包,就要再复制一个

examples\easeui\easeui   放在与app文件夹同级目录

三个文件夹复制完后修改下面两步

1 :settings.gradle改成include ':app',':easeui';

2:app的build.gradle的  dependencies  中添加api project(':easeui');

 

2:AndroidManifest.xml

这里有些权限.是ANDROID6.0(API 23)后.变成了动态权限.在使用时才会申请...

不然会报android.database.sqlite.SQLiteCantOpenDatabaseException

注意下面三个★地方

如果到了Adnroid9(API28,Q)会有so报错.在AndroidMaifest.xml有两处用☆标出来

Android9不能再用 // 注释了



  
    
    
    
    
    
    
    
    
      
    
    
    
    
    
    
    
    
 
    
        android:name="你的★★★★Application">
  
   	    
    	
    	
    	
        
        
        
            
                
                
            
            
            
                
                
            
        
         
    

3.然后创建EMApplication

public class EMApplicaiton extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        EMOptions options = new EMOptions();
// 默认添加好友时,是不需要验证的,改成需要验证
        options.setAcceptInvitationAlways(false);
// 是否自动将消息附件上传到环信服务器,默认为True是使用环信服务器上传下载,如果设为 false,需要开发者自己处理附件消息的上传和下载
        options.setAutoTransferMessageAttachments(true);
// 是否自动下载附件类消息的缩略图等,默认为 true 这里和上边这个参数相关联
        options.setAutoDownloadThumbnail(true);
//初始化
        EMClient.getInstance().init(getApplicationContext(), options);
//在做打包混淆时,关闭debug模式,避免消耗不必要的资源
        EMClient.getInstance().setDebugMode(true);


        int pid = android.os.Process.myPid();
        String processAppName = getAppName(pid);
// 如果APP启用了远程的service,此application:onCreate会被调用2次
// 为了防止环信SDK被初始化2次,加此判断会保证SDK被初始化1次
// 默认的APP会在以包名为默认的process name下运行,如果查到的process name不是APP的process name就立即返回

        if (processAppName == null || !processAppName.equalsIgnoreCase(this.getPackageName())) {
            Log.e("这里是EMApplication", "enter the service process!");

            // 则此application::onCreate 是被service 调用的,直接返回
            return;
        }
    }

    private String getAppName(int pID) {


        String processName = null;
        ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        List l = am.getRunningAppProcesses();
        Iterator i = l.iterator();
        PackageManager pm = this.getPackageManager();
        while (i.hasNext()) {
            ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
            try {
                if (info.pid == pID) {
                    processName = info.processName;
                    return processName;
                }
            } catch (Exception e) {
                // Log.d("Process", "Error>> :"+ e.toString());
            }
        }
        return processName;
    }
}

4.build.gradle(app)的android{}里面添加

 compileOptions {
     sourceCompatibility JavaVersion.VERSION_1_8
     targetCompatibility JavaVersion.VERSION_1_8
}

防止“Unable to instantiate application”报错

 

 

5:混淆

新手可以不用混淆..等变成老鸟后再了解.

混淆作用就是打包作成APK的时候,把代码打乱再打包.防止坏人反编译藏获得你的源码..

 

 

 

 

 

你可能感兴趣的:(ANDROID,环信,集成,权限)