【发布时间】:2019-08-02 14:25:20
【问题描述】:
我将开始在 NativeScript Vue 上为 Android 平板电脑编写移动应用程序。我想测试 NFC 插件,但它似乎太旧了。
这是插件的存储库:
https://github.com/EddyVerbruggen/nativescript-nfc
我在我的应用程序中实现了一个方法来检查插件是否有效。但是在 NativeScript Sidekick 的背景中,我遇到的错误很少。
来自设备 Galaxy Tab Active2 的日志:'\'NativeScript-Vue 有 “Vue.config.silent”设置为true,查看输出日志设置为false。\'' 来自设备 Galaxy Tab Active2 的日志:'\'Yes\'' 来自设备 Galaxy Tab Active2 的日志:发生未捕获的异常 “主”线程。 调用js方法运行失败 错误:java.lang.SecurityException:需要 NFC 权限:用户都没有 10155 当前进程也没有 android.permission.NFC。 android.os.Parcel.readException(Parcel.java:2029) android.os.Parcel.readException(Parcel.java:1975) android.nfc.INfcAdapter$Stub$Proxy.setForegroundDispatch(INfcAdapter.java:1012) android.nfc.NfcAdapter.enableForegroundDispatch(NfcAdapter.java:1648) com.tns.Runtime.callJSMethodNative(本机方法) com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1242) com.tns.Runtime.callJSMethodImpl(Runtime.java:1122) com.tns.Runtime.callJSMethod(Runtime.java:1109) com.tns.Runtime.callJSMethod(Runtime.java:1089) com.tns.Runtime.callJSMethod(Runtime.java:1081) com.tns.gen.java.lang.Runnable.run(Runnable.java:17) android.os.Handler.handleCallback(Handler.java:790) android.os.Handler.dispatchMessage(Handler.java:99) android.os.Looper.loop(Looper.java:164) android.app.ActivityThread.main(ActivityThread.java:7000) java.lang.reflect.Method.invoke(本机方法) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
堆栈跟踪: 框架:函数:'',文件:'file:///data/data/org.nativescript.preview/files/app/vendor.js',行:672,列:31 框架:函数:'invoke',文件:'file:///data/data/org.nativescript.preview/files/app/tns_modules/tns-core-modules/timer/timer.js',行:19,列: 45 框架:函数:'run',文件:'file:///data/data/org.nativescript.preview/files/app/tns_modules/tns-core-modules/timer/timer.js',行:23,列: 7 在 com.tns.Runtime.callJSMethodNative(Native Method) 在 com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1242) 在 com.tns.Runtime.callJSMethodImpl(Runtime.java:1122) 在 com.tns.Runtime.callJSMethod(Runtime.java:1109) 在 com.tns.Runtime.callJSMethod(Runtime.java:1089) 在 com.tns.Runtime.callJSMethod(Runtime.java:1081) 在 com.tns.gen.java.lang.Runnable.run(Runnable.java:17) 在 android.os.Handler.handleCallback(Handler.java:790) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:7000) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 原因:java.lang.SecurityException:需要 NFC 权限:用户 10155 和当前进程都没有 android.permission.NFC。 在 android.os.Parcel.readException(Parcel.java:2029) 在 android.os.Parcel.readException(Parcel.java:1975) 在 android.nfc.INfcAdapter$Stub$Proxy.setForegroundDispatch(INfcAdapter.java:1012) 在 android.nfc.NfcAdapter.enableForegroundDispatch(NfcAdapter.java:1648) ... 14 更多 来自设备 Galaxy Tab Active2 的日志:'\'NativeScript-Vue 将“Vue.config.silent”设置为 true,查看输出日志将其设置为 false。\'' 来自设备 Galaxy Tab Active2 的日志:'\'OnTagDiscovered listener added\'' 来自设备 Galaxy Tab Active2 的日志:“主”线程上发生未捕获的异常。 调用js方法运行失败 错误:java.lang.SecurityException:需要 NFC 权限:用户 10155 和当前进程都没有 android.permission.NFC。 android.os.Parcel.readException(Parcel.java:2029) android.os.Parcel.readException(Parcel.java:1975) android.nfc.INfcAdapter$Stub$Proxy.setForegroundDispatch(INfcAdapter.java:1012) android.nfc.NfcAdapter.enableForegroundDispatch(NfcAdapter.java:1648) com.tns.Runtime.callJSMethodNative(本机方法) com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1242) com.tns.Runtime.callJSMethodImpl(Runtime.java:1122) com.tns.Runtime.callJSMethod(Runtime.java:1109) com.tns.Runtime.callJSMethod(Runtime.java:1089) com.tns.Runtime.callJSMethod(Runtime.java:1081) com.tns.gen.java.lang.Runnable.run(Runnable.java:17) android.os.Handler.handleCallback(Handler.java:790) android.os.Handler.dispatchMessage(Handler.java:99) android.os.Looper.loop(Looper.java:164) android.app.ActivityThread.main(ActivityThread.java:7000) java.lang.reflect.Method.invoke(本机方法) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
这段代码在我的平板电脑上运行,它在我上面提到的实现方法中。
nfc.available().then(
function(avail) {
console.log(avail ? "Yes" : "No");
}
我在控制台中收到消息“是”。
[19-08-02 15:27:52.337] (CLI) (node:18276) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'hash' of null
at PreviewAppController.<anonymous> (C:\Users\XXXXXXXXXXXXX\AppData\Roaming\npm\node_modules\nativescript\lib\controllers\preview-app-controller.js:130:64)
at Generator.next (<anonymous>)
at fulfilled (C:\Users\XXXXXXXXXXXXX\AppData\Roaming\npm\node_modules\nativescript\lib\controllers\preview-app-controller.js:10:58)
at processTicksAndRejections (internal/process/next_tick.js:81:5)
at emitWarning (internal/process/promises.js:99:15)
at processPromiseRejections (internal/process/promises.js:140:9)
at processTicksAndRejections (internal/process/next_tick.js:82:32)
[19-08-02 15:27:52.340] (CLI) (node:18276) TypeError: Cannot read property 'hash' of null
at PreviewAppController.<anonymous> (C:\Users\XXXXXXXXXXXXX\AppData\Roaming\npm\node_modules\nativescript\lib\controllers\preview-app-controller.js:130:64)
at Generator.next (<anonymous>)
at fulfilled (C:\Users\XXXXXXXXXXXXX\AppData\Roaming\npm\node_modules\nativescript\lib\controllers\preview-app-controller.js:10:58)
at processTicksAndRejections (internal/process/next_tick.js:81:5)
(node:18276) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
at emitDeprecationWarning (internal/process/promises.js:113:13)
at emitWarning (internal/process/promises.js:106:3)
at processPromiseRejections (internal/process/promises.js:140:9)
at processTicksAndRejections (internal/process/next_tick.js:82:32)
[19-08-02 15:32:26.783] (CLI) (node:18276) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'hash' of null
at PreviewAppController.<anonymous> (C:\Users\XXXXXXXXXXXXX\AppData\Roaming\npm\node_modules\nativescript\lib\controllers\preview-app-controller.js:130:64)
at Generator.next (<anonymous>)
at fulfilled (C:\Users\XXXXXXXXXXXXX\AppData\Roaming\npm\node_modules\nativescript\lib\controllers\preview-app-controller.js:10:58)
at processTicksAndRejections (internal/process/next_tick.js:81:5)
at emitWarning (internal/process/promises.js:99:15)
at processPromiseRejections (internal/process/promises.js:140:9)
at processTicksAndRejections (internal/process/next_tick.js:82:32)
【问题讨论】:
标签: android nativescript nfc