我正在使用此代码触发一个意图:
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MY_ACTION);
Uri myUri = Uri.parse("content://myapp.name.provider/triggerassignablepairs/10");
intent.setData(myUri);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 10, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+10000, pendingIntent); //set it to 10 sec after current time
在这种形式下,警报不会触发。
然而,如果我省略intent.setData(my_obj.uri)
它会触发它会触发。
这是正常的行为,有没有办法解释它?
有关如何解决此问题的任何建议?我对包含uri
的兴趣既可以从我的ContentResolver
(我可以使用intent.putExtras
)中检索数据库条目,也可以将特定警报与将引用其他警报的其他警报区分开来。数据库条目。
答案 0 :(得分:0)
使用Uri
方法向Intent
添加setData()
时,您需要在<data>
intent-filter
中添加BroadcastReceiver
标记1}}在应用清单中,并指定与scheme
对应的host
,port
,path
和Uri
属性的组合。
在你的情况下,警报确实被触发,但BroadcastReceiver
没有拦截Intent
。
示例:强>
<receiver
android:name="com.somedomain.MyReceiver">
<intent-filter>
<data android:scheme="content" />
</intent-filter>
</receiver>
<强>参考文献:强>
1。 <data>