如何将消息发送到 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 等发送应用程序邀请消息