android分享工具类,Android系统图片分享工具类

简介

记录一个利用系统分享功能进行图片分享的工具类(代码是用Kotlin写的,都是比较简单的语法,部分可能需要自定义的地方都已经标出)。调用方式比较简单:

Util.startShareImage(this) //this为当前的Activity实例

权限

记得添加文件操作权限, 另外需要注意6.0版本以上的权限管理

具体细节见代码

/**

* 系统分享图片功能

* Created by wiky on 2018/1/13.

*/

object Util {

fun startShareImage(activity: Activity) {

//过滤出需要分享到对应的平台:微信好友、朋友圈、QQ好友。 可自行修改

val targetApp = arrayOf("com.tencent.mm.ui.tools.ShareImgUI", "com.tencent.mm.ui.tools.ShareToTimeLineUI", "com.tencent.mobileqq.activity.JumpActivity")

/** * 分享图片 */

val bitmap = getImageFromAssetsFile(activity, "img_share.jpg") //从assets目录中取到对应的文件,文件名自行修改

val localImage = saveBitmap(bitmap!!, "share.jpg") //分享前,需要先将图片存在本地(记得添加权限),文件名自行修改

val shareIntent = Intent(Intent.ACTION_SEND)

shareIntent.type = "image/*" //设置分享内容的类型:图片

shareIntent.putExtra(Intent.EXTRA_STREAM, localImage)

try {

val resInfo = activity.packageManager.queryIntentActivities(shareIntent, 0)

if (!resInfo.isEmpty()) {

val targetedShareIntents = ArrayList()

for (info in resInfo) {

val targeted = Intent(Intent.ACTION_SEND)

targeted.type = "image/*" //设置分享内容的类型

val activityInfo = info.activityInfo

//如果还需要分享至其它平台,可以打印出具体信息,然后找到对应的Activity名称,填入上面的数组中即可

// println("package = ${activityInfo.packageName}, activity = ${activityInfo.name}")

//进行过滤(只显示需要分享的平台)

if (targetApp.any { it == activityInfo.name }) {

val comp = ComponentName(activityInfo.packageName, activityInfo.name)

targeted.component = comp

targeted.putExtra(Intent.EXTRA_STREAM, localImage)

targetedShareIntents.add(targeted)

}

}

val chooserIntent = Intent.createChooser(targetedShareIntents.removeAt(0), "选择要分享到的平台")

if (chooserIntent != null) {

chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toTypedArray())

activity.startActivity(chooserIntent)

}

}

} catch (e: Exception) {

Log.e(StatConstants.LOG_TAG, "Unable to share image, logs : " + e.toString())

}

}

/** * 从Assets中读取图片 */

private fun getImageFromAssetsFile(context: Context, fileName: String): Bitmap? {

var image: Bitmap? = null

val am = context.resources.assets

try {

val inputStream = am.open(fileName)

image = BitmapFactory.decodeStream(inputStream)

inputStream.close()

} catch (e: IOException) {

e.printStackTrace()

}

return image

}

/** * 将图片存到本地 */

private fun saveBitmap(bm: Bitmap, picName: String): Uri? {

try {

val dir = Environment.getExternalStorageDirectory().absolutePath + File.separator + picName

val f = File(dir)

if (!f.exists()) {

f.parentFile.mkdirs()

f.createNewFile()

}

val out = FileOutputStream(f)

bm.compress(Bitmap.CompressFormat.JPEG, 90, out)

out.flush()

out.close()

return Uri.fromFile(f)

} catch (e: FileNotFoundException) {

e.printStackTrace()

} catch (e: IOException) {

e.printStackTrace()

}

return null

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值