我将向您展示如何发送和接收隐式意图。这对于向一个或多个活动、服务或广播接收器以及应用程序之间发送数据很有用。缺点是这是一个“公共”意图(如果您不使用 LocalBroadcastManager),所以不要发送任何敏感信息。
- 创建发件人使用的发送方法。
- 修改接收实体的 AndroidManifest.xml(在您的情况下为 Activity)
- 修改接收实体以处理传入的 Intent。
第一步 - 创建发件人使用的发送方法。:
public final static String ACTION_SEND_NAME = "com.example.intent.action.SEND_NAME";
public final static String ACTION_SEND_NAME_EXTRA = "name";
public static void sendPackageName(Context context, String name) {
if (null == context || null == name) {
throw new IllegalArgumentException("Argument(s) may not be null");
}
Intent intent = new Intent(ACTION_SEND_NAME);
intent.putExtra(ACTION_SEND_NAME_EXTRA, name);
//You might add extra these flags
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP);
//LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
//context.sendBroadcast(intent);
//context.startService(intent);
context.startActivity(intent);
}
第二步 - 修改 AndroidManifest.xml:
<activity
android:name="com.example.MyActivity"
android:label="@string/app_name">
<intent-filter>
<!-- Other Intent filters -->
<action android:name="com.example.intent.action.SEND_NAME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
第三步 - 修改接收实体:
void onCreate (Bundle savedInstanceState) {
//...
// Get intent, action and MIME type
Intent intent = getIntent();
String appName;
if (ACTION_SEND_NAME.equals(intent.getAction())) {
appName = intent.getStringExtra(Intent.ACTION_SEND_NAME_EXTRA);
}