2015-12-07 33 views
3

比方說,我有2個應用程序的清單(附錄一&應用B)以下接收器:Android的接收器 - 相同的名稱,並在多個應用程序接收器的作用

<receiver android:enabled="true" android:name="com.MyReceiver"> 
    <intent-filter> 
     <action android:name="com.COMMON_ACTION" /> 
    </intent-filter> 
</receiver> 

在每一個應用程序,我想創建一個PendingIntent,如果不存在,並使用AlarmManager進行不精確重複。要檢查是否存在一個,我執行下面的代碼:

boolean alarmExists = (PendingIntent.getBroadcast(mContext, 
      DEFAULT_PENDING_INTENT_ID, intent, 
      PendingIntent.FLAG_NO_CREATE) != null); 

這是否應該在一個應用程序返回false,即使應用B已經創造了在同一設備上掛起的意圖是什麼? 是否有理由推遲這兩個應用程序中的接收器(通過對每個應用程序使用不同的操作)?

回答

1

每個應用程序都有自己的PendingIntent s。這些不在不同的應用程序之間共享。

如果應用程序A已經創建了一個PendingIntent用ACTION = 「com.COMMON_ACTION」,和應用程序B的作用:

Intent intent = new Intent("com.COMMON_ACTION"); 
boolean alarmExists = (PendingIntent.getBroadcast(mContext, 
     DEFAULT_PENDING_INTENT_ID, intent, 
     PendingIntent.FLAG_NO_CREATE) != null); 

alarmExistsfalse

+0

謝謝。你能指出我的一些文件嗎?所以基本上,意圖過濾器也會檢查創建者包的名稱? – Asaf

+0

是的,它的確如此。不幸的是,這在文檔中沒有明確指出。你通過自己測試並閱讀源代碼的大量數據來學習這些東西;-)你需要20分鐘來編寫一個小測試程序來自己測試。 –

相關問題