2017-02-28 2 views
0

Ich habe zwei separate Android-Apps, AppA und AppB. Ich versuche, AppA zum Starten von AppB (eine Spiele-App) zu bekommen. Nachdem der Benutzer das Spiel (AppB) beendet hat, sendet er die Spieldaten zurück an AppA.Weitergabe von Daten zwischen zwei Android-Apps mit Absicht

So APPA AppB startet richtig, aber wenn der Benutzer mit Spielen des Spiels (AppB) durchgeführt wird, stürzt AppB während die Daten zurück zu AppA senden, und dieser Fehler zeigt sich:

Prozess: com .joy.AppB, PID: 20265 android.content.ActivityNotFoundException: Die explizite Aktivitätsklasse konnte nicht gefunden werden {com.joy.AppA/com.joy.AppA.views.activities.StartGameActivity}; Hast du diese Aktivität in deiner AndroidManifest.xml deklariert?


AppA Paketname: com.joy.AppA
Aktivitätsklasse Name: com.joy.AppA.views.activities.StartGameActivity

AppB Paketname: com.joy.AppB
Aktivität Klassenname: com.joy.AppB.MainActivity


Hier ist, was ich bisher getan habe:

Appas StartGameActivity:

//To launch AppB game 
Intent launchGameIntent = getPackageManager().getLaunchIntentForPackage("com.joy.AppB"); 
startActivity(launchGameIntent); 

//To retrieve game scores from AppB game 
Intent intent = getIntent(); 
String[] gameRecords_array = intent.getStringArrayExtra("gameRecord"); 

Appas AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.joy.AppA"> 
. 
. 
. 
<activity 
     android:name="com.joy.AppA.views.activities.StartGameActivity" 
     android:label="Start Game"> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".views.activities.DashboardActivity" /> 
    </activity> 

AppB des MainActivity:

Intent i = new Intent(); 
i.setComponent(new ComponentName("com.joy.AppA","com.joy.AppA.views.activities.StartGameActivity")); 
i.setAction(Intent.ACTION_SEND); 
i.putExtra("gameRecord", gameRecord_array); 
startActivity(i); 

AppB des AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.joy.AppB" > 

<supports-screens android:resizeable="true" /> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/app_icon" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
. 
. 
. 

Vielen Dank im Voraus für Ihre Hilfe!

Antwort

1

Versuchen Sie folgendes:

Appas AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.joy.AppA"> 
    . 
    . 
    . 
    <activity 
      android:name="com.joy.AppA.views.activities.StartGameActivity" 
      android:label="Start Game"> 

      <intent-filter> 
       <action android:name="com.joy.AppA.views.activities.LAUNCH_IT" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value=".views.activities.DashboardActivity" /> 

     </activity> 

Dann werden die Daten zu senden Aktivität von App b App, dies tun:

Intent i = new Intent(); 
i.setAction("com.joy.AppA.views.activities.LAUNCH_IT"); 
i.putExtra("gameRecord", gameRecord_array); 
startActivity(i); 
+0

Danke für Ihre Hilfe! Fragen Sie mich einfach, ob Sie wissen, wie ich AppA dazu bringen kann, mehrere String-Arrays von AppB zu erhalten? Derzeit sendet AppB mehrere String-Arrays auf einmal an AppA, aber AppA erhält nur das erste String-Array vom Chunk. Vielen Dank! – unintendedjoy

+0

@unintendedjoy, froh, dass meine Antwort Ihnen behilflich war. Wenn Sie Ihre Kommentarfrage richtig verstanden haben, möchten Sie verschiedene Arrays an die Aktivität senden? Sie könnten dies tun: 'Intent i = neue Absicht(); i.setAction ("com.joy.AppA.views.activities.LAUNCH_IT"); i.putExtra ("gameRecordArray1", gameRecord_array); i.putExtra ("gameRecordArray2", gameRecord_array); i.putExtra ("gameRecordArray3", gameRecord_array); i.putExtra ("gameRecordArray4", gameRecord_array); startActivity (i); ' –

+0

Eigentlich habe ich es so gemeint, Sie können sehen, von dieser Frage habe ich gepostet: [Mehrere String-Arrays zwischen zwei Apps mit Absicht übergeben] (http://stackoverflow.com/questions/42533566/passing -multiple-string-arrays-zwischen-zwei-apps-using-intent? noredirect = 1 # comment72202953_42533566) Danke! – unintendedjoy

0

Vielleicht kann es nützlich sein, :

Inhaltsanbieter und Content Resolver-Komponente s.

Inhalt Resolver stellt eine Anfrage an den Inhaltsanbieter, und der Anbieter antwortet. Dies ist vergleichbar mit einer Kommunikation zwischen zwei verschiedenen Anwendungen.

Zum Beispiel ein Client (Resolver) und ein Content-Manager (Provider).

Dies ist ein Beispiel Tutorial: https://www.tutorialspoint.com/android/android_content_providers.htm

Hoffe, es hilft!

Verwandte Themen