获取Android系统分享列表

164 阅读1分钟
public List<AppInfoVo> getShareApps(Context context) {
        PackageManager packageManager = context.getPackageManager();
        List<AppInfoVo> appInfoVos = new ArrayList<AppInfoVo>();
        List<ResolveInfo> resolveInfos = new ArrayList<ResolveInfo>();
        Intent intent = new Intent(Intent.ACTION_SEND, null);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setType("*/*");
        PackageManager pManager = context.getPackageManager();
        resolveInfos = pManager.queryIntentActivities(intent, PackageManager
                .COMPONENT_ENABLED_STATE_DEFAULT);
        for (int i = 0; i < resolveInfos.size(); i++) {
            AppInfoVo appInfoVo = new AppInfoVo();
            ResolveInfo resolveInfo = resolveInfos.get(i);
            appInfoVo.setAppName(resolveInfo.loadLabel(packageManager).toString());
            appInfoVo.setIcon(resolveInfo.loadIcon(packageManager));
            appInfoVo.setPackageName(resolveInfo.activityInfo.packageName);
            appInfoVo.setLauncherName(resolveInfo.activityInfo.name);
            appInfoVos.add(appInfoVo);
        }
        return appInfoVos;
    }
public class AppInfoVo {
        private Drawable icon;
        private String appName;
        private String packageName;
        private boolean isSystemApp;
        private long codesize;
        private String launcherName;


        public String getLauncherName() {
            return launcherName;
        }

        public void setLauncherName(String launcherName) {
            this.launcherName = launcherName;
        }

        public long getCodesize() {
            return codesize;
        }

        public void setCodesize(long codesize) {
            this.codesize = codesize;
        }

        public Drawable getIcon() {
            return icon;
        }

        public void setIcon(Drawable icon) {
            this.icon = icon;
        }

        public String getAppName() {
            return appName;
        }

        public void setAppName(String appName) {
            this.appName = appName;
        }

        public String getPackageName() {
            return packageName;
        }

        public void setPackageName(String packageName) {
            this.packageName = packageName;
        }

        public boolean isSystemApp() {
            return isSystemApp;
        }

        public void setSystemApp(boolean isSystemApp) {
            this.isSystemApp = isSystemApp;
        }

    }

Debug一下appInfoVos

这里写图片描述

例如查看QQ空间发表视频的Activity和包名

这里写图片描述

常见应用包名

微信朋友圈
“com.tencent.mm”
“com.tencent.mm.ui.tools.ShareToTimeLineUI”

微信朋友
“com.tencent.mm”
“com.tencent.mm.ui.tools.ShareImgUI”

QQ好友
“com.tencent.mobileqq”
“com.tencent.mobileqq.activity.JumpActivity”

QQ空间分享视频
“com.qzone”
“com.qzonex.module.maxvideo.activity.QzonePublishVideoActivity”

QQ空间分享图片、文字
“com.qzone”
“com.qzonex.module.operation.ui.QZonePublishMoodActivity”

新浪微博
“com.sina.weibo”
“com.sina.weibo.composerinde.ComposerDispatchActivity”