Конфликт с тегами активности на манифесте Android: Facebook и Google Play Games в Unity3d
Плагины для Facebook и Google Play Games требуют, чтобы я использовал android.intent.action.MAIN и android.intent.action.LAUNCHER в манифесте Android. Но одно отменяет другое. Я новичок в мобильной разработке. Есть ли обходной путь? Что я могу делать не так?
Manifest:
<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" />
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 используйте это как основное занятие.
@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 более полным способом.
Начальное значение является нулевым значением, потому что сеанс, потому что это так.