由于最近在做一个联想的android app,涉及到twitter、facebook的分享功能,本来可以使用友推、shareSdk等一些集成的分享工具,简单也比较好用,但本着学习的态度还是直接使用原生的sdk直接开发。本文先说说facebook的。
第一步,到facebook开发者官网(https://developers.facebook.com/)创建个应用。国内的网络要想直接访问,你知道的,不行。这里介绍个工具,自由门 翻墙工具。

然后选择创建android的应用,填写应用名称。之后跳到如下页面:

点击"Getting started" 进入:

这是一个快速创建开发环境的指导文档,按照步骤走就行了,比如下载sdk、安装sdk,创建签名,安装模拟器等。如果你要是使用真机开发那得需要翻墙,在介绍个工具fqrouter ,使用时打开即可。
这里在介绍个生成签名的代码:
生成签名
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.example.myfacebook", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
//TextView tvmyName = (TextView) findViewById(R.id.KeyText);
String key = Base64.encodeBytes(md.digest());
//tvmyName.setText(key);
System.out.println("key========" + key);
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
将"com.example.myfacebook" 换成你的包名即可。
另外,有俩个东西你需要记录下来,后面的代码开发会用到:appId、appSecret。
第二步,如何安装sdk
其实,如果你看明白了上面的facebook的文档,这第二步是多余的。
将下载的sdk解压后,将FacebookSDK导入到eclipse中(如果你使用的是eclipse作为IDE),并将其设为引用库,如下:
之后是创建你的应用,将FacebookSDK引用到你的应用中:
这时可能会出现 android-support-v4.jar 版本不一致问题,没关系,将二者(FacebookSDK、myfacebook)弄成一致就行。ok,facebook SDK就安装完毕了。
下面就是如何使用sdk开发出我们想要的分享功能。
第三步,利用sdk开发分享。
AndroidManifest.xml 配置:
配置 strings.xml :
在strings.xml 中添加<string name="facebook_app_id"></string> 将你上面记住的appid设置其中。
写java代码,十分简单:
package com.example.myfacebook;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.example.util.Base64;
import com.facebook.UiLifecycleHelper;
import com.facebook.widget.FacebookDialog;
public class MainActivity extends Activity {
private UiLifecycleHelper uiHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
//创建UIhelper,之后的所有操作都是通过这个完成的
uiHelper = new UiLifecycleHelper(this, null);
uiHelper.onCreate(savedInstanceState);
// 生成签名
// try {
// PackageInfo info = getPackageManager().getPackageInfo(
// "com.example.myfacebook", PackageManager.GET_SIGNATURES);
// for (Signature signature : info.signatures) {
// MessageDigest md = MessageDigest.getInstance("SHA");
// md.update(signature.toByteArray());
//
// //TextView tvmyName = (TextView) findViewById(R.id.KeyText);
// String key = Base64.encodeBytes(md.digest());
// //tvmyName.setText(key);
// System.out.println("key========" + key);
//
// }
// } catch (NameNotFoundException e) {
//
// } catch (NoSuchAlgorithmException e) {
//
// }
}
/**
* 发送分享,
* @param view
*/
public void feed(View view){
FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this).setLink("http://www.google.com").setName("google的连接分享一下").build();
uiHelper.trackPendingDialogCall(shareDialog.present());
}
/**
* 重写onActivityResult,用于接收facebook的返回状态
*/
@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", "feed Success!");
}
});
}
@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();
}
}
完毕。这里有个完整的demo,需要的可以下载看看:demo
另外注意,测试过程中需要打开翻墙软件,以及安装facebook客户端(apk)。l
另外,本着共同学习的精神,大家觉得哪写的有问题,可以指点出来,共同进步。