2016-04-11 48 views
1

我有两个应用程序,com.appone.onecom.apptwo.two如何从一个应用程序传输数据到另一个应用程序android

我想从appone数据传输到apptwo,我要当一个数据转移到apptwoapptwo打开或者只开放上来(的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"); 

OnResume,因为我不想再apptwpo加载,如果我在onCreate中写这行,m y代码工作正常。但我想在onResume。 现在apptwo返回null :(

我应该怎么做事先

+0

的可能的复制[如何从一个应用程序发送数据到其他应用程序在Android?](http://stackoverflow.com/questions/14355860/how-to-send-data-from-one-application-to-other-application- in-android) –

+0

不,我现在测试那个帖子,没有工作 –

回答

1

我解决我的问题与此链接: http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html

appone:

SharedPreferences prefs = getSharedPreferences("demopref", 
          Context.MODE_WORLD_READABLE); 
        SharedPreferences.Editor editor = prefs.edit(); 
        editor.putString("demostring", ""+Connect.MessageArrive.toString()); 
        editor.commit(); 

        Intent i = new Intent(Intent.ACTION_DATE_CHANGED); 
        PackageManager manager = getPackageManager(); 
        i = manager.getLaunchIntentForPackage("com.graphhopper.android"); 
        // i.putExtra("MessageText",""+Connect.MessageArrive.toString()); 
        i.addCategory(Intent.CATEGORY_LAUNCHER); 


        //i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
        startActivity(i); 

apptwo:

@Override 
    public void onResume() { 
     super.onResume(); 
      con = createPackageContext("com.appone.one", 0); 
      SharedPreferences pref = con.getSharedPreferences(
        "demopref", Context.MODE_PRIVATE); 
      String data = pref.getString("demostring", "No Value"); 
} 
-2

使用Shared Preferences 感谢与模式MODE_WORLD_READABLE

SharedPreferences sPref = activity.getPreferences(Activity.MODE_WORLD_READABLE); 

保存值偏好:

+0

非常感谢。你能解释一下吗? –

+0

非常感谢:我使用这个链接http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html,我的问题解决了 –

+0

为什么人们如果答案是正确的或者被接受的话投票呢? –

1

您可以使用内容提供商以便在您的应用程序之间共享数据。您可以通过以下链接了解有关内容提供商的更多信息:

http://developer.android.com/guide/topics/providers/content-providers.html

注:如果我没有错与您的应用程序之间的内容提供商传递数据,您需要使用相同的密钥库签署您的应用程序。

您还可以使用Intents将数据传递到您的应用程序。你可以从下面检查它。

http://developer.android.com/training/sharing/send.html

这不是一个很好的做法,但你可以使用共享偏好。

SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE); 
+0

ContentProviders的替代方案是简单Intents或(绑定)服务。 – F43nd1r

0

这两个应用程序都是你的,所以可以很容易地做到这一点。

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

+0

非常感谢我使用共享偏好 –

1

第三种,也可能更好的方法是使用或自定义URI scheme。默认情况下,这是Android应用程序发送和接收数据的方式。例如,当您点击通过电子邮件发送给您的url链接时,应用程序将打开默认的浏览器应用程序。这是因为浏览器向操作系统注册了它可以处理符合web uri模式的URI。

见附件链接

http://developer.android.com/training/basics/intents/filters.html

+0

我同意。这个解决方案是最简单的实现 –

0

使用意图传递应用程序之间的数据和广播接收器

沿

在你appOne创建appOne活动中

1)动态广播接收器特别活动电话sendBroadcast(意图)

不要像上面提到的那样调用活动。在appTwo中注册广播接收器并执行一些操作,并使用appTwo中提及的appOne中提及的相同操作从appOne发送“广播”意图。 因此,当你从appOne发送sendbradcast(意图),appTwo倾听意图将触发,并在那里你调用appTwo的活动(Your MainActivity) Inside onReceive方法的appTwo检查你的活动是否活动(如果活动是活动的,然后sendBroadcast从appTwo(意向)在appTwo刷新消息,如果你appTwo不调用Activty)

立即创建

1)静态广播接收器与内部明显一些行动收到的意图时,应用程序是无法打开

2)您的a内部动态广播接收器ppTwo活动,如果应用程序是开放的刷新消息

相关问题