- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Android 开发新手,正在尝试调试和理解在 Android 上运行的用于扫描条形码的应用程序。请参阅SotfScanService.java获取完整源代码。
以下方法应该将扫描的条形码数据发送到某处并附加后缀。但我不知道在哪里。我假设它发送到订阅该特定 Intent 的一个或多个应用程序。
sendBroadcast()
时会发生什么吗? android.rfid.INPUT
是其他应用程序能够理解的标准操作吗?我正在调试此应用程序,因为 Android 设备上的浏览器中运行的网页不会接收扫描的条形码作为 keydown
/keypress
事件,并且仅在输入焦点时附加后缀不在文本框中。
SotfScanService.java:
private void sendToInput(String data , boolean enterFlag){
String result = getfixChar(data);
String append = getAppendChar();
switch (append) {
case "1":
enterFlag = true ;
break ;
case "2":
result += "\n";
break ;
case "3":
result += "\t";
break ;
case "4":
break ;
}
Intent toBack = new Intent() ;
toBack.setAction("android.rfid.INPUT") ;
toBack.putExtra("data", result );//发送添加前缀后缀的数据
toBack.putExtra("enter", enterFlag) ;
sendBroadcast(toBack) ;
}
最佳答案
发送广播
在进行sendBroadcast
之前,我们首先需要知道Broadcast是什么。是。 Android 应用程序可以从 Android 系统和其他 Android 应用程序发送或接收广播消息,类似于发布-订阅设计模式。当感兴趣的事件发生时,会发送这些广播。例如,Android系统会在各种系统事件发生时发送广播,例如系统启动或设备开始充电时。应用程序还可以发送自定义广播,例如,通知其他应用程序它们可能感兴趣的内容(例如,已下载一些新数据)。
从代码的 GitHub 存储库中,我大致从头到尾浏览了一遍,它看起来像是一个涉及扫描某些东西(RFID?条形码?)的自动化应用程序。我已经注释掉了该方法之前和之后的流程,具体如下。
private void sendToInput(String data , boolean enterFlag){
//getfixChar(data): It gets and processes data which stored in SharedPreferences Strings,
//namely prefix_config and suffix_config.
//The return value will be the data with prefix and suffix (prefix + data + suffix)
String result = getfixChar(data);
//getAppendChar(): It get the String stored in SharedPreference, which is append_ending_char, with default value 4.
//If there's no value stored in append_ending_char, it will return 4, and otherwise (1, 2, or 3)
String append = getAppendChar();
switch (append) {
case "1":
enterFlag = true ;
break ;
case "2":
result += "\n";
break ;
case "3":
result += "\t";
break ;
case "4":
break ;
}
//After getting and processing all the values and stored in result and append respectively.
//The values are stored in the Intent extra, namely data and enter.
//It will be send via Broadcast
Intent toBack = new Intent() ;
toBack.setAction("android.rfid.INPUT") ;
toBack.putExtra("data", result ) ;//发送添加前缀后缀的数据 //Translation: Sending data with prefix and suffix added
toBack.putExtra("enter", enterFlag) ;
sendBroadcast(toBack) ;
}
android.rfid.INPUT
作者只是这样命名的,其他应用程序不知道它,除非其他应用程序接收到具有确切名称android.rfid.INPUT
的相同广播。广播可以用作跨应用程序和正常用户流之外的消息系统,开发人员打算接收使用 ScanBroadcast 方法发送的广播。不应用代码,仅通过研究流程,我认为这是一种自动化方法,具体取决于从之前提到的 Intent 收到的结果。
最后但并非最不重要的一点是,我建议您将所有值打印到 logcat
(调试控制台/终端)中,以便您知道哪一部分出了问题。
例如:
private void sendToInput(String data , boolean enterFlag){
String result = getfixChar(data);
Log.d("result", result);
String append = getAppendChar();
Log.d("append", append);
switch (append) {
case "1":
enterFlag = true ;
break ;
case "2":
result += "\n";
break ;
case "3":
result += "\t";
break ;
case "4":
break ;
}
//Last but not least, double check here.
Log.d("result2", result);
Log.d("enterFlag", enterFlag);
Intent toBack = new Intent() ;
toBack.setAction("android.rfid.INPUT") ;
toBack.putExtra("data", result );//发送添加前缀后缀的数据
toBack.putExtra("enter", enterFlag.toString()) ;
sendBroadcast(toBack) ;
}
正如您所知,我没有输入设备以及扫描数据对象,所以这是我能提供的最大帮助。
关于java - 使用 sendBroadcast 并执行操作 "android.rfid.INPUT",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850162/
我在从作为系统应用程序加载到自定义 ROM 中的应用程序发送 Broadcast 时遇到问题(使用 android:sharedUserId="android.uid.system" 在 Manife
sendBroadcast() - 它应该在 Activity 中调用吗?我正在尝试从不扩展 Activity 的实用程序类方法调用 sendBroadcast()。我收到如下编译错误 The met
我有一个广播来检查网络,当网络改变状态时,我用 onNetworkActivated() 或 onNetworkInactivated() 通知我的 Activity : public class N
我有一个列表,我试图使用 Intent 来广播它。在学习了在线教程后,建议我使用 Parcelable 来发送此数据。但是,我在 logcat 中不断收到此错误: Caused by: java.la
我正在使用 sendBroadcast 进行媒体文件扫描。然后我需要等到完成sendBroadcast 之后。我如何在 Android 中执行此操作? 我知道我可以在这里使用简单的 while 逻辑,
我现在已经尝试了 10 多个小时,但我似乎无法考虑任何其他事情。我尝试了互联网上所有可能的示例,但没有成功。 我有扩展NotificationListenerService的NotificationM
很想知道 sendBroadcast 的内部工作原理,如果有人能解释一下就好了。请指出实际的实现。 我在看android源码 ContextWrapper.java 包含 sendBroadcast(
我没遇到什么问题。我正在刷新我的 SD 卡: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + E
我又遇到了一个与 Android 相关的问题。这只是为了让我更深入地了解发送广播的工作原理。 我想知道的是: 1。为什么要在 Activity 上使用广播接收器来获取结果? 我认为广播接收器对于处理实
在广播接收器中发送广播有什么问题吗? 最佳答案 我认为从 BroadcastReceiver 中再次发送广播没有任何问题。 你可以看到类似的例子here. 要了解有关广播接收器的更多信息,请参阅 th
我有一个创建线程的服务。该线程做了一些工作,然后在 Service 上调用 sendBroadcast()。这意味着 sendBroadcast() 是从工作线程调用的,而不是从运行服务的线程调用的。
我有两个应用程序,App A 和 App B。 App A 需要向 App B 发送一些数据(或进行通信以做某事)。 最好的方法是什么。App B 可以有一个广播监听器来接收来自 App A 的广播。
startActivity() 和 sendBroadcast() 有什么区别?我们可以使用 startActivity() 来启动一个 Activity 。sendBroadcast() 也可以这样
我正在尝试修改作为 Android Studio 示例提供的 BluetoothLeGatt 项目,以便在每次读取特征时将 RSSI 值发送回主要 Activity 以供显示。我创建了一个新的 Int
我正在使用 IntentService 从远程源获取数据。当服务获取数据后,它使用 sendBroadcast(intent) 广播它。 在我的主要 Activity 中,我扩展了 Broadcast
LocalBroadcastManager.sendBroadcast() 的返回值( bool 值)没有记录。 我想当至少有一个接收者被注册时它返回 true,如果没有接收者被注册则返回 false
我想制作一个库,以同步方式(从客户端)执行一些 Intent 发送/接收的东西。这样我图书馆的客户就不必关心接收器的实现了。 图书馆会在某处发送 Intent 并接收响应。然后将结果同步返回给客户端。
我怎样才能摆脱编译错误? sendBroadcast(intent); 此方法在我制作的另一个应用程序中运行良好,但在当前应用程序中存在编译错误。红色下划线有错误消息“未定义新的 Runnable 类
我在服务中的线程池中有一个线程可以做很多事情。最后,它将一些数据插入提供程序并发送广播以通知 GUI 有关新数据的信息。 经常发送和接收 1-3 个广播,然后不再接收广播。当我查看线程堆栈跟踪时,它们
我有一个应用程序,它会在启动后立即发送一个广播,这样它就可以获得可用图像的刷新列表。直到今天这一切都很好(至少那是我注意到这一点的时候)。 它仍会启动,但一旦调用 Intent,焦点就会转移到主屏幕应
我是一名优秀的程序员,十分优秀!