Android 分享到Instagram

分享到Ins是通过使用意图,调用起系统的分享,间接调用ins的分享入口

在调用分享分享时如果不使用setPackage("com.instagram.android"),就会把系统的可以分享的途径全部显示出来,想下面这样:

看着繁杂,无用的入口太多,我们只需要ins的入口,所以使用setPackage("com.instagram.android")

完整代码:

var isInstalled = checkAppInstalled(activity!!,"com.instagram.android")
if(isInstalled){
    sharedToIns()
}else{
    OToastProUtils.toastShort("未安装Ins")
}

 

    /**
     * 分享到Ins(本地图片)
     */
    private fun sharedToIns() {
        showProLoading()
        val type = "image/*"
        val uri =
            Uri.parse("android.resource://" + context?.getPackageName() + "/" + R.mipmap.img_share_toins)
        val share = Intent(Intent.ACTION_SEND)
        share.type = type
        share.putExtra(Intent.EXTRA_STREAM, uri)
//        startActivity(Intent.createChooser(share, "Share to"))
        share.putExtra(Intent.EXTRA_TITLE, "share oneHope")
        share.setPackage("com.instagram.android")
        startActivity(share)
        dismissProLoading()
    }

如果添加了setPackage("com.instagram.android")这句话,但是机器没有安装ins的话,应用会崩溃,所以在调用前还要判断下是否安装了ins

/**
 * 根据包名判断是否安装app
 * @param context 上下文
 * @param pkgName 包名字符串
 * @return 是否安装布尔值
 */
private fun checkAppInstalled(context :Context,pkgName :String): Boolean{
    var isInstalled =false
    if (pkgName== null || pkgName.isEmpty()) {
        isInstalled =false
    }

    var packageInfo : PackageInfo? = null
    try {
        packageInfo = context.getPackageManager().getPackageInfo(pkgName, 0)
    } catch (e : PackageManager.NameNotFoundException) {
        e.printStackTrace()
    }
    if (packageInfo != null){
        isInstalled =true
    }
    return isInstalled
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值