我正在使用蓝牙按钮和Zebra TC20。当要单击额外的蓝牙按钮时,我想开始进行斑马扫描。
他们的应用支持蓝牙按钮-flic。有一个发送意图的选项。因此,我想向我的应用发送意向。这可以通过隐式意图来完成。但是我正在构建此应用程序,因此我知道应该触发扫描的确切活动。
从我阅读的内容中,如果我想要我知道名字的活动,则应该使用显式意图,但是到处都有显式意图绑定在一个应用程序中。
是否可以从另一个应用程序调用我的应用程序的特定活动?
此问题已编辑。
答案 0 :(得分:3)
请看第52-61页的manual,所有内容都得到了解释,我必须使用ET55来实现,但这似乎是相同的过程。
我个人是使用Intent输出选项(通过广播传递的intent来做到这一点)的。
首先,您可以打开DataWedge应用程序(该应用程序应预先安装,在此处配置有关扫描仪的内容)
Profile enabled option
Associated apps
选项)datawedge.yourapp.SCANNER_RESULT
Broadcast Intent
然后,您必须在您的应用中注册广播接收器(在onCreate()
中):
//first you implement the action to be executed when it receives the broadcast
receiverZebra = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String scanResult = intent.getStringExtra("com.symbol.datawedge.data_string");
/*
do things with the barcode here
*/
}
};
//then make a filter for the broadcast
filterZebra = new IntentFilter();
filterZebra.addCategory(Intent.CATEGORY_DEFAULT);
//the action you set in step 5 in datawedge
filterZebra.addAction("datawedge.yourapp.SCANNER_RESULT");
然后在onStart
和onStop
方法中,您可以注册/注销广播接收器
@Override
protected void onStart(){
super.onStart();
registerReceiver(receiverZebra, filterZebra);
}
@Override
protected void onStop()
{
super.onStop();
unregisterReceiver(receiverZebra);
}
还有其他方法可以实现它,如果没有,除了Intent输出,别无选择,但对我来说很好。我认为TC20和ET55之间没有太大区别,所以它也应该对您有用
在按钮的配置应用程序中,您应该能够将意图操作名称链接到蓝牙按钮。要接收它,您必须在应用清单中设置一个意图过滤器:
<activity
android:name="com.example.myapplication.activitytolaunch"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.example.myapplication.ACTIVITY_TO_LAUNCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
您的按钮将必须启动意图:"com.example.myapplication.ACTIVITY_TO_LAUNCH"
如果您想直接启动活动,则可以使用答案的第二部分。如果必须在打开应用程序时处理条形码(即,将条形码添加到列表中),则可以告诉按钮广播意图,则可以使用第一部分。