如何将消息发送到 Android 中的其他应用程序?

Posted

技术标签:

【中文标题】如何将消息发送到 Android 中的其他应用程序?【英文标题】:How to send messages to another apps in Android? 【发布时间】:2019-07-15 12:39:25 【问题描述】:

我想在我的应用程序中编写一个音乐控制器,这样我就可以从另一个内置音乐应用程序播放/暂停、下一首和上一首我的播放列表。我已经看到使用广播向所有音乐播放器发送消息的解决方案,例如开始播放音乐。问题是,音乐开始在我安装的三个不同的音乐播放器上播放。有谁知道用什么代替 sendBroadcast,所以该消息将只发送到我想要的应用程序?

我在互联网上找到的这个解决方案。它使用 sendBroadcast() 函数。该消息被广播到我不想要的每个音乐播放器。我希望它只发送到一个特定的应用程序

long eventTime = SystemClock.uptimeMillis();

/*NEXT*/
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventTime, eventTime, 
    KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendBroadcast(downIntent, null);

Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent upEvent = new KeyEvent(eventTime, eventTime, 
    KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0);
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
sendBroadcast(upIntent, null);

【问题讨论】:

【参考方案1】:

首先,在清单文件中声明接收者:

<receiver android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
    <intent-filter>
      <action android:name="com.pkg.perform.Ruby" />
    </intent-filter>

就我而言,我是这样使用的:

   final Intent intent=new Intent();
intent.setAction("com.pkg.perform.Ruby");
intent.putExtra("KeyName","code1id");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.setComponent(  
    new ComponentName("com.pkg.AppB","com.pkg.AppB.MyBroadcastReceiver"));  
sendBroadcast(intent);

【讨论】:

以上是关于如何将消息发送到 Android 中的其他应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何将消息/数据从广播接收器(process1)发送到android中的服务线程(process2)?

Android : 如何使用我的应用程序中的 whatsapp、facebook、gmail 等发送应用程序邀请消息

Android 自动消息发送

将消息从服​​务器发送到 Android 应用程序

Firebase 与 Android Java 中的 Google 云消息传递

如何将 Bridge 消息从 Java (Android) 发送到 JavaScript