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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Android图片分享系统是一种通过移动设备Android平台实现图片分享的应用程序。该系统能够为用户提供方便快捷的图片分享与浏览功能,满足用户对于分享精彩瞬间的需求。 首先,基于Android图片分享系统可以提供用户上传、下载和分享图片功能。用户可以通过该系统将手机中的图片上传到云端服务器,从而方便地备份和分享自己的照片。同时,用户也可以从云端服务器上下载其他用户分享图片,进行浏览和保存。 其次,该系统还可以提供图片社交功能,用户可以关注其他用户,浏览其分享图片,并进行点赞和评论。通过建立用户之间的连接和互动,增强用户之间的社交和交流。 此外,基于Android图片分享系统还应具备良好的用户体验和界面设计,使用户能够方便地浏览、搜索和筛选照片。系统可以根据用户的偏好和兴趣推荐相关的图片,提供个性化的浏览体验。 最后,该系统还应考虑用户隐私和安全问题,用户可以设定照片的分享权限,确保自己的照片只对指定的用户可见。同时,系统应采取一定的权限管理措施,确保用户上传的照片不会被滥用或恶意侵犯。 综上所述,基于Android图片分享系统能够为用户提供便捷的图片分享与浏览功能,实现用户之间的社交和连接,并且具备良好的用户体验和隐私保护。这一系统满足了用户对于分享和交流照片的需求,为用户来更多的乐趣和便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值