我有两个应用程序,com.appone.one
和com.apptwo.two
。
我想从appone
传输数据到apptwo
,我想当一个数据传输到apptwo
,apptwo
打开或如果打开只出现(onResume)并显示该数据。我写了以下代码:
com.appone.one:
Intent i = new Intent(Intent.ACTION_DATE_CHANGED);
PackageManager manager = getPackageManager();
i = manager.getLaunchIntentForPackage("com.apptwo.two");
i.putExtra("MessageText",""+Connect.MessageArrive.toString());
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
com.apptwo.two:
@Override
public void onResume() {
super.onResume();
String name=getIntent().getStringExtra("MessageText");
Toast.makeText(getApplicationContext(),String.valueOf(name), Toast.LENGTH_LONG).show();
}
我只想写这一行:
String name=getIntent().getStringExtra("MessageText");
因为我不想再次加载apptwpo,如果我用onCreate
写这行代码,我的代码工作正常。但是我想用onResume
写这行代码。现在apptwo
返回null:(
我该怎么办?先谢了
7条答案
按热度按时间kknvjkwl1#
你可以使用内容提供程序在你的应用之间共享数据。你可以通过下面的链接了解有关内容提供程序的详细信息。
http://developer.android.com/guide/topics/providers/content-providers.html
注:如果我没有错,通过数据与内容提供商之间的应用程序,你需要签署您的应用程序与相同的密钥库。
您也可以使用Intents将数据传递给您的应用程序。您可以从下面进行检查。
http://developer.android.com/training/sharing/send.html
这不是一个好的做法,但你可以使用共享的首选项。
zte4gxcn2#
第三种可能更好的方法是使用
protocol
或自定义URI scheme
。默认情况下,这是Android应用程序发送和接收数据的方式。例如,当你点击通过电子邮件发送给你的url链接时,应用程序会打开默认的浏览器应用程序。这是因为浏览器在操作系统中注册,它可以处理与Web URI模式匹配的URI。请参见随附链接
http://developer.android.com/training/basics/intents/filters.html
x0fgdtte3#
这两个应用程序都是你的,所以可以很容易地使它。
1)通过使用共享首选项,您可以从app1将数据保存在移动的中,并在app2中获取和使用这些数据,反之亦然。
SharedPreferences仅对小数据有用。
2)内容提供程序可以满足您的要求。仅当您需要在多个应用程序之间共享数据时才需要内容提供程序
http://developer.android.com/guide/topics/providers/content-providers.html
在您的情况下,应用程序必须是内容提供程序
请将您所询问的内容提交至http://www.compiletimeerror.com/2013/12/content-provider-in-android.html#.Vwsy1vl97IU
7tofc5zh4#
使用Intent与BroadCastReceiver沿着在应用之间传递数据
在您的应用程序中创建一个
1)应用内的动态广播接收器特定事件调用sendBroadcast(Intent)上的一个活动
不要像上面提到的那样调用Activity。使用某个操作在appTwo中注册广播接收器,并使用appTwo中提到的相同操作从appOne中发送Broadacst Intent。因此,当您触发sendbradcast时(意图)来自appOne,监听该Intent的appTwo将被触发,此时您将调用appTwo的Activity(您的主活动)在appTwo的onReceive方法中检查您的活动是否处于活动状态(如果活动处于活动状态,则从appTwo发送Broadcast(Intent)以刷新appTwo中的消息(如果未调用活动))
现在在您的应用程序中Two Create
1)静态BroadCastReceiver,用于在应用未打开时通过清单内的某些操作接收Intent
2)应用内的动态广播接收器两个Activity(如果应用已打开以刷新)消息
cclgggtu5#
我用这个链接解决了我的问题:http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html
电话:
应用程序二:
b4wnujal6#
在实施过程中需要注意以下事项。
1.有两个应用程序:App 1和App 2。我们需要将数据从APP 1发送到APP 2,当APP 2完成时,我们需要将数据从APP 2发送回APP 1。
步骤:--在两个应用程序清单中添加android:exported =“true”,用于您希望在其间进行通信的Activity。
在应用程序1中
在App 2清单中,
要获取App 2中的数据,
将数据发送回App 1
bq3bfh9z7#
将
Shared Preferences
与模式MODE_WORLD_READABLE
配合使用保存首选项中的值: