E4A 接入教程

一、准备工作:首先在云端代码上添加事件 _login() 并启动。

1
2
3
4
string _login(string&in from, string&in msg)
{
    return "this is login return msg";
}

二、在 云工具 页面下载 Linux开发组件并解压,这里可以看到2个目录:

备注:

jar目录:java导入包

so目录:jar对应的so

三、新建E4A项目, 并导入对应的包, 注意so文件要放在armeabi目录中

四、建立博维云接口文件, 将以下中间代码粘贴过去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.e4a.runtime.api;//包名必须固定为这个,不能自己修改

import com.e4a.runtime.annotations.SimpleFunction;
import com.e4a.runtime.annotations.SimpleObject;
import com.e4a.runtime.annotations.UsesPermissions;

import com.e4a.runtime.应用操作;//可以引用E4A支持库中已经存在的类
import com.e4a.runtime.android.mainActivity;

import android.widget.Toast;

// 博维云需要导入的类
import com.bovey.android.AndroidClient;
import com.bovey.android.CString;
import com.bovey.android.MsgRecver;

@UsesPermissions(permissionNames = "android.permission.INTERNET")//安卓权限标记,如果接口函数中需要额外的安卓权限,可在此填写,多个权限可以用逗号隔开
@SimpleObject
public final class 博维云接口{
    private static AndroidClient m_client = null;
    private static MsgRecver m_recver = null;

    @SimpleFunction//导出函数标记
    public static boolean 初始化(){
        if(m_client != null)
            return true;
       
        m_client = new AndroidClient();
        m_recver = new MsgRecver();
        boolean b = m_client.Init();
        m_client.RegRecver(m_recver);
       
        return b;
    }
 
    @SimpleFunction//导出函数标记
    public static void 关闭连接(){
        if(m_client == null)
            return;
        m_client.Close();
        m_client = null;
        m_recver = null;
    }

    @SimpleFunction//导出函数标记
    public static String 登录(String token, String custom_code, int time_out){
        if(m_client == null)
            return m_client.Result(false,"");
       
        CString out_str = new CString();
        boolean b = m_client.Login(token,custom_code,out_str,time_out);
       
        return m_client.Result(b,out_str.toString());
    }

    @SimpleFunction//导出函数标记
    public static String 发送短消息(String msg, int time_out){
        if(m_client == null)
            return m_client.Result(false,"");
       
        CString out_str = new CString();
        boolean b = m_client.Request(msg,out_str,time_out);
       
        return m_client.Result(b,out_str.toString());
    }

    @SimpleFunction//导出函数标记
    public static boolean 发送长消息(String msg){
        if(m_client == null)
            return false;
       
        boolean b = m_client.SendMsg(msg);
       
        return b;
    }
   
    @SimpleFunction//导出函数标记
    public static String 上传文件(String local_file_path,String server_save_name,String task_token,boolean bExistFail,boolean bApp){
        if(m_client == null)
            return m_client.Result(false,"");
       
        CString out_str = new CString();
        boolean b = m_client.UpFile(local_file_path,server_save_name,task_token,bExistFail,bApp,out_str);
       
        return m_client.Result(b,out_str.toString());
    }
   
    @SimpleFunction//导出函数标记
    public static String 下载文件(String server_file_path,String local_save_name,String task_token,boolean bExistFail,boolean bApp){
        if(m_client == null)
            return m_client.Result(false,"");
       
        CString out_str = new CString();
        boolean b = m_client.DownFile(server_file_path,local_save_name,task_token,bExistFail,bApp,out_str);
       
        return m_client.Result(b,out_str.toString());
    }
 
    @SimpleFunction//导出函数标记
    public static String 获取服务器推送消息(){
        if(m_recver == null || m_client == null)
            return "";
           
        return m_recver.GetRecvMsg();
    }
 
    @SimpleFunction//导出函数标记
    public static double 获取任务进度(String task_token){
        if(m_recver == null || m_client == null)
            return 0;
           
        return m_recver.GetTaskPercent(task_token);
    }
 
    @SimpleFunction//导出函数标记
    public static int 停止任务(String task_token){
        if(m_client == null)
            return 0;
           
        return m_client.StopTask(task_token);
    }
 
    @SimpleFunction//导出函数标记
    public static String 获取错误信息(){
        if(m_client == null)
            return "对象没有初始化";
           
        return m_client.GetLastError();
    }
 
    @SimpleFunction//导出函数标记
    public static boolean 获取结果值(String res){
        return m_client.GetResultCode(res);
    }
 
    @SimpleFunction//导出函数标记
    public static String 获取结果数据(String res){
        return m_client.GetResultData(res);
    }
}

五、建立三个按钮, 分别是 初始化, 关闭连接, 登录, 并执行以下事件代码即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
事件 初始化.被单击()
    变量 b 为 逻辑型
    b = 博维云接口.初始化()
    如果 b 则
        弹出提示("初始化成功")
    否则
        弹出提示("初始化失败, ERR:" & 博维云接口.获取错误信息())
    结束 如果
结束 事件

事件 关闭连接.被单击()
    博维云接口.关闭连接()
    弹出提示("已关闭连接")
结束 事件

事件 登录.被单击()
    变量 token 为 文本型 '登录云应用的标识符, 由云应用生成
    变量 custom_code 为 文本型 '
登录云应用的自定义标识符, 可以传递关键信息
    变量 time_out 为 整数型 '超时时间
    变量 res 为 文本型 '
返回的数据
    变量 code 为 逻辑型 '返回的结果值
    变量 data 为 文本型 '
返回的结果数据
    token = edit_token.内容
    custom_code = edit_code.内容
    time_out = 60
    res = 博维云接口.登录(token,custom_code,time_out)
    code = 博维云接口.获取结果值(res)
    data = 博维云接口.获取结果数据(res)
   
    如果 code 则
        弹出提示("登录成功, SER:" & data)
    否则
        弹出提示("登录失败, ERR:" & 博维云接口.获取错误信息())
    结束 如果
结束 事件

=============更多示例Demo请点此查看=============