您的位置:首页 > 移动开发 > 微信开发

不接入sdk分享到第三方平台

2016-07-27 23:31 495 查看
如果仅仅为了一个分享功能就接入第三方的sdk的话,会增加很多apk的体积。所以我们可以自己实现一键分享到第三方。

这里以分享文字图片到微信以及微信朋友圈为例。

其它的比如新浪微博,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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息