Android中怎么实现一个图片分享工具类
作者
这篇文章给大家介绍Android中怎么实现一个图片分享工具类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
权限
记得添加文件操作权限, 另外需要注意6.0版本以上的权限管理
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
具体细节见代码
/** *系统分享图片功能 *Createdbywikyon2018/1/13. */ objectUtil{ funstartShareImage(activity:Activity){ //过滤出需要分享到对应的平台:微信好友、朋友圈、QQ好友。可自行修改 valtargetApp=arrayOf("com.tencent.mm.ui.tools.ShareImgUI","com.tencent.mm.ui.tools.ShareToTimeLineUI","com.tencent.mobileqq.activity.JumpActivity") /***分享图片*/ valbitmap=getImageFromAssetsFile(activity,"img_share.jpg")//从assets目录中取到对应的文件,文件名自行修改 vallocalImage=saveBitmap(bitmap!!,"share.jpg")//分享前,需要先将图片存在本地(记得添加权限),文件名自行修改 valshareIntent=Intent(Intent.ACTION_SEND) shareIntent.type="image/*"//设置分享内容的类型:图片 shareIntent.putExtra(Intent.EXTRA_STREAM,localImage) try{ valresInfo=activity.packageManager.queryIntentActivities(shareIntent,0) if(!resInfo.isEmpty()){ valtargetedShareIntents=ArrayList<Intent>() for(infoinresInfo){ valtargeted=Intent(Intent.ACTION_SEND) targeted.type="image/*"//设置分享内容的类型 valactivityInfo=info.activityInfo //如果还需要分享至其它平台,可以打印出具体信息,然后找到对应的Activity名称,填入上面的数组中即可 //println("package=${activityInfo.packageName},activity=${activityInfo.name}") //进行过滤(只显示需要分享的平台) if(targetApp.any{it==activityInfo.name}){ valcomp=ComponentName(activityInfo.packageName,activityInfo.name) targeted.component=comp targeted.putExtra(Intent.EXTRA_STREAM,localImage) targetedShareIntents.add(targeted) } } valchooserIntent=Intent.createChooser(targetedShareIntents.removeAt(0),"选择要分享到的平台") if(chooserIntent!=null){ chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,targetedShareIntents.toTypedArray<Parcelable>()) activity.startActivity(chooserIntent) } } }catch(e:Exception){ Log.e(StatConstants.LOG_TAG,"Unabletoshareimage,logs:"+e.toString()) } } /***从Assets中读取图片*/ privatefungetImageFromAssetsFile(context:Context,fileName:String):Bitmap?{ varimage:Bitmap?=null valam=context.resources.assets try{ valinputStream=am.open(fileName) image=BitmapFactory.decodeStream(inputStream) inputStream.close() }catch(e:IOException){ e.printStackTrace() } returnimage } /***将图片存到本地*/ privatefunsaveBitmap(bm:Bitmap,picName:String):Uri?{ try{ valdir=Environment.getExternalStorageDirectory().absolutePath+File.separator+picName valf=File(dir) if(!f.exists()){ f.parentFile.mkdirs() f.createNewFile() } valout=FileOutputStream(f) bm.compress(Bitmap.CompressFormat.JPEG,90,out) out.flush() out.close() returnUri.fromFile(f) }catch(e:FileNotFoundException){ e.printStackTrace() }catch(e:IOException){ e.printStackTrace() } returnnull } }
关于Android中怎么实现一个图片分享工具类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
目录
推荐阅读
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能
-
android怎么实现多点触摸应用
-
Android怎么实现手势划定区域裁剪图片
-
android怎么实现简单的矩形裁剪框
-
Android单选多选按钮怎么使用
-
Android中如何利用oncreate获取控件高度或宽度
Android中如何利用oncreate获取控件高度或宽度本篇内容...
-
Android中怎么使用onSaveInstanceState()方法
Android中怎么使用onSaveInstanceState()方法...
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~