利用Android 系統(tǒng)的原生 API 實(shí)現(xiàn)分享功能

android快速開(kāi)發(fā)工具類(lèi)

關(guān)于

Fastandrutils 是一套整理修改整合的android開(kāi)發(fā)常用的工具類(lèi)。
這樣可以減少?gòu)?fù)制粘貼代碼,從而減少重復(fù)代碼,也不用為了一個(gè)常用的功能去谷歌百度,讓代碼更簡(jiǎn)潔,讓開(kāi)發(fā)更高效。
同時(shí)希望您的添加完善,讓android開(kāi)發(fā)變得更簡(jiǎn)單。

github地址,感興趣的話,不妨點(diǎn)贊支持下
個(gè)人博客

系統(tǒng)的分享界面

自定義分享界面

介紹

改工具類(lèi)實(shí)現(xiàn)了

  1. 調(diào)用系統(tǒng)的分享功能
  2. 自定義分享界面功能
  3. 可分享文字,文件,圖片等
  4. 簡(jiǎn)單易用
  5. 無(wú)需接入第三方分享sdk

使用

調(diào)用系統(tǒng)的分享界面

   new FShare.FShareBuilder(FShareActivity.this, null)
                        .setShareContent("0000")
                        .setShareSubject("dddd")
                        .build()
                        .shareBySystem();

調(diào)用自定義的分享界面

          new FShare.FShareBuilder(FShareActivity.this, "cn.hotapk.goodfilemanager.fileprovider")
                        .setShareContent("0000")
                        .setShareSubject("dddd")
//                        .setShareFilter(new String[]{"com.tencent.mm", "cn.andouya", "com.qihoo360.feichuan", "com.lenovo.anyshare", "com.sand.airdroid"})
                        .build()
                        .shareByCustom();

參數(shù)說(shuō)明

參數(shù) 說(shuō)明
mActivity FragmentActivity
shareFilter 顯示你想要分享出去的應(yīng)用的包名類(lèi)別
filePath 文件路徑
topTitle 顯示標(biāo)題
shareContent 分享的內(nèi)容
shareSubject 分享的主題
authorities Android7.0的文件權(quán)限 的FileProvider AndroidManifest.xml provider下配置的名稱
requestCode startActivityForResult 回調(diào)
componentNames ComponentName列表

關(guān)鍵代碼

指定分享到某個(gè)應(yīng)用

    private Intent getIntent(ComponentName componentName, String mimeType, Uri uri) {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        if (componentName != null) {
            shareIntent.setComponent(componentName);
        }
        shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        shareIntent.setType(mimeType);
        if (uri != null) {
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        }
        shareIntent.putExtra(Intent.EXTRA_TEXT, shareContent);
        shareIntent.putExtra(Intent.EXTRA_SUBJECT, shareSubject);
        return shareIntent;
    }

獲取所有支持分享的應(yīng)用

 List<ShareBean> shareBeans = new ArrayList<>();
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.setType(mimeType);
            List<ResolveInfo> resolveInfos = getActivity().getPackageManager().queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
            for (int i = 0; i < resolveInfos.size(); i++) {
                ResolveInfo resolveInfo = resolveInfos.get(i);
                PackageManager pm = getActivity().getApplication().getPackageManager();
                ActivityInfo activityInfo = resolveInfo.activityInfo;
                ShareBean shareBean = new ShareBean();
                shareBean.setAppName(activityInfo.loadLabel(pm).toString());
                shareBean.setPackageName(activityInfo.packageName);
                shareBean.setClassName(activityInfo.name);
                shareBean.setIcon(activityInfo.loadIcon(pm));

                if (shareFilter != null && shareFilter.length > 0) {
                    for (int j = 0; j < shareFilter.length; j++) {
                        if (shareBean.getPackageName().equals(shareFilter[j])) {
                            shareBeans.add(shareBean);
                        }
                    }
                } else {
                    shareBeans.add(shareBean);
                }
            }

github地址

完畢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,820評(píng)論 25 708
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,825評(píng)論 2 59
  • 在某種程度上來(lái)說(shuō),我大概還蠻有名的。 比如“高中不念書(shū)最后突然考了個(gè)重點(diǎn)大學(xué)” 比如“出車(chē)禍鎖骨都斷了在家躺了幾個(gè)...
    鄭小蒙閱讀 501評(píng)論 0 0
  • 01 昨晚被朋友叫出去看電影,到了影院才知道看的是《南極之戀》。剛聽(tīng)到名字時(shí)并沒(méi)有抱太大的期待,以為又是一部狗血的...
    是賴子呢閱讀 534評(píng)論 0 1
  • 神秘學(xué)(2018年6月3日) 似乎,現(xiàn)在人總是在用某些科學(xué)角度去闡述那些神秘學(xué)的內(nèi)容。例如八字,例如塔羅等等;中醫(yī)...
    陳煒杭閱讀 399評(píng)論 0 1