Android 短信息的挂起名称是否罕见?
我找到的几乎所有发送SMS消息的示例都定义了字符串Android 短信息的挂起名称是否罕见?,android,sms,Android,Sms,我找到的几乎所有发送SMS消息的示例都定义了字符串 String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; 悬挂式帐篷的形状如下: PendingIntent sentIntent = PendingIntent.getBroadcast (this, 0, new Intent(SENT), 0); PendingIntent deliveryIntent = PendingIntent.getBroadcast (this
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
悬挂式帐篷的形状如下:
PendingIntent sentIntent = PendingIntent.getBroadcast (this, 0, new Intent(SENT), 0);
PendingIntent deliveryIntent = PendingIntent.getBroadcast (this, 0, new Intent(DELIVERED0), 0);
最终,我们需要这些电话
sms.sendTextMessage (phoneNumber, null, message, sentIntent, deliveryIntent);
或者(使用它们的数组)
这些字符串是任意的吗?我能说的最好的是,您只需要在您的BroadcastReceiver中过滤它们,但实际字符串是什么并不重要。这是真的吗?是的,这是真的,因为您实际上是在创建意图,所以您所要做的就是确保在创建广播接收器时,意图中指定的操作与意图过滤器中指定的操作相匹配。 您应该考虑到,挂起的意图在内部与常规意图没有区别,除非它将在一段时间后执行,甚至当应用程序的进程被终止时,挂起的内容本身将仍然可以从其他被赋予它的进程中使用 这是android文档中的重要部分: PendingEvent本身只是对系统维护的令牌的引用,该令牌描述了用于检索它的原始数据。这意味着,即使其所属应用程序的进程被终止,PendingEvent本身仍然可以从已提供给它的其他进程中使用。如果创建应用程序稍后重新检索相同类型的PendingEvent(相同的操作、相同的意图操作、数据、类别和组件以及相同的标志),则它将收到表示相同令牌的PendingEvent(如果该令牌仍然有效),因此可以调用cancel()将其删除 由于这种行为,为了检索PendingEvent,了解两个意图何时被认为是相同的非常重要。人们常犯的一个错误是创建多个PendingEvent对象,其意图仅在“额外”内容上有所不同,期望每次都获得不同的PendingEvent。这种情况不会发生。用于匹配的Intent部分与Intent.filterEquals定义的部分相同。如果根据Intent.filterEquals使用两个等效的Intent对象,则两个对象将获得相同的PendingIntent 但是回到你的问题,你可以毫无问题地指定任何动作,只要该动作不匹配为另一个broadcastreceiver注册的其他动作,即使如此,它也应该匹配动作和元数据,所以发生类似事情的可能性很低 希望这有帮助
问候 好的,酷。然而,使用更独特的字符串不是一个好主意吗?我如何知道其他应用程序没有使用相同的字符串,因此也没有收到我的通知。或者,反之亦然?很简单,如果您的操作与任何其他应用程序中指定的任何其他操作相匹配,则操作系统本身将显示一条消息,“例如,您可能在尝试查看视频时已经看到了它”,它会问您应该使用什么应用程序来处理该操作,例如YouTube或浏览器,尽管这有点困难,因为Android的内部意图通常包含元数据,并且应该完全匹配,以将其视为相同的意图……不要误会我的意思,但是如果答案是你正在寻找的,那么如果你把它标记为正确的话就很好了,所以下次人们可能需要时间来回答你的问题……当做别担心。所以我要等大约10分钟才能接受答案:)啊,所以如果有歧义,用户可以选择哪个活动接收意图。是的,我看到了,尽管在你提到的案例中,这是为了创建一个新的活动,而不是接收广播。
sms.sendMultipartTextMessage (phoneNumber, null, parts, sentIntents, deliveredIntents);