由于最近在做一个联想的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
另外,本着共同学习的精神,大家觉得哪写的有问题,可以指点出来,共同进步。