国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android系統自帶分享圖片功能

2019-10-22 18:12:28
字體:
來源:轉載
供稿:網友

簡介

記錄一個利用系統分享功能進行圖片分享的工具類(代碼是用Kotlin寫的,都是比較簡單的語法,部分可能需要自定義的地方都已經標出)。調用方式比較簡單:

Util.startShareImage(this) //this為當前的Activity實例

權限

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

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

具體細節見代碼

/** * 系統分享圖片功能 * 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<Intent>()        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<Parcelable>())          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  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安图县| 财经| 新乐市| 德安县| 芜湖市| 南乐县| 历史| 上虞市| 政和县| 长汀县| 隆尧县| 隆子县| 晋州市| 南开区| 塘沽区| 宽城| 台南市| 徐闻县| 梁山县| 全南县| 体育| 余江县| 昭通市| 兴文县| 浦北县| 肇源县| 比如县| 七台河市| 博罗县| 吴旗县| 岱山县| 广汉市| 黄大仙区| 延庆县| 盐边县| 汉沽区| 延吉市| 桃源县| 玉屏| 新巴尔虎左旗| 沧州市|