Android自定义分享

Android的分享功能可以利用第三方来调起分享,也可以用系统自带的分享功能去分享,还可以自定义一个分享的界面,读取手机自带的分享功能的APP去分享,我最近写了一个自定义的分享功能,记录下来,分享出来~

直接上代码:

这个是获取分享APP的列表的,里面有个AppInfo的类,用来记录保存的数据

 private List<InviteAppInfo> getShareAppList() {
        List<InviteAppInfo> shareAppInfos = new ArrayList<>();
        PackageManager packageManager = mContext.getPackageManager();
        List<ResolveInfo> resolveInfos = getShareApps(packageManager);
        if (resolveInfos == null) {
            return null;
        } else {
            for (ResolveInfo resolveInfo : resolveInfos) {
                InviteAppInfo appInfo = new InviteAppInfo();
                appInfo.setAppPkgName(resolveInfo.activityInfo.packageName);
                appInfo.setAppLauncherClassName(resolveInfo.activityInfo.name);
                appInfo.setAppName(resolveInfo.loadLabel(packageManager).toString());
                appInfo.setAppIcon(resolveInfo.loadIcon(packageManager));
                shareAppInfos.add(appInfo);
            }
        }
        return shareAppInfos;
    }
这个是获取支持分享的APP的列表的,你手机有哪些APP支持分享就会显示出来哪些
private List<ResolveInfo> getShareApps(PackageManager packageManager) {
        List<ResolveInfo> mApps;
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setType("video/*");
        mApps = packageManager.queryIntentActivities(intent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
        return mApps;
    }

下面的这个就是你初始化的时候,去初始化一个APP列表,

private void initData() {

            mAdapter = new ShareAdapter(mContext, getShareAppList());
            mRecyclerView.setAdapter(mAdapter);

            mAdapter.setOnItemClickListener(new ShareAdapter.onItemClickListener() {
                @Override
                public void onShareAppItemClickListener(int position, String appPackageName) {
                    Intent shareIntent = new Intent(Intent.ACTION_SEND);
                    InviteAppInfo appInfo = mAdapter.getItem(position);
                    shareIntent.setComponent(new ComponentName(appInfo.getAppPkgName(), appInfo.getAppLauncherClassName()));
		    shareIntent.setType("video/*");  // 这个是分享的类型是视频类型,还可以有图片,音乐等其他类型,改一下就好
			//这个是传到分享APP的文字
                    shareIntent.putExtra(Intent.EXTRA_TEXT,"this is test");
			//此处是分享过去携带的视频
                    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(file.getPath())));
                    shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    mContext.startActivity(shareIntent);
                    dismiss();
                }
            });
 }

以上的几个方法是分享的重要的方法,源码会分享~

这个是调出dialog的方法:

    public static void showShareDialog(FragmentActivity activity, String tag) {
        ShareDialog shareDialog = new ShareDialog(activity);
        if (shareDialog.getShareAppCount() != 0)
            shareDialog.show(activity.getSupportFragmentManager(), tag);
        else
            Toast.makeText(activity, activity.getString(R.string.share_dialog_no_share_app_toast), Toast.LENGTH_SHORT).show();
    }

资源网址 http://download.csdn.net/download/kevinmoj/9932465


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值