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

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

时间: 2025-01-03 07:58:49

Android 分享功能的实现代码的相关文章

Android 分享功能的实现

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

Android计步功能的实现代码

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

android分享功能的实现

http://www.cnblogs.com/slider/archive/2012/02/13/2349508.html

记录Android微信分享功能的吐槽与思考_Android

在App内潜入分享到微信好友或朋友圈的功能想必大家已经屡见不鲜了,比如Android分享一个网页信息(URL)到微信客户端的代码: /** * 微信分享:分享网页 * @param context * @param url * @param title * @param description * @param scene */ public static void shareToWeChatWithWebpage(Context context, String url, String titl

Android实现分享功能_Android

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

Android 微信图片分享功能_Android

我们都知道,通过 微信官方 分享sdk 支持图片分享,而且有多种方式.官方链接 可直接查看,不再赘述. 本文要解决的问题是,分享本地带二维码的图片给微信好友和朋友圈.朋友圈图片能够实现长按识别,给微信好友对话框的图片 在 iOS 可以正常识别,但是 Android 端却不能识别 ,为什么? 以下引用网友的回答: 经过分析和功能对比,android wechat app 中有两种图片浏览方式,图片预览,和图片本地发送后的打开查看(这个有识别动作)页面.预览图片功能中,不包含长按手势的识别功能,仔细

Android实现截图和分享功能的代码

先给大家展示下效果图吧 直接上代码: xml的布局: <Button android:id="@+id/btn_jp" android:layout_marginTop="10dip" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:tex

Android调用系统自带的分享功能实例代码

实现分享功能的几个办法 1.调用系统的分享功能 2.通过第三方SDK,如ShareSDK,友盟等 3.自行使用各自平台的SDK,比如QQ,微信,微博各自的SDK 这里就记录下第一种办法. 分享文本信息 Intent textIntent = new Intent(Intent.ACTION_SEND); textIntent.setType("text/plain"); textIntent.putExtra(Intent.EXTRA_TEXT, "这是一段分享的文字&quo

Android刮刮卡功能具体实现代码_Android

今天整理之前的代码,忽然看到之前自己写的一个刮刮卡,整理下以便以后使用,同时分享给需要的朋友,如有错误,还请多多指正. 实现的步骤,其实就是徒手画三个图层叠加在一起,最上层是绘制需要的问题,就是以上所述的"骚年,刮我吧",第二层就是覆盖宽高的灰层,第三层是结果层,多的不啰嗦了,具体实现如下,附上详细注释. /** * * created by zero on 2016-9-9 * * 刮刮卡 * */ public class ScratchView extends View { pu