Skip to content

StarteosIO/dappsdk

Repository files navigation

DAPP SDK

引用

implementation 'io.starteos:dappsdk-lib:1.0.5.fix.2'
implementation 'io.starteos:dappsdk-annotation:1.0.5.fix.2'
annotationProcessor 'io.starteos:dappsdk-compiler:1.0.5.fix.2'
// kapt 'io.starteos:dappsdk-compiler:1.0.5.fix.2'

使用

实例化一个DAppBridge对象,将当前context和webView传入即可

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        DAppBridge(this, webview)
        webview.loadUrl("http://www.abcd.dog/starteos/dapp.html")
    }

}

新建一个类继承DAppApi,并在类上注解@Namespace(),此时如果JavaScript进行相应操作,会自动调用对应方法

@Namespace("gui")
public class DAppApiGUI extends DAppApi {
    public DAppApiGUI(DAppBridge bridge) {
        super(bridge);
    }

    public void alert(final Request request) {
        JSONObject params = request.getParams();
        new AlertDialog.Builder(bridge.getContext())
                .setTitle(params.optString("title"))
                .setMessage(params.optString("content"))
                .setNegativeButton(params.optString("btnString"), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        bridge.callback(request, new Response(Response.CODE_SUCCESS, "success"));
                    }
                }).create().show();
    }

    public void toast(Request request) {
        Toast.makeText(bridge.getContext(), request.getParams().optString("message"), Toast.LENGTH_SHORT).show();
    }

}

要实现文档中标准的API,需要在继承DAppApi的同时实现io.starteos.dappsdk.standard中的接口

@Namespace("customer")
public class DAppApiCustomer extends DAppApi implements IDAppApiCustomer{
    public DAppApiCustomer(DAppBridge bridge) {
        super(bridge);
    }

    @Override
    public void getCurrentWalletType(Request request) {

    }

    @Override
    public void getCurrentWalletAccount(Request request) {

    }
}

回调数据到JavaScript,需要先实例化一个Response对象,必传参数为code和message,data可以在实例化对象的时候传入,但是无法再进行更改,也不能再调用putData方法。如果实例化对象的时候未传入data,则可以调用putData方法在返回值中添加键值对。最后再将request和response同时传入DAppBridge的callback方法即可。

    //回调data为空的数据
    bridge.callback(request, new Response(Response.CODE_SUCCESS, "success"));
    //回调自定义类型的data数据
    bridge.callback(request, new Response(Response.CODE_SUCCESS, "success","this is a result"));
    //回调键值对data数据
    Response response = new Response(Response.CODE_SUCCESS, "success");
    response.putData("name", "Michael Lee");
    response.putData("age", 23);
    bridge.callback(request, response);
    //注意:Response中传入的内容在Response的toString时,
    //返回的内容中不能存在[\"],只能是["],否则JavaScript可能会无法收到回调

数据

按照starteos dapp sdk api document中格式返回

About

a dapp sdk

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages