LoginSignup
23
24

More than 5 years have passed since last update.

AndroidStudio×FacebookSDK。SDKの導入からシェアの実装までコピペで出来るようにまとめてみました。

Last updated at Posted at 2015-04-27

はじめに

Android開発でFacebookSDKを使う機会があったので、まとめました。
結構ハマっていろいろな記事を参考にさせて頂きました!!
基本的に下記をそのまま(コピペ)やれば動くようになっています!

それでは早速やってみましょう!

使用環境

・AndroidStudio v1.1.0
・FacebookSDK v3

①FacebookSDKのダウンロード

下記URLからFacebookSDKをダウンロード
https://developers.facebook.com/docs/android/downloads

今回はFacebookSDK 3.x.xをダウンロードします。

②FacebookSDKをインポート

①でダウンロードしたファイルを
_Users_kakizaki_shoichi_Downloads_facebook-android-sdk-4_0_0.png

下図のようにappと同じ階層にlibrariesディレクトリを作成し、facebookディレクトリを追加します。
481916e5-1f0d-8806-d6ce-4b072ec778db.png

③settings.gradleを編集

下記図のようにsettings.gradleを編集します。
settings_gradle_-__pasti__-_pasti_-____AndroidStudioProjects_pasti_.png

settings.gradle
include ':app', ':libraries:facebook'

④build.gradleを編集

下記図のようにbuild.gradleを編集します。
app_build_gradle_-__app__-_droidKaigi_-____AndroidStudioProjects_droidKaigi_.png

build.gradle
compile project(':libraries:facebook')

⑤gradle.propertiesを編集

下記図のようにgradle.propertiesを編集します。
05243716-691a-25c9-0154-361c21f84d8a.png

gradle.properties
# 開発環境に合わせてください
ANDROID_BUILD_SDK_VERSION=21
ANDROID_BUILD_TOOLS_VERSION=21.1.2
ANDROID_BUILD_MIN_SDK_VERSION=9
ANDROID_BUILD_TARGET_SDK_VERSION=21

(作成中の開発環境は④で編集したbuild.gradleに記述してあります)

⑥build.gradle(Facebookディレクトリ内)を編集

下記図のようにbuild.gradleを編集します。
(classpath += project.files(android.getBootClasspath().join(File.pathSeparator))は消してください)

facebook_build_gradle_-__facebook__-_pasti_-____AndroidStudioProjects_pasti_.png

Facebook/build.gradle
-    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
+    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
+    classpath += files(ext.androidJar)

⑦FacebookShareActivityの作成

下記をコピペして任意の場所に設置してください!(packageは自分の環境にあわせてください)

FacebookShareActivity.java
package com.example.hogehoge;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.facebook.*;
import com.facebook.widget.FacebookDialog;

public class FacebookShareActivity extends  Activity {

    private UiLifecycleHelper uiHelper;


    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        uiHelper = new UiLifecycleHelper(this, new Session.StatusCallback() {

            @Override
            public void call(Session session, SessionState state, Exception exception) {
                Log.i("Activity", "SessionState : " + state);
            }
        });
        uiHelper.onCreate(savedInstanceState);

        share();
    }

    private void share() {
        Intent intent = getIntent();

        if (FacebookDialog.canPresentShareDialog(getApplicationContext(),
                FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
            try {
                String name = intent.getStringExtra("NAME");
                String url = intent.getStringExtra("URL");
                String description = intent.getStringExtra("DESCRIPTION");

                // Fragment で発行するときは setFragment() を呼ぶ
                FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this).setDescription(description)
                        .setName(name).setLink(url).build();
                uiHelper.trackPendingDialogCall(shareDialog.present());
            } catch (FacebookException e) {
                Toast.makeText(this, "Facebook でエラーが発生しました。", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        uiHelper.onResume();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);
    }

    @Override
    public void onPause() {
        super.onPause();
        uiHelper.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        uiHelper.onDestroy();
    }

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

        uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {
            @Override
            public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {
                Log.e("Activity", String.format("Error: %s", error.toString()));
            }

            @Override
            public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {
                Log.i("Activity", "Success!");
                finish();
            }
        });
    }
}

⑧Androidmanifest.xmlの編集

AndroidManifest.xml
<!--権限の追加-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
AndroidManifest.xml
<!--<application ~ </application>内に追加-->
<meta-data
  android:name="com.facebook.sdk.ApplicationId"
  android:value="@string/facebook_id" />

<activity
  android:name="com.example.hogehoge.FacebookShareActivity"
  android:label="FacebookShareActivity" >
</activity>

⑨Strings.xmlの編集

Strings.xml
 <!--任意のidに変更してください-->
  <string name="facebook_id">000000000000000</string>

これで準備が整いました!
import等で正常にFacebookSDKがインポート出来ているか確認してください。

⑩Facebookでシェアする

あと少しです!
下記のようにonClick等にFacebookSDKにIntentを投げてあげればFacebookSDKが起動します。

MainActivity.java

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

import com.example.hogehoge.FacebookShareActivity;

public class MainActivity extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.btn_click).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent facebookIntent = new Intent(context, FacebookShareActivity.class);
                facebookIntent.putExtra("NAME", name);
                facebookIntent.putExtra("URL", url);
                facebookIntent.putExtra("DESCRIPTION", description);
                context.startActivity(facebookIntent);
            }
        });
    }
}

以上となります!
FacebookSDK…以外と入れるのに苦労しました…
この記事が少しでも参考になれば幸いで御座います!

23
24
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
24