记录一下代码,以后自己可以抄。。我抄我自己=。=

SDK的接入看之前的博客。所以话不多少,直接上代码(记得分享一定要安装原生app(FB和twitter),不然只通过网页分享无法发图片。),初始化都在onCreate()中

一、截屏(android 5.0以上)

定义:

CallbackManager callbackManager;
ShareDialog shareDialog;
GameRequestDialog requestDialog;
ImageReader mImageReader;

(1)获取截屏权限

startActivityForResult(((MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE)).createScreenCaptureIntent(),1);

(2)截屏回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("Facebook1", "onActivityResult");
AndroidLog("requestCode:"+String.valueOf(requestCode)+"resultCode"+String.valueOf(resultCode));
super.onActivityResult(requestCode, resultCode, data); parseData(data); }
    private void parseData(Intent data){
        MediaProjection mMediaProjection = ((MediaProjectionManager)getSystemService(Context.MEDIA_PROJECTION_SERVICE)).getMediaProjection(Activity.RESULT_OK,data);
if (mMediaProjection == null)
return;
AndroidLog("截屏初始化"); mImageReader = ImageReader.newInstance(
getScreenWidth(this),
getScreenHeight(this),
PixelFormat.RGBA_8888,1);
// AndroidLog(mImageReader.toString());
VirtualDisplay mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror",
getScreenWidth(this),
getScreenHeight(this),
Resources.getSystem().getDisplayMetrics().densityDpi,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
mImageReader.getSurface(), null, null);
}

public static int getScreenWidth(Context context)
{
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.widthPixels;
}
public static int getScreenHeight(Context context)
{
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.heightPixels;
}
二、facebook分享和邀请

(1)初始化facebook

/**
* facebook配置, 在oncreate()方法中调用
*/
private void initFacebook() {
//抽取成员变量
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);//分享
requestDialog = new GameRequestDialog(this);//邀请好友 // this part is optional
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { @Override
public void onSuccess(Sharer.Result result) {
//分享成功的回调,在这里做一些自己的逻辑处理
} @Override
public void onCancel() { } @Override
public void onError(FacebookException error) {
AndroidLog(error.toString());
}
}); requestDialog.registerCallback(callbackManager,
new FacebookCallback<GameRequestDialog.Result>() {
public void onSuccess(GameRequestDialog.Result result) {
String id = result.getRequestId();
}
public void onCancel() {}
public void onError(FacebookException error) {}
}
); } (2)分享
/**
* 这是一个按钮的点击事件,分享到facebook
* 若未安装facebook客户端,则会跳转到浏览器
*
* @param
*/
public void shareToFacebook() {
//这里分享一个链接,更多分享配置参考官方介绍:https://developers.facebook.com/docs/sharing/android
AndroidLog("点击分享按钮");
Image image = mImageReader.acquireLatestImage();
int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap mBitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(buffer);
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, width, height);
image.close();
//AndroidLog(mBitmap.toString());
//上一步获得位图后直接分享,不保存在本地。
SharePhoto photo = new SharePhoto.Builder()
.setBitmap(mBitmap)
.build();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(photo)
.build();

(3)邀请

private void onClickRequestButton() {
GameRequestContent content = new GameRequestContent.Builder()
.setMessage("Come play this Game !! This test facebook sdk")
.build();
requestDialog.show(content);
}

三、Twitter分享

(1)初始化

Twitter.initialize(this);

(2)分享
public void shareToTwitter() {
Image image = mImageReader.acquireLatestImage();
    int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap mBitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(buffer);
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, width, height);
image.close(); //套路还是一样的,只是twitter分享图片需要填uri
ContentValues values = new ContentValues();
//values.put(MediaStore.Images.Media.insertImage() , "jinta");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI ,values);
AndroidLog("URI路径 :"+uri.toString());
OutputStream os = null;
try
{
// 获取刚插入的数据的Uri对应的输出流
os = getContentResolver().openOutputStream(uri);
// 将bitmap图片保存到Uri对应的数据节点中
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
os.close();
}
catch (IOException e) {
e.printStackTrace();
} TweetComposer.Builder builder = new TweetComposer.Builder(this)
.text("Can you help complete all the orders and save the factory?")
.image(uri);//using content://.... FileProvider.getUriForFile(this,APPID.file_provider,new File("/path/to/image"));
builder.show();
}

