Android开发APP实现分享功能

发表于 2020-08-06 10:53:00
阅读 78

介绍

介绍

福哥再开发Android的APP需要“分享”功能,经过一番研究终于做出来了

在这里给大家分享一下~~

教程

Intent.createChooser

通过Intent.createChooser加载分享选择框

文字分享

直接将手机中的支持分享的软件都列出来的方法

Intent intent = new Intent();

intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "福哥好棒");
intent.setType("text/plain");
context.startActivity(Intent.createChooser(intent, "告诉福哥你想分享的功能"));

图片分享

直接将手机中的支持分享的软件都列出来的方法

Intent intent = new Intent();

intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://" + context.getPackageName() + "/" + R.mipmap.ic_test));
intent.setType("image/*");
context.startActivity(Intent.createChooser(intent, "告诉福哥你想分享的功能"));

效果如下

这是分享选择框效果

3b8c956cc389292a.jpg

选择分享功能

选择分享功能

直接通过Intent.createChooser开启分享选择框,会发现全部可用功能都列出来了

如果想根据需要自己选择的分享功能的话,就需要通过PackageManager这个对象了

Intent intent = new Intent();
Uri uri;
String extraType, intentType;

// make share content
uri = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.mipmap.ic_test);
extraType = Intent.EXTRA_STREAM;
intentType = "image/*";
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(extraType, uri);
intent.setType(intentType);

// get package list
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent,0);
if(resolveInfos.isEmpty()){

    return;
}

// select share methods
List<Intent> funIntents = new ArrayList<>();
for (ResolveInfo resolveInfo : resolveInfos) {
    ActivityInfo activityInfo = resolveInfo.activityInfo;
    String packageName = activityInfo.packageName, packageLabel = resolveInfo.loadLabel(packageManager).toString();
    if (packageName.contains("com.tencent.mm")
            && ( packageLabel.contains("发送给朋友") || packageLabel.contains("发送到朋友圈") )){
        Intent funIntent = new Intent();
        funIntent.setAction(Intent.ACTION_SEND);
        funIntent.setComponent(new ComponentName(activityInfo.packageName,activityInfo.name));
        funIntent.putExtra(extraType, uri);
        funIntent.setType(intentType);
        funIntents.add(new LabeledIntent(funIntent,activityInfo.packageName,resolveInfo.loadLabel(packageManager),resolveInfo.icon));
    }
}
if (funIntents.size()<= 0){

    return;
}

// show share methods
Intent chooserIntent = Intent.createChooser(funIntents.remove(funIntents.size() - 1), "告诉福哥你想分享的功能");
if (chooserIntent == null){

    return;
}
LabeledIntent[] labeledIntents = funIntents.toArray(new LabeledIntent[funIntents.size()]);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,labeledIntents);
context.startActivity(chooserIntent);

效果如下

这是分享选择框效果

98619b54d1c94d2d.jpg

APP程序包目录

福哥收录了部分APP软件的包名称和包标题

com.android.bluetooth
蓝牙
com.android.mms
信息
com.android.notes
便签
com.bbk.cloud
备份到云服务
com.vivo.gallery
共享相册
com.vivo.space
发帖到官网
com.vivo.space
vivo客服
cn.wps.moffice_eng
转为PDF
cn.wps.moffice_eng
提取文字
cn.wps.moffice_eng
转为表格
cn.wps.moffice_eng
转为演示
cn.wps.moffice_eng
保存到WPS云文档
com.alibaba.android.rimet
钉钉
com.eg.android.AlipayGphone
支付宝二维码识别
com.eg.android.AlipayGphone
支付宝
com.jingdong.app.mall
拍照购
com.qb.qtranslator
腾讯翻译君
com.qiyi.video
爱奇艺
com.sina.weibo
微博
com.sina.weibo
微博故事
com.sina.weibo
微博好友
com.taobao.taobao
拍立淘
com.tencent.mm
发送给朋友
com.tencent.mm
添加到微信收藏
com.tencent.mm
发送到朋友圈
com.tencent.mtt
智能识图
com.tencent.mtt
保存到QQ浏览器
com.tencent.mtt
编辑并分享
com.tencent.wework
发送给同事
com.tmall.wireless
手机天猫