不接入sdk分享到第三方平台
2016-07-27 23:31
495 查看
如果仅仅为了一个分享功能就接入第三方的sdk的话,会增加很多apk的体积。所以我们可以自己实现一键分享到第三方。
这里以分享文字图片到微信以及微信朋友圈为例。
其它的比如新浪微博,qq好友,qq空间的分享也是一样的。
先看效果:
分享图片:
指定分享到朋友圈
主代码文件:
MainActivity.java:
//如果指定分享到某一平台,就直接启动。
startActivity(intent);
//如果没有指定分享到某个平台可以使用系统提供的选择器,第二个参数是选择器的title
//
startActivity(Intent.createChooser(intent, “Share images to..”));
代码下载:
http://dl.download.csdn.net/down11/20160727/29d51da013cc4a01e51c357ece35e4a5.zip?response-content-disposition=attachment%3Bfilename%3D%22ShareTest.zip%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1469637042&Signature=ZBa1SxzAlFtesxqw7Jtk2U7vit0%3D
这里以分享文字图片到微信以及微信朋友圈为例。
其它的比如新浪微博,qq好友,qq空间的分享也是一样的。
先看效果:
关键代码:
分享文字://指定Action intent.setAction(Intent.ACTION_SEND); //指定分享类型 intent.setType("text/plain"); //设置分享的标题和文字 String title="this is test!"; String desc="this is content!"; intent.putExtra(Intent.EXTRA_TEXT, desc); if(title!=null){ intent.putExtra(Intent.EXTRA_SUBJECT, title); } //启动分享intent startActivity(intent);
分享图片:
intent.setAction(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, img_uri);
注意:如果是分享图片的话就必须使用sd卡上的图片的uri.
指定分享到微信:ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI"); intent.setComponent(comp);
指定分享到朋友圈
ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI"); intent.setComponent(comp);
主代码文件:
MainActivity.java:
package com.example.sharetest; import android.content.ComponentName; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private Button wenzi; private Button img; private Button imgs_to_friends; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wenzi = (Button) findViewById(R.id.wenzi); img = (Button) findViewById(R.id.img); imgs_to_friends = (Button) findViewById(R.id.img_to_friends); //从sd卡获取图片Uri String s = "file://" + Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/a.jpg"; String s2 = "file://" + Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/b.jpg"; Log.i("LHD", "" + "file://" + Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/a.jpg"); Log.i("LHD", "" + s); final Uri img_uri = Uri.parse(s); final Uri img_uri2 = Uri.parse(s2); //分享文字到微信好友 wenzi.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Share_text("分享到微信", "小炮的女朋友很漂亮"); } }); //分享图片到微信好友 img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //分享一张图片 // Share_img(img_uri); //分享多张图片 Share_imgs_friends(0, img_uri, img_uri2); } }); //分享图片到微信朋友圈 imgs_to_friends.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Share_imgs_friends(1, img_uri, img_uri2); } }); } /** * 分享文字到微信好友 * * @param wechat_title * @param wechat_desc */ private void Share_text(String wechat_title, String wechat_desc) { Intent intent = new Intent(); //如果指定这个包就会直接启动微信 ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI"); intent.setComponent(comp); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, wechat_desc); if (wechat_title != null) { intent.putExtra(Intent.EXTRA_SUBJECT, wechat_title); } startActivity(intent); } /** * 分享一张图片到微信好友 参数是图片的uri,图片必须是SD卡的图片 * @param img_uri */ private void Share_img(Uri img_uri) { Intent intent = new Intent(); //指定分享到微信 ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI"); intent.setComponent(comp); //分享到whatsapp // ComponentName comp = new ComponentName("com.whatsapp", "com.whatsapp.ContactPicker"); // intent.setComponent(comp); intent.setAction(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, img_uri); //如果指定分享到某一平台,就直接启动。 startActivity(intent); //如果没有指定分享到某个平台可以使用系统提供的选择器,第二个参数是选择器的title // startActivity(Intent.createChooser(intent, "Share images to..")); } /** * 分享多张图片到朋友圈,注意这个Uri参数必须是从sdk获得的图片,也就是说 * 分享的图片必须是SDK里取出的图片,而不能是资源文件里的图片。 * */ private void Share_imgs_friends(int i, Uri... list) { ArrayList<Uri> imageUris = new ArrayList<Uri>(); for (Uri u : list) { imageUris.add(u); } Intent shareIntent = new Intent(); //i==1,表示分享到朋友圈 if (i == 1) { ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI"); shareIntent.setComponent(comp); } shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE); shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "Share images to..")); } }
注意:
如果我们指定要分享到微信或者其它的第三方平台就://如果指定分享到某一平台,就直接启动。
startActivity(intent);
//如果没有指定分享到某个平台可以使用系统提供的选择器,第二个参数是选择器的title
//
startActivity(Intent.createChooser(intent, “Share images to..”));
代码下载:
http://dl.download.csdn.net/down11/20160727/29d51da013cc4a01e51c357ece35e4a5.zip?response-content-disposition=attachment%3Bfilename%3D%22ShareTest.zip%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1469637042&Signature=ZBa1SxzAlFtesxqw7Jtk2U7vit0%3D
相关文章推荐
- 社交巨头三国杀:微信、WhatsApp、Line到底有啥区别?
- 微信悄悄升级群聊功能:个人微信营销号的福音
- 突击部队拼多多
- 我是运营,我没有假期
- 如何做到日消息量100万的微信公众号?
- 论微信取消推送功能的可能性(原创)
- Android ADT 23.0.0无法更新到23.0.2问题解决方案
- 微信的成功,靠的是QQ导流吗?
- 「Linux 中国」2018 微信文章排行榜
- 马化腾亲自“站台” 企业微信和个人微信互通能带来什么?
- 一个微信群的兴亡
- SDKMAN:轻松管理多个软件开发套件 (SDK) 的命令行工具
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片