如何确定意图持有的一个额外的types?

我想通过它的Intent传递任意数据到一个BroadcastReceiver

所以我可能会做如下的事情

 intent.putExtra("Some boolean", false); intent.putExtra("Some char", 'a'); intent.putExtra("Some String", "But don't know what it will be"); intent.putExtra("Some long", 15134234124125); 

然后传递给BroadcastReceiver

我想通过类似keySet()遍历Intent.getExtras() ,但是我也希望能够获得密钥的值,而不必硬编码调用诸如.getStringExtra().getBooleanExtra()

一个人如何做到这一点?

Solutions Collecting From Web of "如何确定意图持有的一个额外的types?"

您可以使用以下代码从Intent获取任何时间的对象:

 Bundle bundle = intent.getExtras(); Object value = bundle.get("key"); 

然后你可以使用Object的方法来确定value的真实types。

您可以在不知道使用keySet()的值的types的情况下浏览Thye键。 它会返回一组您可以迭代的String (请参阅doc )。

但是对于这些值来说,你必须使用一个types化的方法( getStringExtra()getBooleanExtra()等)是正常的:这是由Java本身input的事实引起的。

如果你想发送任意types的数据给你的BroadcastReceiver ,你应该:

  • 在发送之前将所有的额外内容转换为String ,并以String检索它们全部:

     intent.putExtra("Some boolean", "false"); intent.putExtra("Some char", "a"); intent.putExtra("Some String", "But don't know what it will be"); intent.putExtra("Some long", "15134234124125"); 
  • 或者使用返回ObjectBundleget()方法(参见doc ):

     Object o = bundle.get(key)