首页 > 其他分享 >Android项目实战(六十八):微信分享的实现

Android项目实战(六十八):微信分享的实现

时间:2024-01-05 14:36:20浏览次数:26  
标签:context 微信 req Intent file 六十八 Android contentUri

系统分享:

// 系统转发方式
    public static void shareBySystem(Context context,File file){
        WxUtils.checkFileUriExposure();
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID.concat(".fileprovider"), file);
        intent.putExtra(Intent.EXTRA_STREAM,
                contentUri);  //传输图片或者文件 采用流的方式
        intent.setType("*/*");   //分享文件
        if (Build.VERSION.SDK_INT >= 24) {
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        }
        ArmsUti

 

微信api分享:

public static void sendFile(Context context , String url , String title , String memo , int mTargetScene){
        IWXAPI api = WXAPIFactory.createWXAPI(context, XApplication.APP_ID,false);
        WXFileObject fileObject = new WXFileObject();
        // 兼容fileprovider,获取文件url
        fileObject.filePath = getFileUri(context,new File(url));

        //用 WXWebpageObject 对象初始化一个 WXMediaMessage 对象
        WXMediaMessage msg = new WXMediaMessage(fileObject);
        msg.title = title ;
        msg.description = memo;
        Bitmap thumbBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_share);
        msg.thumbData = bmpToByteArray(thumbBmp, true);

        //构造一个Req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = buildTransaction("file");
        req.message =msg;
        req.scene =mTargetScene;
        //调用api接口,发送数据到微信
        api.sendReq(req);
    }

    // https://developers.weixin.qq.com/community/develop/doc/0004886026c1a8402d2a040ee5b401
    // OpenSDK支持FileProvider方式分享文件到微信官方
    public static String getFileUri(Context context, File file) {
        if (file == null || !file.exists()) {
            return null;
        }
        Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID.concat(".fileprovider"), file);
        // 授权给微信访问路径
        context.grantUriPermission("com.tencent.mm",  // 这里填微信包名
                contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
        return contentUri.toString();   // contentUri.toString() 即是以"content://"开头的用于共享的路径
    }

 

标签:context,微信,req,Intent,file,六十八,Android,contentUri
From: https://www.cnblogs.com/xqxacm/p/17947198

相关文章

  • Hbuilderx 创建 uni-app 项目,发行微信小程序
    创建uni-app项目,发行微信小程序发行微信小程序时,需要注意主包因uni_modules文件大超包问题。在Hbuilderx创建uni-app项目时,uni_modules文件会包含一些第三方组件和插件,而这些文件可能会导致主包的体积超过小程序的限制。为了解决这个问题,可以采取一些措施来减小主包的体积。一种......
  • 微信小程序直播(二):如何使用第三方直播插件快速实现企业直播间
    ZEGO微信小程序直播SDK可以在微信小程序中提供实时音视频直播服务,从而实现电商直播/在线教育/在线问诊/视频客服等各种业务场景。但是由于微信小程序的官方限制,在某些场景下需要额外使用ZEGO提供的小程序直播插件才能实现实时音视频直播功能。本节将介绍需要使用与不需要使用Z......
  • Android多行横向来回自动滚动
    使用自定义RecyclerView实现,先看效果,能用得上的再继续往下看……上代码~自定义AutoRollRecyclerView,继承RecyclerView,重点只有这一个类classAutoRollRecyclerView@JvmOverloadsconstructor(context:Context,attrs:AttributeSet?=null):RecyclerView(context,a......
  • iOS苹果和Android安卓测试APP应用程序的差异
    Hello大家好呀,我是咕噜铁蛋!我们经常需要关注移动应用程序的测试和优化,以提供更好的用户体验。在移动应用开发领域,iOS和Android是两个主要的操作系统平台。本文铁蛋讲给各位小伙伴们详细介绍在App测试中iOS和Android的差异,帮助你更好地理解并应对这些差异,以提高你的应用程序的质量和......
  • 寻路迷宫,Android休闲益智小游戏开发
    使用AndroidStudio开发了一款休闲益智小游戏——《寻路迷宫》。A.项目描述《寻路迷宫》是一款非常有趣的小游戏app,玩家需要寻找到迷宫的出口,挑战自己的智力和反应能力。在游戏中,玩家需要操作角色前进、转向等动作,避免被障碍物(迷宫墙)阻挡,玩家需要思考解决方案,如何才能在最短的时......
  • Windows Subsystem for Android (WSA) 下载:在 Windows 11 上运行 Android 应用
    作者主页:www.sysin.org在Beta频道中为Windows预览体验成员宣布Windows11Preview上的Android™应用程序今天我们宣布的Android™应用程序适用于Windows11的第一个预览版现已在Beta频道在美国的WindowsInsiders可用,如果您还没有读过thisblogpostfromGiorgio......
  • Android大图监测的这三种实现方式,你最喜欢哪种?
    在Android应用中,大图的加载和显示可能导致内存占用过高,进而引发OOM(OutOfMemory)异常,影响应用的稳定性和用户体验。为了更好地管理大图资源,我们需要建立起一套可靠的大图监测系统。原理解析内存占用计算首先,我们需要了解如何计算一张图片在内存中的占用大小。Android中,图片占用的内......
  • 做私域是该用企业微信还是个人微信呢?
    还在认为做私域就是加人、拉群和发圈吗?这理解太片面了!腾讯官方解释私域是“维护长远而忠诚的客户关系”,为用户提供价值和有价值的服务,才是私域运营的核心。......
  • 在微信小程序中如何改变默认打开的页面
    各位伙伴们新年好,我是咕噜铁蛋!我们经常需要在微信小程序中定制化我们的应用程序,包括改变默认打开的页面。今天铁蛋也收集了些内容,详细介绍在微信小程序中如何改变默认打开的页面,帮助你实现更好的用户体验和个性化的应用程序。一.我们先了解微信小程序的默认打开页面在微信小程序中,默......
  • Android GB28181-2022 图像抓拍
     GB28181-2022新增图像抓拍功能,这个功能很有用,无需在设备实时点播的情况下,就可以抓图上传到指定的图像存储服务器上。如果配置合适的抓拍间隔,JPEG也选择适当的压缩参数,相比实时音视频回传更省流量,设备功耗也低。 GB28181图像抓拍分为三步,一是下发图像抓拍配置命令给设备,......