Android微信、QQ等分享,无需申请key,通过Intent进行分享。

本文介绍如何在Android应用中实现单文件和多文件的分享功能,特别是微信和QQ的分享,无需申请key,直接通过Intent操作。代码示例展示了如何创建并启动分享Intent,以及如何过滤特定应用的分享接口,例如只选择微信分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 单文件分享
 */
private void shareSingleFile() {
    Uri uri = Uri.fromFile(new File(“文件路径”));
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
    shareIntent.setType("*/*");
    startActivity(Intent.createChooser(shareIntent, "分享到"));
}

/**
 * 多文件分享,仅限图片
 */
private void shareMultipleFile() {
    ArrayList<Uri> myList = new ArrayList<Uri>();
    for (int i = 0; i < 10; i++) {
         myList.add(Uri.fromFile(new File(“文件路径”)));
    }

    Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, myList);
    shareIntent.setType("image/*");
    startActivity(Intent.createChooser(shareIntent, "分享到"));
}

通过上面的代码跳转会弹出Android默认的分享接口选项给用户选择。
若是你只想使用其中的一种或者几种分享,则可以通过以下代码进行过滤:

    
PackageManager localPackageManager = getPackageManager();
HashMap<String, ActivityInfo> localHashMap = new HashMap<String, ActivityInfo>();
try {
    //根据intent来查找本地apk适合的分享接口列表。
    List<ResolveInfo> localList = localPackageManager.queryIntentActivities( shareIntent, 0);
    Iterator<ResolveInfo> localIterator = localList.iterator();
    while (localIterator.hasNext()) {            //遍历分享接口。
        ResolveInfo resolveInfo = (ResolveInfo) localIterator.next();
        ActivityInfo localActivityInfo = resolveInfo.activityInfo;
        String str = localActivityInfo.name;
        //过滤接口,如只需用到微信分享。如不知道string,可进行调试,通过localList列表中查看。
        if (str.contains("com.tencent.mm.ui.tools.ShareImgUI"))
            localHashMap.put(str, localActivityInfo);        }
} catch (Exception localException) {
    L.d("exception" + localException);    }
ActivityInfo localActivityInfo = (ActivityInfo) localHashMap.get("com.tencent.mm.ui.tools.ShareImgUI");
if (localActivityInfo == null) {
    ToastMessage("微信分享异常,请检查客户端再试!", Toast.LENGTH_SHORT);
    return;
}
if (localActivityInfo != null) {
    //根据过滤下来的接口进行跳转,也可自定义选项框进行选择跳转。
    shareIntent.setComponent(new ComponentName(localActivityInfo.packageName, localActivityInfo.name));
    startActivityForResult(shareIntent, 0);    
}}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值