2016-11-16 130 views
0

我知道BroadcastReceiver功能/功能在Android中如何工作,並且我已經實現了多個應用程序可以接收或發送的操作。Android廣播發送應用程序的包名

但是,每當我的某個應用程序收到廣播時,我想知道哪個應用程序發送了該廣播。

實施例(I有三個應用程序):
Application AApplication B被允許廣播發送到Application C

Application C收到廣播,我想知道哪個應用程序發送此廣播,要麼Application AApplication B

注意:我知道我可以在Intent中添加extra併發送包名稱,但是我正在查找「自動生成」字段。我不想每次都做以下事情:

intent.putExtra("package_name", getPackageName()); 

原因,你問?以上只是一個例子。可能有兩個以上的應用程序發送廣播,我不希望它們每次都在Intent中發送包名。

我也注意到有getPackage()方法Intent,但總是返回null

@Override 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 

    switch (action) { 
     case MY_GLOBAL_ACTION: 
      // this is where I want the package name of the application that sent the broadcast 
      intent.getPackage(); // this is always null 
      break; 
     default: 
      break; 
    } 
} 

回答

1

我想知道哪些應用程序發送該廣播,無論是應用程序A和應用B?

將其作爲額外添加。

我正在尋找一個「自動生成」的字段。

沒有。默認情況下,Intent不包含有關創建Intent的應用的信息,不包括HashMap以上的信息。

我也注意到有意圖的getPackage()方法,但是總是返回null。

大概,那是因爲你不叫setPackage()。而且,由於該軟件包不能識別發件人,因此不會對您有所幫助。

+0

這是令人失望的,但它是什麼。謝謝 –

相關問題