2017-10-25 17 views
1

注初期化できません:私が使用しようとしているがあり類似した多くの疑問があるが、それらの非は私を助けたので、私は私の場合のために再度依頼するdesiced :)XamarinのAndroidアプリのFacebookのSDK

を私のXamarin Android AppにログインするFacebookボタン。 私Login.axmlは、次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:minWidth="25px" 
android:minHeight="25px"> 

<com.facebook.login.widget.LoginButton 
    android:id="@+id/facebookLoginButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="30dp" 
    android:layout_marginBottom="30dp" /> 
</LinearLayout> 
... 

そして、私のクラス私はこのようなルックスのボタンを使用しています:

class FacebookLogin : Activity 
{ 

    LoginButton BtnFbLogin; 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 
     SetContentView(Resource.Layout.Login); 
     BtnFbLogin = FindViewById<LoginButton>(Resource.Id.facebookLoginButton); 
     BtnFbLogin.Click += delegate { LoginToFacebook(); }; 
    } 
... 

たびに、私は私はアプリを起動しようとすると、次の例外を取得:

I/FacebookInitProvider(4420): Failed to auto initialize the Facebook SDK 
I/FacebookInitProvider(4420): A valid Facebook app id must be set in the 
AndroidManifest.xml or set by calling FacebookSdk.setApplicationId before initializing the sdk. 
I/FacebookInitProvider(4420): at com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:275) 
I/FacebookInitProvider(4420): at com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:231) 
I/FacebookInitProvider(4420): at com.facebook.internal.FacebookInitProvider.onCreate(FacebookInitProvider.java:20) 
I/FacebookInitProvider(4420): at android.content.ContentProvider.attachInfo(ContentProvider.java:1751) 
I/FacebookInitProvider(4420): at android.content.ContentProvider.attachInfo(ContentProvider.java:1726) 
I/FacebookInitProvider(4420): at android.app.ActivityThread.installProvider(ActivityThread.java:5853) 
I/FacebookInitProvider(4420): at android.app.ActivityThread.installContentProviders(ActivityThread.java:5445) 
I/FacebookInitProvider(4420): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5384) 
I/FacebookInitProvider(4420): at android.app.ActivityThread.-wrap2(ActivityThread.java) 
I/FacebookInitProvider(4420): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545) 
I/FacebookInitProvider(4420): at android.os.Handler.dispatchMessage(Handler.java:102) 
I/FacebookInitProvider(4420): at android.os.Looper.loop(Looper.java:154) 
I/FacebookInitProvider(4420): at android.app.ActivityThread.main(ActivityThread.java:6119) 
I/FacebookInitProvider(4420): at java.lang.reflect.Method.invoke(Native Method) 
I/FacebookInitProvider(4420): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
I/FacebookInitProvider(4420): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
D/Mono (4420): Assembly Ref addref projectname[0x770ab9895a80] -> Mono.Android[0x770aa4e70980]: 19 
D/Mono (4420): DllImport searching in: '__Internal' ('(null)'). 
D/Mono (4420): Searching for 'java_interop_jnienv_get_array_length'. 
D/Mono (4420): Probing 'java_interop_jnienv_get_array_length'. 
D/Mono (4420): Found as 'java_interop_jnienv_get_array_length'. 
Loaded assembly: MonoDroidConstructors [External] 
D/Mono (4420): Assembly Ref addref projectname[0x770ab9895a80] -> mscorlib[0x770ab9895700]: 29 
D/Mono (4420): Assembly Ref addref projectname[0x770ab9895a80] -> Xamarin.Facebook[0x770aa4e70880]: 2 
D/  (4420): HostConnection::get() New Host Connection established 0x770aa3d96560, tid 4420 
W/  (4420): Unrecognized GLES max version string in extensions: ANDROID_EMU_CHECKSUM_HELPER_v1 
W/  (4420): Process pipe failed 
D/Mono (4420): DllImport searching in: '__Internal' ('(null)'). 
D/Mono (4420): Searching for 'java_interop_jnienv_call_void_method_a'. 
D/Mono (4420): Probing 'java_interop_jnienv_call_void_method_a'. 
D/Mono (4420): Found as 'java_interop_jnienv_call_void_method_a'. 
Unhandled Exception: 

Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class com.facebook.login.widget.LoginButton 

基本的には有効なFacebookアプリIDがのAndroidManifest.xmlに設定するか、またはinitializi前FacebookSdk.setApplicationIdを呼び出して設定しなければならないことを言います、 sdk。 XamarinはFacebook SDKを自動初期化するため、ApplicationIdを手動で設定する方法は使用できません。そこで、マニフェストファイルにApplicationIdを設定しました。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="projectname.projectpackage" android:versionCode="1" android:versionName="1.0" android:installLocation="auto"> 
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="23" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application android:allowBackup="true" android:label="@string/app_name" android:theme="@android:style/Theme.Material.Light"></application> 

    <meta-data android:name="com.facebook.sdk.ApplicationId" 
      android:value="@string/facebook_app_id"/> <!--is defined in Strings.xml --> 

    <activity android:name="com.facebook.FacebookActivity" 
     android:configChanges= 
       "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
     android:label="@string/app_name" /> 
    <activity 
     android:name="com.facebook.CustomTabActivity" 
     android:exported="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="@string/fb_login_protocol_scheme" /> 
    </intent-filter> 
    </activity> 
</manifest> 

私は間違っていますか?なぜこの例外が発生するのですか?

答えて

0

meta-dataタグは、マニフェストの直接編集を介してapplicationタグ

を定義する必要が投稿:

[assembly: MetaData("com.facebook.sdk.ApplicationId", Value = "@string/facebook_app_id")] 
+0

:アセンブリレベル属性によって

<application android:label="@string/app_name" ...> ... <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> ... </application> 

それは私の問題です!次回は朝に5時まで働かないでね:Dありがとう! – papapple

関連する問題