jakchang
jakchang

Reputation: 452

how to extend sharing Icon for image?

I'm using package manager for sending intent to what I wanna deliver. So I followed some examples. But when I run this, many packages are excluded. I have to know all packages but it didn't. how to get all package?

   private fun getImageShareIntent(name: String,data: Uri): Intent? {
        var found = false
        val intent = Intent(Intent.ACTION_SEND)
        intent.type =  "image/*"
        intent.data = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
        val resInfos = packageManager.queryIntentActivities(intent, 0)
        if (resInfos == null || resInfos.size === 0) return null
        for (info in resInfos) {
            Log.d("TAG","info.activityInfo.packageName : "+info.activityInfo.packageName)
            if (info.activityInfo.packageName.contains(name)) {
                //  Log.d("TAG","info.activityInfo.packageName : "+info.activityInfo.packageName)
                intent.run {
                    putExtra(Intent.EXTRA_STREAM,data )
                    setPackage(info.activityInfo.packageName)
                }
                found = true
                break
            }
        }
        Log.d("TAG","//////////////////////////////")
        return if (found) intent else null
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when(requestCode){
            1000-> {
                if (resultCode == -1) {

                    targetedShareIntents.clear()
                    for (i: Int in 0 until targetList.size) {
                        getImageShareIntent(targetList.get(i), data?.data!!)?.let {
                            targetedShareIntents.add(it);
                        }
                    }

                    val shareIntent = Intent.createChooser(targetedShareIntents.removeAt(0), "Title")
                    shareIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toTypedArray<Parcelable>())
                    startActivity(shareIntent)
                }
            }
        }
    }

Log

    //////////////////////////////
D/TAG: info.activityInfo.packageName : com.samsung.android.app.simplesharing
    info.activityInfo.packageName : com.google.android.apps.docs
    info.activityInfo.packageName : com.microsoft.skydrive
    info.activityInfo.packageName : com.samsung.android.email.provider
D/TAG: info.activityInfo.packageName : com.samsung.android.oneconnect
    info.activityInfo.packageName : com.skt.tbagplus
    info.activityInfo.packageName : jp.naver.line.android
    info.activityInfo.packageName : jp.naver.line.android
    //////////////////////////////

Upvotes: 0

Views: 21

Answers (1)

CommonsWare
CommonsWare

Reputation: 1007534

Delete:

intent.data = MediaStore.Images.Media.EXTERNAL_CONTENT_URI

ACTION_SEND does not use the data facet of an Intent.

Upvotes: 1

Related Questions