如何在不打开另一个应用程序的情况下将数据从一个应用程序传递到另一个应用程序?

Posted

技术标签:

【中文标题】如何在不打开另一个应用程序的情况下将数据从一个应用程序传递到另一个应用程序?【英文标题】:How to pass data from one app to another app without opening the latter? 【发布时间】:2015-02-18 04:39:37 【问题描述】:

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

为了实现这一点,我在 A 中写了以下内容

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.somepackage.appb");
intent.putExtra("secret", "message");
startActivity(intent);

但是,这会打开不需要的应用程序 B。

请建议一种解决方法,以避免 B 打开并从应用程序 A 在后台接收数据。

【问题讨论】:

我想从应用程序 A 触发应用程序 B。但是这会打开不需要的应用程序 B。 我是没有得到你想要的? 假设是进程间通信 【参考方案1】:

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

在应用程序 A 中,使用 extras 制作一个意图以该接收者为目标,并使用该意图调用 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);

【讨论】:

【参考方案2】:

您可以使用SharedPreferences。

【讨论】:

【参考方案3】:

如您所见,有很多方法可以做到这一点......我自己更喜欢创建一个无需与应用 B 交互即可更新数据的服务

【讨论】:

以上是关于如何在不打开另一个应用程序的情况下将数据从一个应用程序传递到另一个应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不打开另一个窗口的情况下将 PowerPoint 演示文稿嵌入到 WPF 应用程序中?

如何在不将图像保存在本地的情况下将捕获的图像(Surface View)传递给另一个片段?

如何在不使用全局存储的情况下将类对象从一个屏幕传递到另一个屏幕

如何在不写入磁盘的情况下将 XML 从 Delphi 传递到 C#?

如何在不使用存储库的情况下将Docker镜像从一个主机复制到另一个主机

如何在不破坏 UI 的情况下将搜索放在另一个线程中?