使用具有目的为“ android.rfid.INPUT”的意图的sendBroadcast
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用具有目的为“ android.rfid.INPUT”的意图的sendBroadcast相关的知识,希望对你有一定的参考价值。
我是android开发的新手,正在尝试调试和了解在Android上运行以扫描条形码的应用程序。请参阅SotfScanService.java以获取完整的源代码。
以下方法应该将扫描后的条形码数据后缀附加到某处。但我不知道在哪里。我认为它会发送到已订阅该特定意图的一个或多个应用程序。
- 有人可以解释一下下面执行
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 += "
";
break ;
case "3":
result += " ";
break ;
case "4":
break ;
}
Intent toBack = new Intent() ;
toBack.setAction("android.rfid.INPUT") ;
toBack.putExtra("data", result );//发送添加前缀后缀的数据
toBack.putExtra("enter", enterFlag) ;
sendBroadcast(toBack) ;
}
sendBroadcast
[进入
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 += " "; break ; case "3": result += " "; 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方法发送的广播的正常用户流之外的消息传递系统。不使用代码,仅研究流程,我认为这是一种自动化的方法,具体取决于从前面提到的意图中收到的结果。最后但并非最不重要的一点,我建议您将所有值打印到
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 += " "; break ; case "3": result += " "; 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) ; }
您可能知道,我没有输入设备以及扫描数据对象,所以这是我所能提供的最大帮助。
以上是关于使用具有目的为“ android.rfid.INPUT”的意图的sendBroadcast的主要内容,如果未能解决你的问题,请参考以下文章