最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享。
本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证。Umeng只在中国和美国有服务器,那也就是说别的国家的人如果用该产品登录和分享可不就成了摆设,这下苦逼了,然后就又重新推倒重来,索性用官方的facebook和twitter来实现登录和分享。具体步骤:
第一,因为中国政府各种坑比墙国外的服务器,导致facebook和twitter访问不了,那第一步就需要FQ,顺便FQ看看苍老师什么的,,,,我在网上找到了一个比较好的FQ软件:蓝灯(Lantern)
知名品牌海天雄Android核心板
【点击进入】
海天雄Android核心板,高端板卡,专业订制 免费申请样品试用,15年行业经验,
查 看
买西安手机号码,到"号码之家"!
【点击进入】
"号码之家",一级代理商,实体店面,信誉保障! 百万号码,谁与争锋,,到"号码之家"!
查 看
进入该网站,本人下载了mac版本。顺便做下载了对应的android apk,用法很简单。安装上之后开启就行了,这样你就能访问苍老师,天海翼了
第二步:既然咱们成功FQ了,那就开始咱们的步伐:
Facebook登录和分享
咱们先进入facebook的官网
然后注册账号。我使用邮箱注册的,注册完成之后就可以创建项目了
买西安手机号码,到"号码之家"!
【点击进入】
"号码之家",一级代理商,实体店面,信誉保障! 百万号码,谁与争锋,,到"号码之家"!
查 看
因为我已经创建过,所以这块就各位自己操作就行,
然后咱们要做的就是看文档。
进入此网站就可以看到facebook其实写的已经很清楚了:https://developers.facebook.com/docs/facebook-login/android
买西安手机号码,到"号码之家"!
【点击进入】
"号码之家",一级代理商,实体店面,信誉保障! 百万号码,谁与争锋,,到"号码之家"!
查 看
咱们在Android studio(本人用Android studio来写的程序,如果不太熟Android studio的可以自行在网上查查具体用法)中具体要怎么操作呢,如下
因为facebook官网下载的sdk后缀名是(.aar)的,不是咱们正常的jar包,所以我索性就在Android studio中找jar包,就是如上图所示。
然后只需要按照facebook文档中的步骤往下就可以了
-------------------------------------------------------------------facebook文档开始-----------------------------------------------------------
A. 下载 Facebook 应用
点击下方的按钮,下载 Facebook 应用。
下载 Android 版 Facebook
B. 创建开发者帐户
如果没有 Facebook 开发者帐户,请点击下面的按钮创建。您可以通过 Facebook 开发者帐户使用开发者工具和创建 Facebook 应用。
创建开发者帐户
C. 下载 Android SDK
下载最新的 Android 版 Facebook SDK。
下载 Android SDK
D. 获得 Facebook 应用编号、添加 SDK、以及向资料页添加密钥散列
点击下方的按钮,按照快速入门操作,也可以按照新手入门中的步骤操作。
Android 快速入门
E. 为应用启用单点登录
为应用启用单点登录的方法是:在 Facebook 开发者网站的我的应用中选择您的应用,然后选择应用的设置,并将单点登录设置为是。
F. 将FacebookActivity添加到AndroidManifest.xml中。
2.添加 Facebook“登录”按钮
将 Facebook 登录添加到应用的最简单方法是从 SDK 添加LoginButton。这是Button的自定义视图实施。您可以在应用中使用该按钮实施 Facebook 登录。
您可以结合LoginButton使用 SDK 提供的以下类:
- LoginManager— 使用请求的读取或发布权限开始登录流程。
- CallbackManager— 用于将调用按指定路径发送回 Facebook SDK 及您注册的回调。您应从开始活动或onActivityResult片段调用它。
- AccessToken:— 使用该类图谱 API 请求。它会显示用户编号以及用户接受和拒绝的权限。
- Profile— 该类包含关于已登录用户的基本信息。
LoginButton是一个界面元素,其中包含LoginManager具备的功能。因此,当用户点击此按钮时,就会以LoginManager中设置的权限开始登录。按钮随登录状态变化,并根据用户的身份验证状态显示正确文本。
要添加 Facebook 登录按钮,请先将其添加到布局 XML 文件中,并使用完整的类名称com.facebook.widget.LoginButton:
1
2
|
<com.facebook.login.widget.loginbutton android:id= "@+id/login_button" android:layout_gravity= "center_horizontal" android:layout_height= "wrap_content" android:layout_marginbottom= "30dp" android:layout_margintop= "30dp" android:layout_width= "wrap_content" >
</com.facebook.login.widget.loginbutton>
|
然后在界面中设置按钮:将按钮添加到片段中,并更新活动以使用片段。
您可以自定义Login button的属性,并在onCreateView()方法中注册一个回调。
您可以自定义的属性包括LoginBehavior、DefaultAudience、ToolTipPopup.Style以及LoginButton的相关权限。例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
@Override
public View onCreateView(
LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.splash, container, false );
loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions( "email" );
// If using in a fragment
loginButton.setFragment( this );
// Other app specific specialization
// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback<loginresult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
}</loginresult>
|
如果您在片段中使用LoginButton,需要通过调用setFragment来设置按钮上的片段,如图所示。
之后您需要调用FacebookSdk.sdkInitialize来初始化 SDK,然后调用CallbackManager.Factory.create来创建回调管理器,以便处理登录响应。以下是在片段中添加回调的示例:
1
2
3
4
5
6
7
8
9
10
|
public class MainActivity extends FragmentActivity {
CallbackManager callbackManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) view.findViewById(R.id.usersettings_fragment_login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback<loginresult>() { ... });
}</loginresult>
|
最后您应调用callbackManager.onActivityResult,以便通过callbackManager将登录结果传递至LoginManager。
3.注册回调
为了响应登录结果,您需要使用LoginManager或LoginButton注册回调。如果您使用LoginButton注册回调,就不需要在登录管理器中注册回调。
将回调添加到活动或片段的onCreate()方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
FacebookSdk.sdkInitialize( this .getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<loginresult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
}</loginresult>
|
如果登录成功,LoginResult参数将拥有新的AccessToken及最新授予或拒绝的权限。
您不需要registerCallback来保证登录成功,可以选择使用下述AccessTokenTracker类跟踪当前访问口令的更改。
之后在onActivityResult()中,将登录结果转发到在onCreate()中创建的callbackManager:
1
2
3
4
5
|
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data) {
super .onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
|
您集成到 FacebookSDK 登录或分享的所有活动和片段都应将onActivityResult转发给 callbackManager
-------------------------------------------------------------------facebook文档结束------------------------------------------------
如上的步骤就可以了吗?答案是NO,原因是因为我们还没有配置SDK。那我们就接着配置Facebook的SDK呗。
然后一定需要配置SDK,一定要配置Key Hashes。否则当您授权时就会出现错误。
所提供的网址不被应用程序配置所接纳
配置完之后我们就可以登录授权Facebook了。
然后开始看我写的代码:
在您的Application活着是第一个界面中添加如下代码,就实现了Facebook和Twitter的初始化。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp( this );
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with( this , new Twitter(authConfig));
try {
//facebook获取测试包的SHA秘钥
PackageInfo info = getPackageManager().getPackageInfo(
"com.dora.feed" ,
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance( "SHA" );
md.update(signature.toByteArray());
SysoutUtil.out( "KeyHash:" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
|
然后我们就需要添加登录代码块了,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
/**
* FaceBook登录
*/
public void LoginFaceBook(){
List<string> permissions = Arrays.asList( "public_profile" , "user_friends" , "user_status" );
LoginManager.getInstance().logInWithReadPermissions(activity, permissions);
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<loginresult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
SysoutUtil.out( "logingResult:" + loginResult);
AccessToken accessToken = loginResult.getAccessToken();
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
//获取登录成功之后的用户详细信息
SysoutUtil.out( "JSONObject:" + object);
String facebook_id = object.optString( "id" );
String facebook_name = object.optString( "name" );
String picture = object.optString( "picture" );
String imageUrl = null ;
try {
JSONObject jsonObject = new JSONObject(picture);
String data = jsonObject.getString( "data" );
imageUrl = new JSONObject(data).getString( "url" );
} catch (JSONException e) {
e.printStackTrace();
}
}
});
//包入你想要得到的資料 送出request
Bundle parameters = new Bundle();
parameters.putString( "fields" , DEFAULT_REQUEST_VALUE);
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
SysoutUtil.out( "onCancel:" );
}
@Override
public void onError(FacebookException exception) {
// App code
SysoutUtil.out( "onError:" );
}
});
}
</loginresult></string>
|
在点击Facebook登录按钮的地方调用此方法就可以实现登录了,并且能获取到您需要的用户信息
接着我们需要回调,如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data) {
super .onActivityResult(requestCode, resultCode, data);
if (callbackManager != null ){ //facebook的回调
callbackManager.onActivityResult(requestCode, resultCode, data);
}
if (loginButton != null ){ //twitter的回调
loginButton.onActivityResult(requestCode, resultCode, data);
}
SysoutUtil.out( "data:" + data);
}
|
到此facebook的登录就完成了!!!!!
然后我们再看分享的具体代码实现,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/**
* 分享到facebook
*/
private CallbackManager callBackManager;
public void shareFaceBook() {
Bitmap image = BitmapFactory.decodeResource(getResources(), com.dora.feed.R.drawable.app_logo);
callBackManager = CallbackManager.Factory.create();
new FaceBookShareUtils( this ,callBackManager,facebookCallback)
.share(getResources().getString(R.string.app_name),
image,
getResources().getString(R.string.share_tips_tips));
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
package com.dora.feed.utils;
/**
* Created by wangkai on 16/9/3.
*/
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import com.dora.feed.net.Api;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.share.ShareApi;
import com.facebook.share.model.ShareHashtag;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.model.SharePhoto;
import com.facebook.share.model.SharePhotoContent;
import com.facebook.share.widget.ShareDialog;
/**
* facebook分享工具类
* Created by Song on 2016/7/5.
* Email:[email protected]
*/
public class FaceBookShareUtils {
private Activity mActivity ;
private ShareDialog shareDialog;
private CallbackManager callBackManager;
public static final int SHARE_REQUEST_CODE = 10010 ;
private ShareLinkContent.Builder shareLinkContentBuilder;
public FaceBookShareUtils(Activity activity, CallbackManager callBackManager, FacebookCallback facebookCallback) {
this .mActivity = activity ;
this .callBackManager = callBackManager;
shareDialog = new ShareDialog(mActivity);
//注册分享状态监听回调接口
shareDialog.registerCallback(callBackManager, facebookCallback, FaceBookShareUtils.SHARE_REQUEST_CODE);
shareLinkContentBuilder = new ShareLinkContent.Builder();
}
/**
* 分享
*/
public void share(String contentTitle,String imageUrl,String desc) {
shareLinkContentBuilder.setContentTitle(contentTitle)
.setImageUrl(Uri.parse(imageUrl))
.setContentDescription(desc)
.setContentUrl(Uri.parse(Api.SHARE_LEFT_URL));
ShareLinkContent shareLinkContent = shareLinkContentBuilder.build();
if (shareDialog.canShow(ShareLinkContent. class )) {
shareDialog.show(mActivity,shareLinkContent);
}
}
/**
* 分享
*/
public void share(String contentTitle, Bitmap imageUrl,String desc) {
// SharePhoto photo = new SharePhoto.Builder()
// .setBitmap(imageUrl)
// .setCaption(desc)
// .build();
//
// SharePhotoContent content = new SharePhotoContent.Builder()
// .addPhoto(photo)
//// .setContentUrl(Uri.parse(Api.SHARE_LEFT_URL))
// .build();
//
// ShareApi.share(content, null);
// if(shareDialog.canShow(SharePhotoContent.class)) {
// shareDialog.show(mActivity,content);
// }
if (shareDialog.canShow(ShareLinkContent. class )) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle(contentTitle)
.setContentDescription(desc)
.setContentUrl(Uri.parse(Api.SHARE_LEFT_URL))
// .setImageUrl(Uri.parse("android.resource://de.ginkoboy.flashcards/" + com.dora.feed.R.drawable.app_logo))
.setImageUrl(Uri.parse( "http://bagpiper-andy.de/bilder/dudelsack%20app.png" ))
.build();
shareDialog.show(linkContent);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/**
* facebook分享状态回调
*/
private FacebookCallback facebookCallback = new FacebookCallback() {
@Override
public void onSuccess(Object o) {
SysoutUtil.out( "onSuccess" + o.toString());
// Message msg = Message.obtain();
// msg.what = SHARE_COMPLETE;
// mHandler.sendMessage(msg);
}
@Override
public void onCancel() {
SysoutUtil.out( "onCancel" );
// Message msg = Message.obtain();
// msg.what = SHARE_CANCEL;
// mHandler.sendMessage(msg);
}
@Override
public void onError(FacebookException error) {
SysoutUtil.out( "onError" );
ToastUtils.showToast( "share error--" + error.getMessage());
// Message msg = Message.obtain();
// msg.what = SHARE_ERROR;
// mHandler.sendMessage(msg);
}
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data) {
if (PromptUtils.isProgressDialogShowing()){
PromptUtils.dismissProgressDialog();
}
if (FaceBookShareUtils.SHARE_REQUEST_CODE == requestCode) {
callBackManager.onActivityResult(requestCode,resultCode,data);
} else if (requestCode == TWEET_COMPOSER_REQUEST_CODE){
SysoutUtil.out( "onActivityResult" );
ToastUtils.showToast( "share success" );
}
// callBackManager.onActivityResult(requestCode,resultCode,data);
}
|
好了,按照以上步骤,您的facebook登录和分享就可以成功了,休息下咱们再开始写twitter的登录和注册。。。。。。。。。。。。。
Twitter登录和分享
Twitter本人研究了三天,看各种文档,twitter的源码,最后才实现了
首先还是看文档:
Twitter的文档很不好找,https://www.fabric.io/kits/android/twitterkit/install
在文档中可以很清楚的看到,应该如何配置Fabric
看我的代码具体实现:
首先配置项目的build.gradle(也就是最外边的一个gradle)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
maven { url ‘https://maven.fabric.io/public‘ }
}
dependencies {
classpath ‘com.android.tools.build:gradle:1.5.0‘
classpath ‘io.fabric.tools:gradle:1.+‘
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
|
其次是配置您的应用的 module的build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
apply plugin: ‘com.android.application‘
// This does not break the build when Android Studio is missing the JRebel for Android plugin.
apply plugin: ‘io.fabric‘
repositories {
maven { url ‘https://maven.fabric.io/public‘ }
}
android {
compileSdkVersion 23
buildToolsVersion ‘23.0.1‘
defaultConfig {
applicationId "com.
aaa.feed"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile( ‘proguard-android.txt‘ ), ‘proguard-rules.pro‘
}
}
// productFlavors.all {
// flavor -> flavor.manifestPlaceholders = [CHANEL_ID_VALUE: name]
// }
lintOptions {
abortOnError false
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(include: [ ‘*.jar‘ ], dir: ‘libs‘ )
compile project( ‘:famlinkFrame‘ )
compile project( ‘:PushSDK‘ )
compile ‘tv.danmaku.ijk.media:ijkplayer-java:0.5.1‘
compile( ‘com.twitter.sdk.android:twitter:[email protected]‘ ) {
transitive = true ;
}
compile( ‘com.twitter.sdk.android:tweet-composer:[email protected]‘ ) {
transitive = true ;
}
}
|
然后重新clear您的Android studio,这样Fabric就可以自动下载twitter的jar包了。
下载完成之后咱们要做的就是开始写代码:
Twitter的初始化在前边的代码中已经有体现。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/**
* Twitter登录
*/
private void LoginTwitter(){
loginButton.setCallback( new Callback<twittersession>() {
@Override
public void success(Result<twittersession> result) {
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
Call<user> call = twitterApiClient.getAccountService().verifyCredentials( false , false );
call.enqueue( new Callback<user>() {
@Override
public void success(Result<user> result) {
String dataResult = "Name: " + result.data.name +
"\nScreenName: " + result.data.screenName +
"\nProfileImage: " + result.data.profileImageUrl +
"\nBackgroungUrl" + result.data.profileBannerUrl +
"\nCreated at" + result.data.createdAt +
"\nDescription" + result.data.description +
"\nEmail" + result.data.email+
"\nFriends Count" + result.data.friendsCount;
System.out.println(result.data.profileImageUrl);
String twitter_id = String.valueOf(result.data.id);
String twitter_name = result.data.name;
CacheUtils.getInstance().putString(LocalContents.ACCESS_TOKEN, "twitter" +twitter_id);
String[] str = {twitter_name, result.data.profileImageUrl};
CacheUtils.getInstance().putString(LocalContents.LOGIN_USER_NAME, str[ 0 ]);
CacheUtils.getInstance().putString(LocalContents.LOGIN_USER_HEAD, str[ 1 ]);
DataChangeNotification.getInstance().notifyDataChanged(IssueKey.CLOSE_LOGIN_ACTIVITY);
DataChangeNotification.getInstance().notifyDataChanged(IssueKey.UPDATEHEAD, str);
// TwitterAuthToken token = session.getAuthToken();
}
@Override
public void failure(TwitterException exception) {
System.out.println(exception.getMessage());
}
});
}
@Override
public void failure(TwitterException exception) {
SysoutUtil.out( "TwitterKit" + "Login with Twitter failure" + exception);
}
});</user></user></user></twittersession></twittersession>
|
到此处登录就完成了,并且您的头像以及各种信息都能取到,本人逛了很多国外网站都说通过 接口的形式来重新获取用户信息,然后twitter官方也建议这么做,但是在我用的时候接口一直返回“215”,本人试了不下上百次,把该接口各种配置,但是怎么都返回215,215的大致意思是我需要重新验证身份,那我就想不通了,我再登录之前肯定验证身份了,不知道是为啥,最后我实在崩溃了;
我就想既然这种方法实现不了,那我就换种思路,程序员最重要的一点就是要能看代码,那我索性就看twitter jar包的源码了,果然看源码还是很有用的,最后发现twitter中的用户信息存储在User类下,然后我只需要获取到User的数据不就行了,然后就是一步一步的开始看源码,最后终于找到解决方案了如下图,
到此为止,我们的登录就算完整了,用户的所有信息想怎么取就怎么取。
最后我们在做分享
分享很简单,我就不做解释了,直接将本方法拷入代码,调用就可以:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/**
* 分享到Twitter
* @throws MalformedURLException
*/
private void shareTweet() throws MalformedURLException {
// final long tweetId = 771558172175716352L;
// TweetComposer.Builder builder = new TweetComposer.Builder(this)
// .text(getResources().getString(R.string.share_tips_tips))
// .url(new URL(Api.SHARE_LEFT_URL));
// Intent intent = builder.createIntent();
// builder.show();
// startActivityForResult(intent, 1000);
Intent intent = null ;
try {
intent = new TweetComposer.Builder( this )
.text( "标题" )
.url( new URL( "您的URL" ))
.image(getHeaderIconUri())
.createIntent();
} catch (MalformedURLException e) {
e.printStackTrace();
}
startActivityForResult(intent, TWEET_COMPOSER_REQUEST_CODE);
}
public Uri getHeaderIconUri(){ //要上传的图片
Resources r = getApplicationContext().getResources();
return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"
+ r.getResourcePackageName(com.dora.feed.R.drawable.app_logo) + "/"
+ r.getResourceTypeName(com.dora.feed.R.drawable.app_logo) + "/"
+ r.getResourceEntryName(com.dora.feed.R.drawable.app_logo));
}
|
终于搞定,根据以上方式,facebook登录,分享 twitter登录和分享完美实现。本人能力有限,写的比较粗糙,要是有问题请留言,本人再优化
时间: 2024-11-10 01:24:31