2011-05-26 33 views
0

我正在收聽從k9收到的廣播電子郵件,我似乎無法使其工作。未收到來自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); 

在我的廣播接收器:

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

您是否需要許可?我還沒有完成K9接收器,但我知道你需要許可的短信和電話,K9是否說要申報許可? – Nicholas 2011-05-26 15:52:06

+0

我不確定權限 - 這是我想知道的。我不確定在哪裏查看是否需要。關於廣播意圖的wiki頁面沒有說明任何有關權限的內容。 – Chris 2011-05-26 17:04:57

回答

0

嘗試尋找在實際K9 source codeAndroidManifest顯示了它們擁有的幾個權限。嘗試編譯你的程序,它與eclipse連接並檢查LogCat,它通常會在錯誤部分顯示缺少權限。我只看到他們創建的4個聲明的權限,所以READ_MESSAGE是我的猜測,但請檢查logcat並查看它說的是什麼。

不幸的是,它看起來像他們的文檔缺乏一點,這是一個該死的恥辱。

1

我有它的工作 - 最後....

你必須添加一個數據方案的意圖過濾器。這將允許您接收廣播。但它會打破我在過濾器中的其他行爲,所以我不得不將它們分成不同的接收器 - 一個用於短信和電話,另一個用於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); 
相關問題