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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章