如何将数据从一个应用程序传递到另一个应用程序而不打开后者?

时间:2015-02-18 04:39:37

标签: android android-activity ipc

我想从应用程序中触发应用程序B,A。

为实现这一点,我在A

中写了以下内容
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.somepackage.appb");
intent.putExtra("secret", "message");
startActivity(intent);

然而,这会打开不需要的应用程序B.

请提出建议,以避免B打开并从应用程序A接收后台数据。

3 个答案:

答案 0 :(得分:1)

在应用程序B中写一个BroadcastReceiver并在清单中声明它。

在应用程序A中,制作一个带有额外内容的目标来定位该接收者,并使用该意图调用sendBroadcast

申请表B:

清单

<application>
    ...
    <receiver android:name=".IncomingReceiver" android:enabled="true">
        <intent-filter>
            <action android:name="jason.wei.custom.intent.action.TEST"></action>
        </intent-filter>
    </receiver>
</application>

IncomingReceiver.java

public class IncomingReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String CUSTOM_INTENT = "jason.wei.custom.intent.action.TEST";
        if (intent.getAction().equals(CUSTOM_INTENT)) {
            System.out.println("GOT THE INTENT");
            Toast.makeText(context, "GOT THE INTENT", Toast.LENGTH_LONG).show();
        }
    }
}

申请表A:

String CUSTOM_INTENT = "jason.wei.custom.intent.action.TEST";
Intent i = new Intent();
i.setAction(CUSTOM_INTENT);
sendBroadcast(i);

答案 1 :(得分:0)

您可以使用SharedPreferences

答案 2 :(得分:0)

正如您所看到的,有很多方法可以做到这一点......我自己更喜欢创建一种可以在不与应用B交互的情况下更新数据的服务