全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android 分享功能的实现代码

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小时内与您取得联系。