ynkmwf
ynkmwf
  • 发布:2018-10-13 08:46
  • 更新:2020-05-29 18:03
  • 阅读:6899

uni-app本地离线打包后,如何调用自定义JAVA类中方法?

分类:uni-app

请问uni-app本地离线打包后,如何调用自定义JAVA类中方法?

一、在H5+ 中是可以调用成功的,代码如下:
1、网页中:

function plusReady(){  
    var NjsHello = plus.android.importClass("com.example.H5PlusPlugin.HelloWorld");  
    alert(NjsHello.BIRTHDAY);  
    var hello = new NjsHello();  
    hello.setUsername('hello h5+!');  
    var wv = plus.android.currentWebview();  
    hello.print(0,0,0,0,wv);  
    var sname = hello.getUsername();  
    console.log( "NjsHello Final's value: "+sname );  
}  

2、JAVA代码:

public class HelloWorld {  
    printer mPrinter = new printer();  

    public static final String BIRTHDAY="2007-03-16";  
    public String username ="2007-03-16";  

    public String getUsername() {  

        try {  

            int result = mPrinter.Open();  
            if (result ==0){  
                mPrinter.PrintLineInit(50);  
                mPrinter.PrintLineStringByType("HelloWorld",40,printer.PrintType.Centering,false);  
                mPrinter.PrintLineEnd();  
                mPrinter.Close();  
            }  
        }  
        catch (Exception e){  
            e.printStackTrace();  
        }  

        return username;  
    }  

    public  void setUsername(String s){  
        username = s;  
        System.out.println("call:"+username);  
    }  

    public  void print(int x, int y, int width, int height, WebView wv){  
        username = wv.getUrl();  
    }  

    public static void main( String args[] ) {  
        HelloWorld helloWorld = new HelloWorld();  
        helloWorld.setUsername("hello");  
        System.out.println(helloWorld.getUsername());  
    }  

}

二、上面代码在uni-app中却不能正常执行,

<template>  
    <view class="content">  
        <text class="title">{{title}}</text>  
        <button class="button" v-on:click="print()">print</button>  
        <button class="button" v-on:click="showMessage('fuck')">message</button>  
    </view>  
</template>  

<script>  
    export default {  
        data: {  
            title: 'Hello wf'  
        },  
        methods:{  
            print(){  
                console.log("print!")  
                var pages = getCurrentPages();  
                var page = pages[pages.length - 1];  

            // #ifdef APP-PLUS    
                        var currentWebview = page.$getAppWebview();       
            // 弹出系统提示对话框              
            plus.nativeUI.alert( "Plus is ready!", function(){  
                /*  这段正常  
                var intent = plus.android.newObject("android.content.Intent");  
                //currentWebview.loadURL("http://www.baidu.com");  
                console.log(currentWebview.getURL());  
                */  

                   //打印测试,下面三行执行没效果  
                   var hello = plus.android.newObject("com.example.H5PlusPlugin.HelloWorld");  
                   var sname = hello.getUsername();              
                   console.log( "NjsHello Final's value: "+sname );  

            }, "nativeUI", "OK" );  

            // #endif

三、问题:uni-app本地离线打包后,如何调用自定义JAVA类中方法?主要需求是ANDROID原生集成物联网终端手持机提供本机小票打印等硬件功能,并本地打包uni-app,在uni-app中以JS方式调用打印小票接口(android 原生JAVA代码)。

2018-10-13 08:46 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

  1. 首先不建议原生写的类使用native.js来调用,请看插件开发文档
  2. uniapp部分,没体现plsuready部分
  3. 具体使用中是有报错吗?
ynkmwf

ynkmwf (作者) - ynkmwf

没有提示。
我已按示例写了个自定插件,H5+页面调用测试OK,
现在的问题是:uni-app是否支持自定义插件开发?要如如何调用,是否有文档,示例

  • DCloud_UNI_GSQ

    可以导出资源,其他同普通5+项目离线打包。

    2018-10-19 10:45

zhangdaren

zhangdaren - 小程序转uniapp工具:https://ext.dcloud.net.cn/plugin?id=2656

请问有示例吗?看了5+的,那个是单独一个html文件,然后在里面添加按钮,再去调用原生。因为uni打包后都已经不是原来那个样子了,请教一下uni该怎么做?

1***@qq.com

1***@qq.com

请问你解决了吗。我也碰到了同样的问题。这边写的从html里面注入可以调用。从uniapp,没有注入的地方

  • zhangdaren

    直接在onload里写就好了

    2018-12-02 11:10

东庐

东庐

uni能引用jar吗,应该放在哪个目录下?

  • 9***@qq.com

    大佬 问下 怎么引入的啊 加我Q请教一下 谢谢

    2019-09-05 13:50

阿king007

阿king007 - 007

这个问题你解决了么 ,uni-app调用自定义JAVA类中方法这个我没调用起来,求大神指点

  • 东庐

    离线打包,把jar包放在libs里,引入包(忘了在哪文件引入了)

    2019-09-16 12:16

h***@qq.com

h***@qq.com

官方没有给一个简单易行的说明,刚进来 想调用jar ,一头雾水,同样求解

h***@huiyuandata.com.cn

h***@huiyuandata.com.cn

???解决了吗大佬

1***@qq.com

1***@qq.com - 一只小白

解决了吗 ?jar怎么引入进去 ?

1***@qq.com

1***@qq.com

大哥,你是调旺POS之类的手持终端吗?搞定了吗?求解决方案!!!

该问题目前已经被锁定, 无法添加新回复