facebook和twitter的截图分享的更多相关文章

  1. Android Facebook和Twitter登录和分享完整版

    最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享. 本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证.Umeng只在中国和美国有服务器,那也 ...

  2. 使用facebook和twitter进行分享经验总结

    凤凰涅槃,浴火重生. 在传说当中,凤凰是人世间幸福的使者,每五百年,它就要背负着积累于在人间的所有痛苦和恩怨情仇,投身于熊熊烈火中自焚,以生命和美丽的终结换取人世的祥和与幸福.同样在肉体经受了巨大的痛 ...

  3. Facebook等使用苹果源生分享

         1.Facebook官方的SDK分享               2.ShareSDK,第三方集成的分享方式      3.网页分享方式分享      4.IOS6之后,苹果自己集成了对于F ...

  4. Android Facebook和Twitter分享

    1. 背景 在年初的时候,公司的项目有个新的需求,在英文版的应用中加入Facebook和Twitter分享功能. 2. 完成情况 由于这个项目比较急,所以开发这个功能从预研到接入总共耗时一周.后来,在 ...

  5. 移动端折腾国外分享(facebook、twitter、linkedin)

    一.前言 国内做HTML5页面,关注最多就是微信分享了,之前也写过关于微信分享的文章,可以点击查看:分享相关文章 再者,就是国内的其它分享,比如常用的新浪微博.腾讯微博.QQ空间等等,最方便的就是直接 ...

  6. twitter、facebook、pinterest、linkedin 分享代码

    twitter.facebook.pinterest.linkedin 分享代码 http://www.cnblogs.com/adstor-Lin/p/3994449.html

  7. web网页动态分享facebook和twitter

    介绍 facebook分享 http://www.facebook.com/sharer.php?t=${text}u=encodeURIComponent('静态html') twitter分享 h ...

  8. 分享前端Facebook及Twitter第三方登录

    最近公司要求做海外的第三方登录:目前只做了Facebook和Twitter;国内百度到的信息太少VPN FQ百度+Google了很久终于弄好了.但是做第三方登录基本上都有个特点就是引入必须的js,设置 ...

  9. 为什么中国出不了facebook和Twitter?

    我们坐拥全球最大基数的网民,我们拥有让人骄傲的四大发明,我们有有流传全世界的孙子兵法,可是在互联网时代,我们却落后了.互联网可以说是江山人才辈辈出,各领风骚三两年. 让我们来简单地回顾一下近几年的互联 ...

随机推荐

  1. python3 装饰器全解

    本章结构: 1.理解装饰器的前提准备 2.装饰器:无参/带参的被装饰函数,无参/带参的装饰函数 3.装饰器的缺点 4.python3的内置装饰器 5.本文参考 理解装饰器的前提:1.所有东西都是对象( ...

  2. PHP常用符号和函数

    (转)最近在写PHP程序的时候发现了一些特殊的PHP符号,例如连续小于符号,三个小于符号,eot,eod,echo示例,print示例等,突然间 发现用这么久的PHP了,竟然连PHP的基本符号都没有认 ...

  3. 常见dos命令(win7下测试)

    按下组合键:win + R ,输入cmd进入Dos. 1.  cls :清屏命令. 2.  ver :查看系统版本号命令,winver弹出一个窗口显示更详细的系统版本号. 3.  dir  无参数 : ...

  4. swift的enum模式—对Alamofire入口的解析--数据结构与操作结合的模式

    swift的枚举模式是数据结构与操作结合的模式 1.enum本质是一个类型,可以定义变量: 它定义的变量可以用到其它变量用的的任何地方:函数的输入.输出.成员变量.临时变量等: 这个变量还可以带有附加 ...

  5. rss工具及资源

    使用的工具:reeder 资源: https://calayer.com https://github.com/SwiftOldDriver/iOS-Weekly/releases https://w ...

  6. 1040. [ZJOI2008]骑士【树形DP】

    Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战 ...

  7. Python之Bottle框架使用

    本文主要包含的内容是Bottle框架介绍和安装使用. 一.Bottle框架介绍 Bottle是一个快速小巧,轻量级的 WSGI 微型 web 框架.同时Bottle也是一个简单高效的遵循WSGI的微型 ...

  8. 谈谈我的js学习过程(二)——“Hello World!”

    在<谈谈我的js学习过程(一)>中,我简单聊了一下我认为的javascript的学习方法,接下来我们可以尝试来写一个最简单的js代码. "Hello World!"对于 ...

  9. 原型和原型对象(__proto__和prototype)转

    看了之后我总算对原型继承有了更深刻的理解,做爱分享的姑娘,原文链接:理解Javascript 原型 我(个人)不喜欢的,就是讲原型时上来就拿类做比较的,所以我不会这样讲.不过我的确讲过构造器函数,在这 ...

  10. 探索photo-sphere-viewer全景插件

    此插件是一位外国人写的,官网API地址:https://photo-sphere-viewer.js.org/#methods 我只是记录下我在使用此插件时用到的方法和相关属性,以防以后忘记 1.按要 ...