我正在收听从k9收到的电子邮件,我似乎无法让它发挥作用。
我已注册以下内容:
com.fsck.k9.intent.action.EMAIL_RECEIVED
我想知道是否需要添加权限 - 我似乎无法接收此广播。
我知道我的接收器正在工作,因为我可以接收短信和电话的广播。有没有其他人使用过这个可能会对这个问题有所了解?
这是我的过滤器:
IntentFilter fltr = new IntentFilter();
fltr.addAction("android.provider.Telephony.SMS_RECEIVED");
fltr.addAction("com.fsck.k9.intent.action.EMAIL_RECEIVED");
fltr.addAction("android.intent.action.PHONE_STATE");
registerReceiver(mRcv, fltr);
在我的BroadcastReceiver中:
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String EMAIL_RECEIVED = "com.fsck.k9.intent.action.EMAIL_RECEIVED";
private static final String CALL_RECEIVED = "android.intent.action.PHONE_STATE";
public void onReceive( Context context, Intent intent ) {
Log.d(TAG, "Inside Broadcast Reciever");
Log.d(TAG, "Action: " + intent.getAction());
if(intent.getAction().equals(SMS_RECEIVED)) {
StartAct("SMS Received", context);
}else if(intent.getAction().equals(EMAIL_RECEIVED)){
StartAct("Email received", context);
}else if(intent.getAction().equals(CALL_RECEIVED)){
if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING))
StartAct("Incoming Phone Call", context);
}
}
答案 0 :(得分:1)
我有工作 - 终于......
您必须将数据方案添加到intent过滤器。这将允许您接收广播。但它会破坏我在过滤器中的其他动作,所以我不得不将它们分成单独的接收器 - 一个用于短信和电话,另一个用于k9电子邮件广播。
以下是k9电子邮件的内容:
IntentFilter fltr = new IntentFilter();
fltr.addAction("com.fsck.k9.intent.action.EMAIL_RECEIVED");
fltr.addDataScheme("email"); //This is needed to even receive the broadcast
registerReceiver(mRcv, fltr);
答案 1 :(得分:0)
尝试查看实际的K9 source code。 AndroidManifest显示了他们拥有的几项权限。尝试编译你的程序,它连接到eclipse并检查LogCat,如果缺少权限,它通常会显示在它的错误部分。我只看到他们创建的4个声明的权限,所以READ_MESSAGE是我的猜测,但检查logcat并看看它说的是什么。
不幸的是,看起来他们的文档缺乏相当多,这是一个该死的耻辱。