gpt4 book ai didi

java - 使用 Intent 在两个 Android 应用程序之间传递数据

转载 作者:行者123 更新时间:2023-11-30 00:41:25 25 4
gpt4 key购买 nike

我有两个独立的 Android 应用程序,AppA 和 AppB。我正在尝试让 AppA 启动 AppB(这是一个游戏应用程序)。用户玩完游戏(AppB)后,会将游戏记录发回给AppA。

因此,AppA 正确启动了 AppB,但是当用户玩完游戏 (AppB) 时,AppB 在将数据发送回 AppA 时崩溃,并显示此错误:

Process: com.joy.AppB, PID: 20265 android.content.ActivityNotFoundException: Unable to find explicit activity class {com.joy.AppA/com.joy.AppA.views.activities.StartGameActivity}; have you declared this activity in your AndroidManifest.xml?


AppA 包名:com.joy.AppA
Activity 类名称:com.joy.AppA.views.activities.StartGameActivity

AppB 包名:com.joy.AppB
Activity 类名:com.joy.AppB.MainActivity


这是我到目前为止所做的:

AppA 的 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");

AppA 的 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 的 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 的 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>
.
.
.

在此先感谢您的帮助!

最佳答案

试试这个:

AppA 的 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>

然后要从应用程序 b 向应用程序 a Activity 发送数据,请执行以下操作:

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

关于java - 使用 Intent 在两个 Android 应用程序之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com