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.youkuaiyun.com/download/kevinmoj/9932465