是否可以从其他应用程序接收明确的意图?

时间:2019-04-05 12:24:56

标签: android android-intent

我正在使用蓝牙按钮和Zebra TC20。当要单击额外的蓝牙按钮时,我想开始进行斑马扫描。

他们的应用支持蓝牙按钮-flic。有一个发送意图的选项。因此,我想向我的应用发送意向。这可以通过隐式意图来完成。但是我正在构建此应用程序,因此我知道应该触发扫描的确切活动。

从我阅读的内容中,如果我想要我知道名字的活动,则应该使用显式意图,但是到处都有显式意图绑定在一个应用程序中。

是否可以从另一个应用程序调用我的应用程序的特定活动?

此问题已编辑。

1 个答案:

答案 0 :(得分:3)

请看第52-61页的manual,所有内容都得到了解释,我必须使用ET55来实现,但这似乎是相同的过程。

我个人是使用Intent输出选项(通过广播传递的intent来做到这一点)的。

首先,您可以打开DataWedge应用程序(该应用程序应预先安装,在此处配置有关扫描仪的内容)

  1. 您为应用创建了个人资料
  2. 您单击个人资料,然后检查Profile enabled option
  3. 启用条形码输入和意图输出,禁用击键和ip输出
  4. 您关联了您的应用(Associated apps选项)
  5. (转到手册的第75-76页),您可以使用datawedge.yourapp.SCANNER_RESULT
  6. 之类的方法来设置意图动作。
  7. 您将类别留空了
  8. 您将意图投放设置为Broadcast Intent
  9. 其余的默认选项应该没问题

然后,您必须在您的应用中注册广播接收器(在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");

然后在onStartonStop方法中,您可以注册/注销广播接收器

@Override
protected void onStart(){
    super.onStart();
    registerReceiver(receiverZebra, filterZebra);
}

@Override
protected void onStop()
{
    super.onStop();
    unregisterReceiver(receiverZebra);
}

还有其他方法可以实现它,如果没有,除了Intent输出,别无选择,但对我来说很好。我认为TC20和ET55之间没有太大区别,所以它也应该对您有用

问题被编辑后

  

取自this tutorial

在按钮的配置应用程序中,您应该能够将意图操作名称链接到蓝牙按钮。要接收它,您必须在应用清单中设置一个意图过滤器:

<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"

如果您想直接启动活动,则可以使用答案的第二部分。如果必须在打开应用程序时处理条形码(即,将条形码添加到列表中),则可以告诉按钮广播意图,则可以使用第一部分。