安卓,调用系统方法分享到微信

项目中有需求,要能一次性分享多张图片给微信好友,还要能带文字和多张图片跳转到微信的朋友圈的发布界面(这让我想到了微商最想要的微信一键转发功能)。如下图。
这里写图片描述

而分享的SDK,貌似做不到这样。但是安卓系统自带的方法能做到。实现功能后,整理封装如下。

public class SystemShareUtils {
    // 微信朋友圈发送界面
    public static final String NAME_ACTIVITY_WECHAT_CIRCLE_PUBLISH = "com.tencent.mm.ui.tools.ShareToTimeLineUI";
    // 微信好友发送界面
    public static final String NAME_ACTIVITY_WECHAT_FRIEND = "com.tencent.mm.ui.tools.ShareImgUI";

    /**
     * 分享
     * @param context
     * @param activityName 分享类别。
     *            NAME_ACTIVITY_WECHAT_CIRCLE_PUBLISH表示朋友圈发布界面;NAME_ACTIVITY_WECHAT_FRIEND表示发送给好友。
     * @param text      文字内容,只对朋友圈有效
     * @param files     本地图片全路径列表
     */
    public static void shareTextAndPicToWechat(Context context, String activityName, String text, List<String> files) {
        String packageName = "com.tencent.mm"; // 微信包名

        if (isWeixinAvilible(context)) {
            Intent intent = new Intent();
            ComponentName comp = new ComponentName(packageName, activityName);
            intent.setComponent(comp);
            intent.setAction(Intent.ACTION_SEND_MULTIPLE);
            intent.setType("image/*");

            ArrayList<Uri> imageUris = new ArrayList<>();
            if (null != files) {
                for (String f : files) {
                    // 7.0及以上需要使用MediaStore.Images.Media.insertImage()转化一下uri?
                    // 测试7.0  7.1 未发现这样有bug
                    imageUris.add(Uri.fromFile(new File(f)));
                }
            }
            intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
            intent.putExtra("Kdescription", text); // 作用于发朋友圈,对好友不会有影响
            context.startActivity(intent);
        } else {
            ToastUtils.showToast("请先安装微信APP");
        }
    }

    // 判断手机内是否安装了微信APP
    private static boolean isWeixinAvilible(Context context) {
        PackageManager packageManager = context.getPackageManager();// 获取packagemanager
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
        if (pinfo != null) {
            for (int i = 0; i < pinfo.size(); i++) {
                String pn = pinfo.get(i).packageName;
                if (pn.equals("com.tencent.mm")) {
                    return true;
                }
            }
        }
        return false;
    }
}

暂时测试未发现问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 应用程序中实现分享微信的功能,可以使用微信官方提供的 SDK,具体步骤如下: 1. 在微信开放平台注册开发者账号,并创建应用,获取 AppID。 2. 在应用的 build.gradle 文件中添加以下依赖: ``` implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+' ``` 3. 在 AndroidManifest.xml 文件中添加以下代码: ``` <!-- 注册微信 SDK --> <activity android:name=".wxapi.WXEntryActivity" android:exported="true" android:launchMode="singleInstance" android:taskAffinity="${applicationId}" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data android:name="com.tencent.mm.sdk.openapi.IWXAPI_APPID" android:value="替换为你的 AppID" /> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="wx替换为你的 AppID" /> </intent-filter> ``` 4. 创建一个实现了 IWXAPIEventHandler 接口的 Activity,并在其中处理微信回调。 5. 在需要进行分享的地方,调用以下代码: ``` // 初始化微信 API IWXAPI api = WXAPIFactory.createWXAPI(context, "替换为你的 AppID", true); api.registerApp("替换为你的 AppID"); // 创建分享消息对象 WXMediaMessage message = new WXMediaMessage(); message.title = "分享标题"; message.description = "分享描述"; // 设置消息缩略图 Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.thumb); message.thumbData = Util.bmpToByteArray(thumb, true); // 创建网页对象 WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = "http://www.example.com/"; message.mediaObject = webpage; // 构造一个Req SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = message; req.scene = SendMessageToWX.Req.WXSceneSession; // 分享到会话 // 调用api接口,发送数据到微信 api.sendReq(req); ``` 其中,Util.bmpToByteArray() 是一个将 Bitmap 转换为 byte[] 的工具方法,可以自行实现。另外,buildTransaction() 方法是一个生成唯一标识符的工具方法,可以使用当前时间戳等方式实现。 以上就是在 Android 应用程序中实现分享微信的基本步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值