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
相关文章:
网站制作免费,什么网站能看正片电影?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
建站主机类型有哪些?如何正确选型
Android使用GridView实现日历的简单功能
建站主机服务器选购指南:轻量应用与VPS配置解析
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
,购物网站怎么盈利呢?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
建站主机选购指南与交易推荐:核心配置解析
如何用VPS主机快速搭建个人网站?
视频网站制作教程,怎么样制作优酷网的小视频?
建站VPS能否同时实现高效与安全翻墙?
如何在Windows环境下新建FTP站点并设置权限?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
南平网站制作公司,2025年南平市事业单位报名时间?
建站之星3.0如何解决常见操作问题?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
建站之星后台管理系统如何操作?
如何通过主机屋免费建站教程十分钟搭建网站?
C#怎么创建控制台应用 C# Console App项目创建方法
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
大学网站设计制作软件有哪些,如何将网站制作成自己app?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
Python文件管理规范_工程实践说明【指导】
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
如何解决ASP生成WAP建站中文乱码问题?
教程网站设计制作软件,怎么创建自己的一个网站?
宝塔新建站点为何无法访问?如何排查?
c# await 一个已经完成的Task会发生什么
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
如何高效利用亚马逊云主机搭建企业网站?
建站之星备案是否影响网站上线时间?
css网站制作参考文献有哪些,易聊怎么注册?
建站之星代理平台如何选择最佳方案?
小型网站制作HTML,*游戏网站怎么搭建?
建站之星如何实现五合一智能建站与营销推广?
如何快速生成高效建站系统源代码?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
建站之星如何快速生成多端适配网站?
如何选择域名并搭建高效网站?
如何快速生成凡客建站的专业级图册?
如何零基础在云服务器搭建WordPress站点?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何构建满足综合性能需求的优质建站方案?
如何通过远程VPS快速搭建个人网站?
建站主机选购指南:核心配置优化与品牌推荐方案
*请认真填写需求信息,我们会在24小时内与您取得联系。