本文实例为大家分享了android实现分享功能的具体代码,供大家参考,具体内容如下
因为公司的需求,最近一直在做分享这一块的功能。大概有这样几种思路:
2.使用第三方的sdk,比如ShareSdk或者友盟;
3.去对应的平台下载jar包,参考官方设计文档写出自己的分享demo,但这种一般也比较复杂,尤其搞不懂qq和微信一家公司的,为什么微信那么麻烦。
不废话了,直接上代码:
一. 新建ShareUtil.java类
import java.io.File; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.net.Uri; import android.text.TextUtils; import android.widget.Toast; public class ShareUtil { private Context context; public ShareUtil(Context context) { this.context = context; } public static final String WEIXIN_PACKAGE_NAME = ""; public static final String QQ_PACKAGE_NAME = ""; // public static final String ; /** * 分享文字 * @param packageName * @param content * @param title * @param subject */ public void shareText(String packageName,String className,String content,String title,String subject){ Intent intent =new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); // if(null != className && null != packageName && !TextUtils.isEmpty(className) && !TextUtils.isEmpty(packageName)){ // // }else { // if(null != packageName && !TextUtils.isEmpty(packageName)){ // intent.setPackage(packageName); // } // } if(stringCheck(className) && stringCheck(packageName)){ ComponentName componentName = new ComponentName(packageName, className); intent.setComponent(componentName); }else if(stringCheck(packageName)){ intent.setPackage(packageName); } intent.putExtra(Intent.EXTRA_TEXT, content); if(null != title && !TextUtils.isEmpty(title)){ intent.putExtra(Intent.EXTRA_TITLE, title); } if(null != subject && !TextUtils.isEmpty(subject)){ intent.putExtra(Intent.EXTRA_SUBJECT, subject); } intent.putExtra(Intent.EXTRA_TITLE, title); Intent chooserIntent = Intent.createChooser(intent, "分享到:"); context.startActivity(chooserIntent); } /** * 分享网页 */ public void shareUrl(String packageName,String className,String content,String title,String subject){ Intent intent =new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); // if(null != className && null != packageName && !TextUtils.isEmpty(className) && !TextUtils.isEmpty(packageName)){ // // }else { // if(null != packageName && !TextUtils.isEmpty(packageName)){ // intent.setPackage(packageName); // } // } if(stringCheck(className) && stringCheck(packageName)){ ComponentName componentName = new ComponentName(packageName, className); intent.setComponent(componentName); }else if(stringCheck(packageName)){ intent.setPackage(packageName); } intent.putExtra(Intent.EXTRA_TEXT, content); if(null != title && !TextUtils.isEmpty(title)){ intent.putExtra(Intent.EXTRA_TITLE, title); } if(null != subject && !TextUtils.isEmpty(subject)){ intent.putExtra(Intent.EXTRA_SUBJECT, subject); } intent.putExtra(Intent.EXTRA_TITLE, title); Intent chooserIntent = Intent.createChooser(intent, "分享到:"); context.startActivity(chooserIntent); } /** * 分享图片 */ public void shareImg(String packageName,String className,File file){ if(file.exists()){ Uri uri = Uri.fromFile(file); Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("image/*"); if(stringCheck(packageName) && stringCheck(className)){ intent.setComponent(new ComponentName(packageName, className)); }else if (stringCheck(packageName)) { intent.setPackage(packageName); } intent.putExtra(Intent.EXTRA_STREAM, uri); Intent chooserIntent = Intent.createChooser(intent, "分享到:"); context.startActivity(chooserIntent); }else { Toast.makeText(context, "文件不存在", 1000).show(); } } /** * 分享音乐 */ public void shareAudio(String packageName,String className,File file){ if(file.exists()){ Uri uri = Uri.fromFile(file); Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("audio/*"); if(stringCheck(packageName) && stringCheck(className)){ intent.setComponent(new ComponentName(packageName, className)); }else if (stringCheck(packageName)) { intent.setPackage(packageName); } intent.putExtra(Intent.EXTRA_STREAM, uri); Intent chooserIntent = Intent.createChooser(intent, "分享到:"); context.startActivity(chooserIntent); }else { Toast.makeText(context, "文件不存在", 1000).show(); } } /** * 分享视频 */ public void shareVideo(String packageName,String className,File file){ setIntent("video/*", packageName, className, file); } public void setIntent(String type,String packageName,String className,File file){ if(file.exists()){ Uri uri = Uri.fromFile(file); Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType(type); if(stringCheck(packageName) && stringCheck(className)){ intent.setComponent(new ComponentName(packageName, className)); }else if (stringCheck(packageName)) { intent.setPackage(packageName); } intent.putExtra(Intent.EXTRA_STREAM, uri); Intent chooserIntent = Intent.createChooser(intent, "分享到:"); context.startActivity(chooserIntent); }else { Toast.makeText(context, "文件不存在", 1000).show(); } } /** * 分享多张图片和文字至朋友圈 * @param title * @param packageName * @param className * @param file 图片文件 */ public void shareImgToWXCircle(String title,String packageName,String className, File file){ if(file.exists()){ Uri uri = Uri.fromFile(file); Intent intent = new Intent(); ComponentName comp = new ComponentName(packageName, className); intent.setComponent(comp); intent.setAction(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, uri); intent.putExtra("Kdescription", title); context.startActivity(intent); }else{ Toast.makeText(context, "文件不存在", Toast.LENGTH_LONG).show(); } } /** * 是否安装分享app * @param packageName */ public boolean checkInstall(String packageName){ try { context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); return true; } catch (NameNotFoundException e) { e.printStackTrace(); Toast.makeText(context, "请先安装应用app", 1500).show(); return false; } } /** * 跳转官方安装网址 */ public void toInstallWebView(String url){ Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); context.startActivity(intent); } public static boolean stringCheck(String str){ if(null != str && !TextUtils.isEmpty(str)){ return true; }else { return false; } } }
二. MainActivity.java类
import java.io.File;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
Button btnQQ;
Button btnWX;
Button btnMore;
Button btnWxFriendText;
Button btnQQFriendText;
Button btnWxFriendImg;
Button btnQQFriendImg;
Button btnWxFriendAudio;
Button btnQQFriendAduio;
Button btnWxFriendVideo;
Button btnQQFriendVideo;
ShareUtil shareUtil;
private Button btn_wxCircle_img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnQQ = (Button) findViewById(R.id.btn_qq);
btnWX = (Button) findViewById(R.id.btn_wx);
btnMore = (Button) findViewById(R.id.btn_more);
btnWxFriendText = (Button) findViewById(R.id.btn_wxFriend);
btnQQFriendText = (Button) findViewById(R.id.btn_qqFriend);
btnWxFriendImg = (Button) findViewById(R.id.btn_wxFriend_img);
btnQQFriendImg = (Button) findViewById(R.id.btn_qqFriend_img);
btnWxFriendAudio = (Button) findViewById(R.id.btn_wxFriend_audio);
btnQQFriendAduio = (Button) findViewById(R.id.btn_qqFriend_audio);
btnWxFriendVideo = (Button) findViewById(R.id.btn_wxFriend_video);
btnQQFriendVideo = (Button) findViewById(R.id.btn_qqFriend_video);
btn_wxCircle_img = (Button) findViewById(R.id.btn_wxCircle_img);
btnQQ.setOnClickListener(this);
btnWX.setOnClickListener(this);
btnMore.setOnClickListener(this);
btnWxFriendText.setOnClickListener(this);
btnQQFriendText.setOnClickListener(this);
btnWxFriendImg.setOnClickListener(this);
btnQQFriendImg.setOnClickListener(this);
btnWxFriendAudio.setOnClickListener(this);
btnQQFriendAduio.setOnClickListener(this);
btnWxFriendVideo.setOnClickListener(this);
btnQQFriendVideo.setOnClickListener(this);
btn_wxCircle_img.setOnClickListener(this);
shareUtil = new ShareUtil(this);
}
@Override
public void onClick(View v) {
String testImgPath = "/storage/emulated/legacy/display-client/picture/my.png";
String testImagePath = Environment.getExternalStorageDirectory()
+ "/img.jpg";
String testAudioPath = Environment.getExternalStorageDirectory()
+ "/audio.mp3";
String testVideoPath = Environment.getExternalStorageDirectory()
+ "/video.mp4";
File file = new File(testImgPath);
File fileImage = new File(testImagePath);
File fileAudio = new File(testAudioPath);
File fileVideo = new File(testVideoPath);
switch (v.getId()) {
// qq&文字
case R.id.btn_qq:
shareUtil.shareText("com.tencent.mobileqq", null, "这是一条分享信息",
"分享标题", "分享主题");
break;
// 微信&文字
case R.id.btn_wx:
shareUtil.shareText("com.tencent.mm", null, "这是一条分享信息", "分享标题",
"分享主题");
break;
// 所有&文字
case R.id.btn_more:
shareUtil.shareText(null, null, "这是一条分享信息", "分享标题", "分享主题");
break;
// 微信朋友&文字
case R.id.btn_wxFriend:
if (shareUtil.checkInstall("com.tencent.mm")) {
shareUtil.shareText("com.tencent.mm",
"com.tencent.mm.ui.tools.ShareImgUI",
"http://www.aiipu.com/", "分享标题", "分享主题");
} else {
shareUtil.toInstallWebView("http://weixin.qq.com/download");
}
break;
// qq朋友&文字
case R.id.btn_qqFriend:
if (shareUtil.checkInstall("com.tencent.mobileqq")) {
shareUtil.shareText("com.tencent.mobileqq",
"com.tencent.mobileqq.activity.JumpActivity",
"http://www.aiipu.com/", "分享标题", "分享主题");
} else {
shareUtil.toInstallWebView("http://im.qq.com/mobileqq/");
}
break;
// 微信朋友&图片
case R.id.btn_wxFriend_img:
shareUtil.shareImg("com.tencent.mm",
"com.tencent.mm.ui.tools.ShareImgUI", fileImage);
break;
// qq朋友&图片
case R.id.btn_qqFriend_img:
shareUtil.shareImg("com.tencent.mobileqq",
"com.tencent.mobileqq.activity.JumpActivity", fileImage);
break;
case R.id.btn_wxFriend_audio:
shareUtil.shareAudio("com.tencent.mm",
"com.tencent.mm.ui.tools.ShareImgUI", fileAudio);
break;
case R.id.btn_qqFriend_audio:
shareUtil.shareAudio("com.tencent.mobileqq",
"com.tencent.mobileqq.activity.JumpActivity", fileAudio);
break;
case R.id.btn_wxFriend_video:
shareUtil.shareVideo("com.tencent.mm",
"com.tencent.mm.ui.tools.ShareImgUI", fileVideo);
break;
case R.id.btn_qqFriend_video:
shareUtil.shareVideo("com.tencent.mobileqq",
"com.tencent.mobileqq.activity.JumpActivity", fileVideo);
break;
case R.id.btn_wxCircle_img:
shareUtil.shareImgToWXCircle("狗狗图片", "com.tencent.mm",
"com.tencent.mm.ui.tools.ShareToTimeLineUI", fileImage);
break;
}
}
}
三.布局文件activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.ai.ipu.share_inent.MainActivity" >
<Button
android:id="@+id/btn_qq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="qq"/>
<Button
android:id="@+id/btn_wx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wx"
android:layout_below="@+id/btn_qq"/>
<Button
android:id="@+id/btn_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="more"
android:layout_below="@+id/btn_wx"/>
<Button
android:id="@+id/btn_wxFriend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_more"
android:text="wxFriendText"/>
<Button
android:id="@+id/btn_qqFriend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_wxFriend"
android:text="qqFriendText" />
<Button
android:id="@+id/btn_wxFriend_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_more"
android:layout_toRightOf="@+id/btn_wxFriend"
android:text="wxFriendImg" />
<Button
android:id="@+id/btn_qqFriend_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn_qqFriend"
android:layout_below="@+id/btn_wxFriend"
android:text="qqFriendImg" />
<Button
android:id="@+id/btn_wxFriend_audio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_more"
android:layout_toRightOf="@+id/btn_wxFriend_img"
android:text="wxFriendAudio" />
<Button
android:id="@+id/btn_qqFriend_audio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn_qqFriend_img"
android:layout_below="@+id/btn_wxFriend"
android:text="qqFriendAudio" />
<Button
android:id="@+id/btn_wxFriend_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_qqFriend"
android:text="wxFriendVideo" />
<Button
android:id="@+id/btn_qqFriend_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_wxFriend_video"
android:text="qqFriendVideo" />
<Button
android:id="@+id/btn_wxCircle_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_wxFriend_video"
android:layout_toRightOf="@+id/btn_wxFriend_img"
android:text="wxCircleImg" />
</RelativeLayout>
其中微信的分享只能分享文字和图片,不能单独分享图片或者文字。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持华域联盟。
声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)