#はじめに
Android開発でFacebookSDKを使う機会があったので、まとめました。
結構ハマっていろいろな記事を参考にさせて頂きました!!
基本的に下記をそのまま(コピペ)やれば動くようになっています!
それでは早速やってみましょう!
#使用環境
・AndroidStudio v1.1.0
・FacebookSDK v3
#①FacebookSDKのダウンロード
下記URLからFacebookSDKをダウンロード
https://developers.facebook.com/docs/android/downloads
今回はFacebookSDK 3.x.xをダウンロードします。
#②FacebookSDKをインポート
下図のようにappと同じ階層にlibrariesディレクトリを作成し、facebookディレクトリを追加します。
#③settings.gradleを編集
include ':app', ':libraries:facebook'
#④build.gradleを編集
下記図のようにbuild.gradleを編集します。
compile project(':libraries:facebook')
#⑤gradle.propertiesを編集
下記図のように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))は消してください)
- classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
+ ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
+ classpath += files(ext.androidJar)
```
#⑦FacebookShareActivityの作成
下記をコピペして任意の場所に設置してください!(packageは自分の環境にあわせてください)
```java: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の編集
```xml:AndroidManifest.xml
<!--権限の追加-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```
```xml: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の編集
```xml:Strings.xml
<!--任意のidに変更してください-->
<string name="facebook_id">000000000000000</string>
```
これで準備が整いました!
import等で正常にFacebookSDKがインポート出来ているか確認してください。
#⑩Facebookでシェアする
あと少しです!
下記のようにonClick等にFacebookSDKにIntentを投げてあげればFacebookSDKが起動します。
```java: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…以外と入れるのに苦労しました…
この記事が少しでも参考になれば幸いで御座います!