- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 java 模块,可以检测磁卡读卡器外围设备是否连接到 android 手机。它在完整的 android 版本中运行良好,如果未连接外围设备,它会显示一个 toast,这是工作的完整 native java 代码:
public class MainActivity extends AppCompatActivity {
private SwipeHandler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
run();
}
public void run(){
SwipeListener listener = new SwipeListener() {
@Override
public void onDisconnected(SwipeEvent swipeEvent) {
Toast someToast = Toast.makeText(getApplicationContext(),"Card is disconnected!", Toast.LENGTH_LONG);
someToast.show();
}
@Override
public void onConnected(SwipeEvent swipeEvent) {
}
@Override
public void onStarted(SwipeEvent swipeEvent) {
}
@Override
public void onStopped(SwipeEvent swipeEvent) {
}
@Override
public void onReadData(SwipeEvent swipeEvent) {
}
@Override
public void onParseData(SwipeEvent swipeEvent) {
}
@Override
public void onICDetected(SwipeEvent swipeEvent) {
}
};
handler = new SwipeHandler(this);
handler.addSwipeListener(listener);
handler.setReadonly(true);
handler.powerOn();
}
public class mreaderManager extends ReactContextBaseJavaModule {
private SwipeHandler handler;
public mreaderManager(ReactApplicationContext reactContext){
super(reactContext);
run();
}
//override getName function
@Override
public String getName(){
return "mreaderManager";
}
//function body
@ReactMethod
public void greetUser(String name, Callback callback){
String greeting = "Welcome " + name;
callback.invoke(greeting);
}
public void run(){
//declare swipe listener
SwipeListener listener = new SwipeListener() {
@Override
public void onDisconnected(SwipeEvent swipeEvent) {
Toast someToast = Toast.makeText(getReactApplicationContext(),"Card is disconnected!", Toast.LENGTH_LONG);
someToast.show();
}
@Override
public void onConnected(SwipeEvent swipeEvent) {
}
@Override
public void onStarted(SwipeEvent swipeEvent) {
}
@Override
public void onStopped(SwipeEvent swipeEvent) {
}
@Override
public void onReadData(SwipeEvent swipeEvent) {
}
@Override
public void onParseData(SwipeEvent swipeEvent) {
}
@Override
public void onICDetected(SwipeEvent swipeEvent) {
}
};
//instantiate swipe handler
handler = new SwipeHandler(getReactApplicationContext());
handler.addSwipeListener(listener);
handler.setReadonly(true);
handler.powerOn();
}
}
public class mreaderPackage implements ReactPackage {
@Override
public List
<Class<? extends JavaScriptModule>>
createJSModules(){
return Collections.emptyList();
}
@Override
public List
<ViewManager> createViewManagers(ReactApplicationContext reactContext){
return Collections.emptyList();
}
@Override
public List
<NativeModule> createNativeModules(ReactApplicationContext reactContext){
List<NativeModule> modules = new ArrayList<>();
modules.add(new mreaderManager(reactContext));
return modules;
}
}
handler = new SwipeHandler(getReactApplicationContext());
.我犯了什么错误?该应用程序具有所有必要的权限。我想提一下,在创建完全原生的 android 版本时,应用程序的行为方式相同,直到我停止使用“即时运行”。
------ SYSTEM LOG (logcat -v threadtime -d *:v) ------
--------- beginning of crash
02-26 17:40:48.669 8024 8024 E AndroidRuntime: FATAL EXCEPTION: main
02-26 17:40:48.669 8024 8024 E AndroidRuntime: Process: com.zynletest, PID: 8024
02-26 17:40:48.669 8024 8024 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.HEADSET_PLUG flg=0x40000010 (has extras) } in com.imagpay.bP@5f836e9
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:972)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:743)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at android.os.Looper.loop(Looper.java:150)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5621)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from field 'boolean com.imagpay.bN.i' on a null object reference
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at com.imagpay.SwipeHandler.isReadable(SourceFile:655)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at com.imagpay.SwipeHandler.powerOff(SourceFile:510)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at com.imagpay.SwipeHandler.onDisconnected(SourceFile:571)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at com.imagpay.SwipeHandler.access$0(SourceFile:568)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at com.imagpay.bP.onReceive(SourceFile:1133)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:962)
02-26 17:40:48.669 8024 8024 E AndroidRuntime: ... 7 more
02-26 17:41:23.274 8348 8348 E AndroidRuntime: FATAL EXCEPTION: main
02-26 17:41:23.274 8348 8348 E AndroidRuntime: Process: com.zynletest, PID: 8348
02-26 17:41:23.274 8348 8348 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.HEADSET_PLUG flg=0x40000010 (has extras) } in com.imagpay.bP@ca08f6e
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:972)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:743)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at android.os.Looper.loop(Looper.java:150)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5621)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from field 'boolean com.imagpay.bN.i' on a null object reference
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at com.imagpay.SwipeHandler.isReadable(SourceFile:655)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at com.imagpay.SwipeHandler.powerOff(SourceFile:510)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at com.imagpay.SwipeHandler.onDisconnected(SourceFile:571)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at com.imagpay.SwipeHandler.access$0(SourceFile:568)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at com.imagpay.bP.onReceive(SourceFile:1133)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:962)
02-26 17:41:23.274 8348 8348 E AndroidRuntime: ... 7 more
02-26 17:42:08.267 8989 8989 E AndroidRuntime: FATAL EXCEPTION: main
02-26 17:42:08.267 8989 8989 E AndroidRuntime: Process: com.zynletest, PID: 8989
02-26 17:42:08.267 8989 8989 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.HEADSET_PLUG flg=0x40000010 (has extras) } in com.imagpay.bP@79b169c
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:972)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:743)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at android.os.Looper.loop(Looper.java:150)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5621)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from field 'boolean com.imagpay.bN.i' on a null object reference
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at com.imagpay.SwipeHandler.isReadable(SourceFile:655)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at com.imagpay.SwipeHandler.powerOff(SourceFile:510)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at com.imagpay.SwipeHandler.onDisconnected(SourceFile:571)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at com.imagpay.SwipeHandler.access$0(SourceFile:568)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at com.imagpay.bP.onReceive(SourceFile:1133)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:962)
02-26 17:42:08.267 8989 8989 E AndroidRuntime: ... 7 more
02-26 17:42:12.375 9074 9074 E AndroidRuntime: FATAL EXCEPTION: main
02-26 17:42:12.375 9074 9074 E AndroidRuntime: Process: com.zynletest, PID: 9074
02-26 17:42:12.375 9074 9074 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.HEADSET_PLUG flg=0x40000010 (has extras) } in com.imagpay.bP@79b169c
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:972)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:743)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at android.os.Looper.loop(Looper.java:150)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5621)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from field 'boolean com.imagpay.bN.i' on a null object reference
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at com.imagpay.SwipeHandler.isReadable(SourceFile:655)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at com.imagpay.SwipeHandler.powerOff(SourceFile:510)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at com.imagpay.SwipeHandler.onDisconnected(SourceFile:571)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at com.imagpay.SwipeHandler.access$0(SourceFile:568)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at com.imagpay.bP.onReceive(SourceFile:1133)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:962)
02-26 17:42:12.375 9074 9074 E AndroidRuntime: ... 7 more
02-26 17:42:40.481 9207 9207 E AndroidRuntime: FATAL EXCEPTION: main
02-26 17:42:40.481 9207 9207 E AndroidRuntime: Process: com.zynletest, PID: 9207
02-26 17:42:40.481 9207 9207 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.HEADSET_PLUG flg=0x40000010 (has extras) } in com.imagpay.bP@ca08f6e
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:972)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:743)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at android.os.Looper.loop(Looper.java:150)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5621)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from field 'boolean com.imagpay.bN.i' on a null object reference
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at com.imagpay.SwipeHandler.isReadable(SourceFile:655)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at com.imagpay.SwipeHandler.powerOff(SourceFile:510)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at com.imagpay.SwipeHandler.onDisconnected(SourceFile:571)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at com.imagpay.SwipeHandler.access$0(SourceFile:568)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at com.imagpay.bP.onReceive(SourceFile:1133)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:962)
02-26 17:42:40.481 9207 9207 E AndroidRuntime: ... 7 more
最佳答案
更新:
在考虑了更多情况之后,我注意到 imagpay 库正在使用耳机插头来做这件事,并且 HEADSET_PLUG Intent 是“粘性的”。这意味着 HEADSET_PLUG Intent 可以在系统中徘徊,并在应用程序注册接收器后立即被应用程序接收。这可以解释为什么这些事件在 SwipeHander 仍在构建自身时出现时会产生错误。所以解决这个问题的一种可能方法(假设上面的分析是正确的)是在创建新的 SwipeHandler 之前读取现有的 Intent 。这是一个可能有效的示例(取自 here ):
...
// Register a receiver for a little while.
IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
myReceiver = new IgnorantIntentReceiver();
registerReceiver(myReceiver, filter);
// Give it a moment to deliver the intents.
Thread.sleep(300);
unregisterReceiver(myReceiver);
//instantiate swipe handler
handler = new SwipeHandler(getReactApplicationContext());
handler.addSwipeListener(listener);
handler.setReadonly(true);
handler.powerOn();
}
private class IgnorantIntentReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
switch (state) {
case 0:
Log.d(TAG, "Headset is unplugged");
break;
case 1:
Log.d(TAG, "Headset is plugged");
break;
default:
Log.d(TAG, "I have no idea what the headset state is");
}
}
}
}
com.imagpay.SwipeHandler.isReadable(SourceFile:655)
handler = new SwipeHandler(getReactApplicationContext());
handler = new SwipeHandler(getReactApplicationContext().getBaseContext());
关于java - 当我尝试从 Java 桥接设备监听模块时,为什么我的 Android 会立即响应 native 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42426279/
我有一个在 Silverlight 中开发的应用程序,它必须连接到另一个我无法控制的遗留应用程序,它需要 3005 端口上的 TCP 连接。 我无法修改旧版应用程序以将端口置于 silverlight
我主要使用 Git 工作,并且在 github 上有很多代码。我也想把它放在 Bitbucket 上,供使用 mercurial 的人使用,但更重要的是,因为我也想在我的 domian 上拥有代码,而
有一个emacs插件可以在emacs中直接编辑confluence页面: http://code.google.com/p/confluence-el/ VIM 有类似的东西吗?我无法找到一些东西。
我已在项目中添加了桥接 header ,但随后我也收到“ProjectName\ProjectName - Bridging-Header.h”文件不存在的错误。 最佳答案 在build设置中,为桥接
我有带 libvirt/kvm 虚拟化的 Linux 主机,虚拟机需要“真实的”静态 IP 地址,所以我决定设置桥接网络。我在主机和虚拟机属性中创建了 br0,我设置了源设备:主机设备 vnet0(B
我正在尝试实现以下模型:我有一个包含一些记录(就像可编辑枚举)的字典表(ProductOffer 表)。另外,我有一个主表 (ChangeNet),它应该存储 ProductOffer 的集合。字典不
我有一个理论,但我不知道如何验证它。我们有一个相当大的 iOS 项目,包含大约 200 个 Swift 文件和 240 个 obj-C 文件(以及等量的头文件)。我们仍在使用 Swift 1.2,这意
简而言之,我正在开发一个嵌入式系统,除其他外,它需要一个从 USB 主机端口到设备端口的桥(这只是第一步,稍后传输的信息将被过滤和更改) . 考虑到这基本上是一个 USB 窥探器/嗅探器,我认为应该有
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码): https://github.com/zq2599/blog_demos 关于《Strimzi K
网上搜出来的比较乱,讲的不明不白,因此根据自己弄过一次,确认可行的方式,做个备份,方便日后查阅。 环境: 在oracle vm virtualbox中安装的ubuntu,具体版本名是:ubunt
Symfony 的 bundle、vendor 和 bridge 是什么意思? 最佳答案 小贩 一般来说,vendor是项目的依赖项(又名第三方库)。在 Symfony2 中也是同样的意思。 捆 来自
我正在尝试发布发送到 NSB 主机的 WCF 服务。我查看了 NSB 示例中的 WebServiceBridge 示例,但无法弄清楚如何在 WCF 对应项中使用 NServiceBus.WcfServ
我目前正在尝试将 Google Cloud Messaging 库实现到我的 IOS 应用程序中。我按照说明 from here. 进行操作 但是我遇到了桥接头问题。 This is how my p
我正在快速构建一个 Firebase 应用程序,我正确安装了 cocoa pod,然后创建了一个 Objective-C 文件,这样它就可以使我成为一个桥接 header 。当我尝试在应用程序的其他地
我添加到我的项目桥接头文件中,这样我就可以在 swift 中使用 opencv。我决定我不需要 opencv 所以我删除了桥接头文件,在我这样做之后我无法运行我的项目因为这个错误: :0: 错误:打开
我正在使用 Xcode 8.0,我已经手动创建了 Swift Bridging Header。但是我在 Swift Compiler – Code Generation 下找不到选项 Ojective
我有一个 iphone 应用程序,可以通过以 packages 的形式下载额外的内容来丰富它。 此附加内容(包)是使用 MAC OS 应用程序构建的。 MAC OS 应用程序用于收集资源和艺术品、进行
virtualbox中有四种网络连接方式: nat bridged adapter internal host-only adapter vmware中有三种,其实它跟
网上搜出来的比较乱,讲的不明不白,因此根据自己弄过一次,确认可行的方式,做个备份,方便日后查阅。 环境: 在oracle vm virtualbox中安装的ubuntu,具体版本名是:ubuntu
我正在使用 PHP/Java 桥接您可以找到的获取资本 API here .但是在使用 PHP/Java bridge 连接后(它连接正确并且我测试过),我正在尝试通过为此创建一个对象来使用 API,
我是一名优秀的程序员,十分优秀!