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