私は2つのアプリケーションAとBを持っていますが、両方のアプリケーションは私によって作られていますが、それらは異なるパッケージに入っています。アクティビティBのデータをアクティビティAに抽出したい。外部アクティビティの開始()
これは私がActivityA.startactivityforresult(ActivityB)
を使用しています。
これはOKです。私はActivityBからデータを取得する必要があり、getExtra()呼び出しでNullpointerExceptionsを取得する必要があります。
ActivityA:
protected void someMethod()
{
Intent intent = getPackageManager().getLaunchIntentForPackage("some.package.app");
intent.putExtra("action", "retrieveData");
startActivityForResult(intent, 7854);
}
protected void onActivityResult (int requestCode, int resultCode, Intent intent)
{
Log.d(TAG, "test: " + intent.getExtras().getString("test"));
}
はActivityB:
protected void onResume()
{
if (getIntent().getExtras() != null && getIntent().getExtras().getString("action").equals("retrieveData"))
{
Intent intent = getIntent();
intent.putExtra("test", "This is a test response");
setResult(7854, intent);
finish();
}
}
OUTPUT: test: null
私が何か間違ったことをやっている、またはこれは単に許可されていませんか?
UPDATE
04-18 18:28:34.908: E/AndroidRuntime(15711): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=7854, result=0, data=null} to activity {dk.rasive.testA/dk.rasive.testA.TestActivity}: java.lang.NullPointerException
04-18 18:32:48.892: E/AndroidRuntime(15801): at dk.rasive.testA.TestActivity.onActivityResult(TestActivity.java:245)
ライン245は、私は別のアプリケーションでの活動をしようとしていないが、活動Aはまた
onActivityResult(int requestCode, int resultCode, Intent data)
を上書きする必要があります。このコード
Log.d(TAG, "test: " + intent.getExtras().getString("test"));
のAndroidManifest.xml。 – Rasive
アクティビティAは、 'onActivityResult'をオーバーライドする必要があります。私はあなたが@Overrideを逃していることについて何も言わなかった。 – techiServices
Aha私は見る:)それは問題を部分的に解決した。今私は: '結果の配信結果の失敗{who = null、request = 7854、result = 0、data = null}'ランタイム例外が発生しました。 – Rasive