uni-app plus.android调用红外问题

uni-app plus.android调用红外问题

属性
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.3.9
手机系统 Android
手机系统版本号 Android 12
手机厂商 华为
手机机型 华为
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

// #ifdef APP-PLUS    
var mainActivity = plus.android.runtimeMainActivity();  
var dlg = plus.android.newObject("android.hardware.ConsumerIrManager", mainActivity);  
// #endif  

// #ifdef APP-PLUS  
var res = plus.android.invoke( dlg , 'hasIrEmitter' );  
    if( !res ){  
     uni.showToast({  
        title: '手机不支持红外发射',  
            icon: 'none'  
        });  
    }  
// #endif

更多关于uni-app plus.android调用红外问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

到底咋个回事哦,硬是心脏病都要气出来了

更多关于uni-app plus.android调用红外问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


建议你使用纯原生开发测试验证下。不排除与targetSdkVersion有关 目前默认targetSdkVersion是28了

我开发不来存原生,我5月份打包了是没任何问题的,现在打包就是不得行了,代码是一点都没改过。targetSdkVersion这个东西是在哪里修改可以配置一下吗??麻烦指点一下

之前var res = plus.android.invoke( dlg , ‘hasIrEmitter’ ); 这个判断是true,现在打包后返回的null,我换成之前的hbuilderx是返回true了 但是又发不出去东西,之前的app又可以发

麻烦来个人帮忙解决一下嘛

你之前的NJS本身就不太符合标准。按以下方式改下试试 var mainActivity = plus.android.runtimeMainActivity(); var Context = plus.android.importClass(“android.content.Context”); var ConsumerIrManager = plus.android.importClass(“android.hardware.ConsumerIrManager”); var dlg = plus.android.runtimeMainActivity().getSystemService(Context.CONSUMER_IR_SERVICE); var res = plus.android.invoke( dlg , ‘hasIrEmitter’ );

好的我试试

你的代码中直接 newObject("android.hardware.ConsumerIrManager") 是错误的,因为 ConsumerIrManager 是一个系统服务类,没有公开构造函数,必须通过 getSystemService 获取。

正确写法:

// #ifdef APP-PLUS  
var main = plus.android.runtimeMainActivity();
var Context = plus.android.importClass("android.content.Context");
var irManager = plus.android.invoke(main, "getSystemService", Context.CONSUMER_IR_SERVICE);
var hasIr = plus.android.invoke(irManager, "hasIrEmitter");
if (!hasIr) {
    uni.showToast({ title: '手机不支持红外发射', icon: 'none' });
}
// #endif
回到顶部