我的发送者应用程序将发送它的版本号给我的接收者应用程序
我的Sender App的MainActivity (Initial Activity):
package com.sender.app;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent();
intent.putExtra("version", BuildConfig.VERSION_NAME);
intent.setAction("get.sender.app.version");
intent.setPackage("package com.receiver.app;");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(intent);
}
=================================
My Receiver App's Manifest:
<receiver
android:name=".receivers.BroadcastReceiver_GetSenderAppVersion"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="get.sender.app.version" />
</intent-filter>
</receiver>
My Receiver App's MainActivity (Initial Activity):
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter intentFilter = new IntentFilter("get.sender.app.version");
registerReceiver(new BroadcastReceiver_GetSenderAppVersion(), intentFilter);
}
My Receiver App's Broadcast Receiver:
package com.receiver.app;
public class BroadcastReceiver_GetSenderAppVersion extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// IT SHOULD COME HERE, ONLY IF IT IS FROM SENDER APP PACKAGE (com.sender.app)
if (intent.hasExtra("version") && intent.getStringExtra("version").length() > 0)
Toast.makeText(context, intent.getStringExtra("version"), Toast.LENGTH_LONG).show();
}
}
我的接收端App应该在Toast中打印版本号,只有当它来自包id = com.sender.app的发送端App
我想到的最简单的方法是在你的意图中发送你的包id。在你的发送者应用中输入:
intent.putExtra("senderPackage","com.sender.app");
然后在你的receiver应用中onReceive do check:
if(intent.getExtras().getString("senderPackage").equals("com.sender.app")