2016-04-11 23 views
1

Ich habe zwei Anwendung, com.appone.one und com.apptwo.two.Wie übertragen Daten von einer App zu einer anderen App in Android

Ich mag Daten appone-apptwo übertragen, möchte ich, wenn ein Datum zu apptwo übertragen, apptwo öffnet oder wenn offen nur kommen (onResume) und zeigt, dass Daten. Ich schrieb diesen Code:

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(); 
    } 

Ich möchte diese Zeile nur schreiben:

String name=getIntent().getStringExtra("MessageText"); 

in OnResume weil ich apptwpo nicht wieder laden möchte, Wenn ich diese Zeile in onCreate schreibe, m y-Code funktioniert gut. aber ich will das in onResume. Jetzt apptwo gibt null zurück :(

was soll ich tun Dank im Voraus

+0

Mögliche Duplikat [How Daten von einer Anwendung an andere Anwendung in Android senden?] (http://StackOverflow.com/Questions/14355860/How-to-send-Data-von-eine-Anwendung-zur-anderen-Anwendung- in-android) –

+0

nein, ich teste diesen Beitrag jetzt, hat nicht funktioniert –

Antwort

1

aufzufrischen löste ich mein Problem mit diesem Link: 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

Verwenden Shared Preferences mit Modus MODE_WORLD_READABLE

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

Werte speichern in Preference:

+0

danke viel .können Sie ein bisschen erklären? –

+0

Vielen Dank: Ich benutze diesen Link http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html, mein Problem gelöst –

+0

Warum Leute stimmen, wenn die Antwort richtig oder akzeptiert ist? –

1

Sie können Content-Anbieter verwenden für die gemeinsame Nutzung von Daten zwischen Ihren Apps. Weitere Informationen zu Content Providers finden Sie unter dem folgenden Link:

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

Hinweis: Wenn ich mich nicht falsch Daten mit Content-Providern zwischen Ihren Anwendungen zu übergeben, müssen Sie Ihre Anwendungen mit dem gleichen Schlüsselspeicher unterzeichnen.

Sie können Intent auch verwenden, um Daten an Ihre Anwendung zu übergeben. Sie können es von unten überprüfen.

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

Es ist keine gute Praxis aber können Sie gemeinsame Präferenzen verwenden.

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

Alternative zu ContentProviders sind einfache Intents oder (gebundene) Dienste. – F43nd1r

0

Beide Anwendungen gehören Ihnen, so können Sie es leicht machen.

1) Durch die Verwendung von gemeinsamen Einstellungen können Sie Daten in mobile von app1 speichern und diese Daten abrufen und in app2 verwenden und umgekehrt.

SharedPreferences sind nur für kleine Daten nützlich.

2) Content Provider tun, was Sie fragen.Ein Content-Provider ist nur erforderlich, wenn Sie Daten teilen zwischen mehreren Anwendungen benötigen

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

In Ihrer Situation Sie App ein Content-Provider

bezeichnen dies sein muss, was Sie fordern http://www.compiletimeerror.com/2013/12/content-provider-in-android.html#.Vwsy1vl97IU

+0

Vielen Dank Ich benutzte gemeinsame Vorlieben –

1

Ein dritter und möglicherweise besserer Weg wäre die Verwendung eines oder benutzerdefinierten URI scheme. Standardmäßig senden und empfangen Android-Anwendungen Daten. Wenn Sie beispielsweise auf einen URL-Link klicken, der per E-Mail an Sie gesendet wurde, öffnet die App die Standardanwendung für den Browser. Dies liegt daran, dass der Browser beim Betriebssystem registriert ist und URIs behandelt werden kann, die mit dem Muster einer Web-URI übereinstimmen.

Siehe den beigefügten Link

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

+0

Ich stimme zu. Diese Lösung ist die einfachste in der Implementierung –

0

Verwenden Intent BroadCastReceiver

erstellen

1) Empfänger Dynamische Sendung in Ihrer appOne Aktivität in Ihrem appOne zusammen mit Daten zwischen Anwendungen weitergeben auf bestimmten Ereignis Anruf sendBroadcast (Absicht)

Rufen Sie die Aktivität nicht wie oben erwähnt an. Registrieren Sie einen Broadcast-Empfänger in appTwo mit einer Aktion und senden Sie Broadcast-Absicht von appOne mit derselben Aktion, die in appTwo erwähnt wird. Wenn Sie also sendbradcast (Intent) von appOne auslösen, wird appTwo, das auf diese Absicht hört, ausgelöst und Sie rufen Aktivität von appTwo (Ihre MainActivity) Inside onReceive-Methode der App Überprüfen Sie, ob Ihre Aktivität aktiv ist oder nicht (Wenn Aktivität aktiv ist, dann sendBroadcast (Intent) von appTwo aktualisieren Nachricht in appTwo wenn nicht Tierbew Anruf)

Jetzt in Ihrem appTwo erstellen

1) Statische BroadCastReceiver die Absicht mit einer Aktion innerhalb Manifests zu erhalten, wenn die App nicht

ist geöffnet

2) Dynamischer Rundfunkempfänger in Ihrem a ppTwo Aktivität, wenn die App geöffnet Nachricht