一苏陌尘一 2021-09-11 02:49 采纳率: 0%
浏览 65
已结题

uniapp 原生插件Js层的类怎么接收到Activity控件的监听事件并返回呢?

niapp 原生插件Js层的类怎么接收到Activity控件的监听事件并返回呢?如下图的描述:

img

img

  • 写回答

1条回答 默认 最新

  • 一苏陌尘一 2021-09-11 22:26
    关注

    解决了,写了一个接口,弄了一个全局的类,监听全局类的字段,就可以了

    //接口
    public interface  BroadListener {
        public void onSuccess();
        public void onFail(String msg);
    }
    //类
    public class PlayEndListenner    extends Application {
    
        private BroadListener broadListener;
        private static PlayEndListenner dataInstance;
        private int isPlayEnd = 0;//是否播放结束
    
        private PlayEndListenner(){
    
        }
        public static PlayEndListenner getInstance(){
            if (null == dataInstance){
                dataInstance = new PlayEndListenner();
            }
            return dataInstance;
        }
        public  void  setBroadListener(BroadListener broadListener){
            this.broadListener = broadListener;
        }
    
    
        public void setIsPlayEnd(int isPlayEnd) {
            this.isPlayEnd = isPlayEnd;
            if (null != broadListener){
                if (isPlayEnd == 1){
                    broadListener.onSuccess();
                }else{
                    broadListener.onFail("收到回复失败");
                }
            }
        }
    
        public int getIsPlayEnd() {
            return isPlayEnd;
        }
    }
    
    
      //uniapp 调用播放结束
        @UniJSMethod (uiThread = true)
        public void playerEnded( UniJSCallback callback){
            final UniJSCallback callback1 = callback;
    
            PlayEndListenner.getInstance().setBroadListener(new BroadListener() {
                @Override
                public void onSuccess() {
                    System.out.println("播放结束");
                    int re = PlayEndListenner.getInstance().getIsPlayEnd();
                    PlayEndListenner.getInstance().setIsPlayEnd(0);
                    Data.getInstance().setIsPlay(0);//更新状态为 播放
                    if(callback1 != null) {
                        JSONObject data = new JSONObject();
                        //data.put("code", "success我是原生返回的:播放是否结束状态");
                        data.put("palyEnd",PlayEndListenner.getInstance().getIsPlayEnd());
                        //callback1.invokeAndKeepAlive(data);
                        callback1.invokeAndKeepAlive(data);
                    }
                }
    
                @Override
                public void onFail(String msg) {
    
                }
            });
    
        }
    

    ```

    评论

报告相同问题?

问题事件

  • 系统已结题 9月19日
  • 创建了问题 9月11日