Android 分享功能的实现代码

一个Activity中,取出设备上安装的所有支持分享动作的Activity,在grid中显示。
实例代码:
/**
* 分享activity
*/
public class NShareActivity extends AppCompatActivity {
public final static String EXTRA_STR_TO_SHARE="str_to_share1";
private class SharedPkgInfo{
String pkgName;
Drawable icon;
String appName;
String activityClassName;
}
class Vh extends RecyclerView.ViewHolder {
TextView tv;
ImageView iv;
public Vh(View itemView) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//点击了某个app的图标,用选择的app分享内容
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("text/*");
share.putExtra(Intent.EXTRA_SUBJECT, "分享");
share.putExtra(Intent.EXTRA_TEXT,NShareActivity.this.strToShare);
//share.putExtra(Intent.EXTRA_STREAM, uri); // Optional, just if you wanna share an image.
SharedPkgInfo pi = sharePkgInfo.get(getAdapterPosition());
share.setClassName(pi.pkgName,pi.activityClassName);
//share.setPackage();
startActivity(share);
}
});
}
}
//获取支持供享的包的信息
List<SharedPkgInfo> sharePkgInfo=new ArrayList<>();
//要分享出去的文本放在这里
private String strToShare=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent= this.getIntent();
strToShare = intent.getStringExtra(EXTRA_STR_TO_SHARE);
getAllSharePackages();
//将可共享的app图标都放在一个gridview中
RecyclerView v=new RecyclerView(this);
v.setPadding(16,16,16,16);
GridLayoutManager lm=new GridLayoutManager(this,4);
v.setLayoutManager(lm);
v.setAdapter(new RecyclerView.Adapter<Vh>()
{
@Override
public Vh onCreateViewHolder(ViewGroup parent, int viewType) {
//必须创建新的view holder
LinearLayout v=new LinearLayout(NShareActivity.this);
v.setPadding(8,8,8,8);
Vh vh=new Vh(v);
//先创建item view:上面一个图标,下面一个文本
LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
v.setOrientation(LinearLayout.VERTICAL);
v.setLayoutParams(lp);
ImageView imgv=new ImageView(NShareActivity.this);
imgv.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
120));
TextView tv=new TextView(NShareActivity.this);
tv.setGravity(Gravity.CENTER);
v.addView(imgv);
v.addView(tv);
vh.tv=tv;
vh.iv=imgv;
return vh;
}
@Override
public void onBindViewHolder(Vh holder, int position) {
//将视图与数据绑定
SharedPkgInfo spi=sharePkgInfo.get(position);
holder.tv.setText(spi.appName);
holder.iv.setImageDrawable(spi.icon);
}
@Override
public int getItemCount() {
return sharePkgInfo.size();
}
});
v.setBackgroundColor(Color.WHITE);
this.setContentView(v);
}
//获取所有支持send Action的包名和图片
void getAllSharePackages()
{
Intent share = new Intent(android.content.Intent.ACTION_SEND);
//分析网站地址的话用这个:
//intent.setType("text/plain"); //纯文本
share.setType("text/*");
// gets the list of intents that can be loaded.
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
SharedPkgInfo spi = new SharedPkgInfo();
spi.pkgName = info.activityInfo.packageName;
spi.icon = info.loadIcon(getPackageManager());
spi.appName = info.loadLabel(getPackageManager()).toString();
spi.activityClassName=info.activityInfo.name;
sharePkgInfo.add(spi);
//Log.w("shared",spi.pkgName+" , "+spi.appName+","+info.activityInfo.name);
}
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# 分享功能
# 分享功能的实例
# Android实现微信分享带有缩略图的网页
# Android自定义PopupWindow仿点击弹出分享功能
# 关于Android实现简单的微信朋友圈分享功能
# Android编程实现调用系统分享功能示例
# 简述Android中实现APP文本内容的分享发送与接收方法
# Android获取分享应用列表详解及实例
# 放在
# 希望能
# 谢谢大家
# 绑定
# 将可
# ACTION_SEND
# setType
相关文章:
如何选择适合PHP云建站的开源框架?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
建站主机选虚拟主机还是云服务器更好?
如何零成本快速生成个人自助网站?
,想在网上投简历,哪几个网站比较好?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
如何安全更换建站之星模板并保留数据?
北京网站制作的公司有哪些,北京白云观官方网站?
如何确保FTP站点访问权限与数据传输安全?
如何快速建站并高效导出源代码?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
太原网站制作公司有哪些,网约车营运证查询官网?
建站之星官网登录失败?如何快速解决?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
网站制作员失业,怎样查看自己网站的注册者?
h5网站制作工具有哪些,h5页面制作工具有哪些?
建站之星安装后如何配置SEO及设计样式?
平台云上自主建站:模板化设计与智能工具打造高效网站
临沂网站制作企业,临沂第三中学官方网站?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
制作旅游网站html,怎样注册旅游网站?
常州自助建站工具推荐:低成本搭建与模板选择技巧
已有域名能否直接搭建网站?
开源网站制作软件,开源网站什么意思?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何快速选择适合个人网站的云服务器配置?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
香港服务器如何优化才能显著提升网站加载速度?
南宁网站建设制作定制,南宁网站建设可以定制吗?
建站之星安装后界面空白如何解决?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何在腾讯云免费申请建站?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
西安专业网站制作公司有哪些,陕西省建行官方网站?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何通过网站建站时间优化SEO与用户体验?
C++中引用和指针有什么区别?(代码说明)
如何在IIS中配置站点IP、端口及主机头?
Android自定义listview布局实现上拉加载下拉刷新功能
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何快速生成ASP一键建站模板并优化安全性?
如何高效搭建专业期货交易平台网站?
建站之星安装路径如何正确选择及配置?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
,交易猫的商品怎么发布到网站上去?
建站为何优先选择香港服务器?
*请认真填写需求信息,我们会在24小时内与您取得联系。