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);
      }
    }
  }

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 简述Android中实现APP文本内容的分享发送与接收方法

    谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要通过微信或者QQ,短信等社交工具发送给大家. (2)在网上发现一段特别好的文章,想要保存收藏下来. 上面描述了进入智能手机时代后,我们经常遇到的两种情况,那么作为开发者的我们如何让自己开发的APP实现这两种功能呢,下面我们以实现文本的发送分享以及接收来梳理下两种功能的实现过程(其他类型的数据在博文末

  • 关于Android实现简单的微信朋友圈分享功能

    1.先下载微信分享的jar包放在lib目录下,并且添加依赖, 清单文件添加 <activity android:name=".wxapi.WXEntryActivity" android:exported="true">//产生回调 </activity> 2.在工程下新建如图所示的包和Activity Activity里面的内容主要是创建微信api并且注册返回回调值 private final String APP_ID= "wx

  • Android实现微信分享带有缩略图的网页

    前言 最近做了一个web app 需要做微信分享. 需求是分享web页还要带有图片,并且图片还不是本地的,这就有点坑了, 也就是说图片还要从网络实时获取并且是同步的,如果是异步的还需要等待(用户体验就不好了) 代码如下 /** * 微信分享 好友 */ public void wxHyShare(String shareUrl, String title, String image, String desc) { IWXAPI api = WXAPIFactory.createWXAPI(con

  • Android自定义PopupWindow仿点击弹出分享功能

    本文实例自定义PopupWindow,点击弹出PopupWindow,背景变暗,仿点击弹出分享功能,供大家参考,具体内容如下 注:参照大神代码写的 自定义代码 package com.duanlian.popupwindowdemo; import android.app.Activity; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.view.Lay

  • Android获取分享应用列表详解及实例

    Android获取分享应用列表详解及实例 如果在应用的AndroidManifest.xml中含有 ACTION_SEND 属性,那就证明该应用可以供第三方应用进行调用分享,那怎么获取函数该属性的分享列表了,这对我们做应用的非常有用:最近在做该功能,自己也做了下自定义的分享列表,用PopupWindow的方式弹出. 1.布局: popup_share.xml <?xml version="1.0" encoding="utf-8"?> <Linea

  • Android编程实现调用系统分享功能示例

    本文实例讲述了Android编程实现调用系统分享功能.分享给大家供大家参考,具体如下: /** * 调用系统的分享功能 * Created by admin on 15-4-13. */ public class ShareActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV

  • 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{ Strin

  • Android中使用ShareSDK集成分享功能的实例代码

    引言 现在APP开发集成分享功能已经是非常普遍的需求了.其他集成分享技术我没有使用过,今天我就来介绍下使用ShareSDK来进行分享功能开发的一些基本步骤和注意点,帮助朋友们避免一些坑.好了,下面切入正题正式开始介绍. 1.ShareSDK开发包及配置 这个不用多说,去他们官网看找SDK开发包和集成文档即可. Android版本地址:http://www.mob.com/downloadDetail/ShareSDK/android. 注意:记得要注册ShareSDK账号获取AppKey哦.这些

  • Android 分享功能的实现

     Android 分享功能的实现 Android程序里面的分享功能分为第三方程序分享,就是使用QQ空间,QQ微博,新浪微博,人人等第三方包进行分享; 还有就是用本地程序进行分享,如短信,UC浏览器,蓝牙等. 他们的区别是使用第三方包进行分享手机系统不用安装该类程序,而本地程序分享就需要. 这里主要讲的是使用本地程序进行分享. 效果如下图所示: 实现代码如下所示; Intent email = new Intent(android.content.Intent.ACTION_SEND); emai

  • Flutter实现仿微信分享功能的示例代码

    目录 1.首先去pub官网 2 在微信开放平台注册开发者账号以及创建你的应用程序 3 在分享页面 3.1 初始化 3.2 检测微信是否安装 3.3 分享微信消息 总结 本文设计到的知识点有 主要问题 Flutter 用来快速开发 Android iOS平台应用,在Flutter 中,通过 fluwx或者fluwx_no_pay 插件来实现微信分享功能 主要还是看自己的需求,本示例我将按照没有支付的实现.至于为什么,主要是ios打包提审比较麻烦. 那么接下来就看一下如何实现吧, 1.首先去pub官

  • Android倒计时功能的实现代码

    好久没有写博客了,趁着年末,总结了下最近一年所遇到的一些技术问题,还有一些自定义控件,比如倒计时功能 首先倒计时的实现方式 1.Handler 2.Timer 3.RxJava 4.ValueAnimator 5.其他 这些方式中,我选择了ValueAnimator,主要是它的API比较友好,不需要我们去封装太多东西,具体的使用方式我就不单独写了,下面的代码都有备注 项目地址 项目图片 代码实现: package com.example.countdownview; import android

  • Android计步功能的实现代码

    本文对原文计步项目进行了精简,移除了进程服务和计时.守护进程.数据库保存等等,方便扩展功能. Android4.4以上版本,有些手机有计步传感器可以直接使用, 而有些手机没有,但有加速度传感器,也可以实现计步功能(需要计算加速度波峰波谷来判断人走一步)! 一.使用 public class MainActivity extends AppCompatActivity implements StepCallBack{ ......... @Override public void Step(int

  • Android实现分享功能

    Android应用中能很方便的完成这些功能,很多的应用中都有"分享"功能?如何分享呢?下面给大家说说看. 最近有人问到Android分享功能用那个比较好,使用Android自带的Intent来进行分享还是借助第三方呢,直接上代码: 一.使用Intent直接和第三方应用进行通信: /** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题 * @para

  • Android文件下载功能实现代码

    本文实例为大家分享了Android文件下载功能的具体代码,供大家参考,具体内容如下 1.普通单线程下载文件: 直接使用URLConnection.openStream()打开网络输入流,然后将流写入到文件中! public static void downLoad(String path,Context context)throws Exception { URL url = new URL(path); InputStream is = url.openStream(); //截取最后的文件名

  • Android实现原生分享功能

    本文实例为大家分享了Android实现分享功能的具体代码,供大家参考,具体内容如下 因为公司的需求,最近一直在做分享这一块的功能.大概有这样几种思路: 1.使用Intent调用andoird原生的分享功能: 2.使用第三方的sdk,比如ShareSdk或者友盟: 3.去对应的平台下载jar包,参考官方设计文档写出自己的分享demo,但这种一般也比较复杂,尤其搞不懂qq和微信一家公司的,为什么微信那么麻烦. 不废话了,直接上代码: 一. 新建ShareUtil.java类 import java.

  • ionic实现底部分享功能

    本文实例为大家分享了ionic底部分享功能的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.

随机推荐