Конфликт с тегами активности в манифесте Android: игры Facebook и Google Play в Unity3d

Плагины Facebook и Google Play Games требуют, чтобы я использовал android.intent.action.MAIN и android.intent.action.LAUNCHER в манифесте Android. Но одно отменяет другое. Я новичок в мобильной разработке. Есть ли обходной путь? Что я могу делать неправильно?

Манифест:

<application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:name="com.soomla.store.SoomlaApp">

<intent-filter>

    <action android:name="android.intent.action.MAIN" />

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

    <action android:name="android.intent.action.MAIN" />

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

<activity android:name="com.bfsgooglegames.GoogleGamesUnityPlayerActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">

</activity>

<activity android:name="com.bfsgooglegames.GoogleGamesUnityPlayerNativeActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">

  <meta-data android:name="android.app.lib_name" android:value="unity" />

  <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />

</activity>

<activity android:name="com.facebook.LoginActivity" android:screenOrientation="landscape" android:configChanges="keyboardHidden|orientation">

</activity>

<service android:name="com.soomla.billing.BillingService" />

<receiver android:name="com.soomla.billing.BillingReceiver">

  <intent-filter>

    <action android:name="com.android.vending.billing.IN_APP_NOTIFY" />

    <action android:name="com.android.vending.billing.RESPONSE_CODE" />

    <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />

  </intent-filter>

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="\ 209458325882127" />

<meta-data android:name="com.google.android.gms.appstate.APP_ID" android:value="@string/app_id_games" />


person Iguatemi Garin    schedule 23.09.2013    source источник


Ответы (2)


Да, есть обходной путь! В вашем основном классе активности в java вы можете добавить это к методу onActivityResult():

Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);

если у вас нет доступа к источнику com.bfsgooglegames.GoogleGamesUnityPlayerActivity, который является основным используемым вами действием, вы можете создать другой класс, расширяющий этот. пример:

import android.content.Intent;
import android.os.Bundle;
import com.facebook.Session;

public class MyMainUnityPlayerActivity extends com.bfsgooglegames.GoogleGamesUnityPlayerActivity {
  @Override
  protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
  } 
}

Затем в своем AndroidManifest.xml используйте это как основное действие.

person Brian Jew    schedule 24.09.2013

@Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    **if( null != Session.getActiveSession() )**
    {   
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    **}**
  } 

Если вы этого не сделаете, вы должны сначала войти в Facebook более полным способом.

Начальное значение является нулевым значением, поскольку сеанс является таковым.

person snowberry    schedule 01.01.2014