2015-05-29 3 views
0

У меня есть 2 приложения, A и B.startActivityForResult() немедленно вызывает OnActivityResult при вызове другого приложения

в приложении A, я хочу вызвать приложение B и получить результат из приложения B. Стараюсь этот код:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.app.B"); 
startActivityForResult(launchIntent, CODE); 

, но после того, как я назвал этот код, метод onActivityResult() вызывается немедленно и дать результат RESULT_CANCELLED.

App B манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.app.B"> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".TestActivity" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="adjustResize" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 

App B TestActivity:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    if (getCallingActivity() == null) { 
     startActivity(new Intent(this, MainActivity.class)); 
     finish(); 
    } else { 
     Intent returnIntent = new Intent(); 
     setResult(RESULT_OK, returnIntent); 
     finish(); 
    } 
} 

ответ

1

Я просто добавить launchIntent.setFlags(0); до того startActivityForResult() на основе this answer

0
getCallingActivity() 

woun't быть нулевым только в том случае, если вы могли бы назвать конкретную активность с startActivityForResult Намерения.
Но вы вызываете не конкретную активность, а getPackageManager().getLaunchIntentForPackage("com.app.B");
, которая извлекает активность запуска по умолчанию указанного пакета и запускает ее с намерением по умолчанию (пустой).

0

Это то, что вы закодированы .. После активности В приложении запускается вы назвали метод setResult, потому что он находится в OnCreate (метод) .. причина вы получаете неисправный код результата, потому что вы установили

setResult(RESULT_OK, returnIntent) 

но вы должны были использовать Activity.RESULT_OK как

setResult(Activity.RESULT_OK, returnIntent) 
Смежные вопросы