2013-10-10 56 views
6

我需要从我的一个应用程序发送广播到另一个应用程序..任何帮助! 我的应用程序包是:1)com.demo.database和2)com.demo.list从一个APK /包发送广播到另一个apk /包

Intent themesIntent = new Intent(ThemesManager.THEMES_UPDATED); 
themesIntent.putExtra("package", packageName); 
ctx.sendBroadcast(themesIntent); 

不工作..

编辑:

<receiver android:name="com.sample.ThemesUpdatedReceiver"> 
     <intent-filter> 
      <action android:name="com.sample.THEMES_UPDATED"/> 
     </intent-filter> 
    </receiver> 
+0

你是否在''AndroidManifest.xml'文件中的'com.demo.list'中声明了'BroadcastReceiver',或者只是在代码中?因为它必须在'AndroidManifest.xml'中才能在应用程序之间工作。 – bclymer

+0

是的,它有意图过滤器 – AJit

+0

一个重要的事情是com.demo.list没有LAUNCHER活动..不知道可以有任何区别 – AJit

回答

2

如果你要广播,一般情况下你有一个发送者和接收者。你贴什么样子发件人..

发送者(在任何你是从发送):

Intent toret = new Intent(); 
toret.setAction("com.myapp.foo"); 
toret.putExtra("bar", "fizzbuzz"); 
sendBroadcast(toret); 

接收器(如中onResume()

IntentFilter intentFilter = new IntentFilter("com.myapp.foo"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // ... do something with the intent 
     } 
    // register the receiver 
    this.registerReceiver(receiver , intentFilter); 

发件人始终发送,接收者需要注册才能听取意图。

+0

yup,在AndroidManifest.xml中注册 – AJit

+0

好的,那么XML中有什么? (什么是THEMES_UPDATED常量的值?) –

+0

添加编辑,并且是THEMES_UPDATED是常数值 – AJit

2

我觉得每个发送的广播都会被所有的应用程序接收,除非你将setPackage设置为发送特定包的广播意图。

我没有收到广播,因为我的另一个应用程序没有启动(没有启动器活动)。

5

@Ajit:嗨,自从API API 3.0 [API level 11]以来,如果应用程序从未被启动过一次,那么它的BroadcastReceiver无法接收events.As,就你而言,你的应用程序没有启动器活动,因此可能会导致拒绝事件。

除此之外,请尝试使用以下方法: 您在创建Intent对象时已经传递了该常量值。而是在方法intent.setAction()中传递它。

希望这会有所帮助。

+0

感谢ans @anish,设置和操作不提供任何解决方案... – AJit

+0

非常有用的ans –