当前位置:   article > 正文

Android实现原生分享功能_android实现qq原生分享

android实现qq原生分享

本文实例为大家分享了Android实现分享功能的具体代码,供大家参考,具体内容如下

因为公司的需求,最近一直在做分享这一块的功能。大概有这样几种思路:

1.使用Intent调用andoird原生的分享功能;

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; 
} 
} 
} 
  • 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
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202

二. 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; 
} 
} 
}
  • 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
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132

三.布局文件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 
  • 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

其中微信的分享只能分享文字和图片,不能单独分享图片或者文字。

更多Android进阶指南 可以扫码 解锁 《Android十大板块文档》

1.Android车载应用开发系统学习指南(附项目实战)

2.Android Framework学习指南,助力成为系统级开发高手

3.2024最新Android中高级面试题汇总+解析,告别零offer

4.企业级Android音视频开发学习路线+项目实战(附源码)

5.Android Jetpack从入门到精通,构建高质量UI界面

6.Flutter技术解析与实战,跨平台首要之选

7.Kotlin从入门到实战,全方面提升架构基础

8.高级Android插件化与组件化(含实战教程和源码)

9.Android 性能优化实战+360°全方面性能调优

10.Android零基础入门到精通,高手进阶之路

敲代码不易,关注一下吧。ღ( ´・ᴗ・` )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/821901
推荐阅读
相关标签