android快速開發(fā)工具類
關(guān)于
Fastandrutils 是一套整理修改整合的android開發(fā)常用的工具類谓形。
這樣可以減少?gòu)?fù)制粘貼代碼,從而減少重復(fù)代碼贮竟,也不用為了一個(gè)常用的功能去谷歌百度荚孵,讓代碼更簡(jiǎn)潔,讓開發(fā)更高效啊奄。
同時(shí)希望您的添加完善渐苏,讓android開發(fā)變得更簡(jiǎn)單。
github地址,感興趣的話菇夸,不妨點(diǎn)贊支持下
個(gè)人博客
系統(tǒng)的分享界面
自定義分享界面
介紹
改工具類實(shí)現(xiàn)了
- 調(diào)用系統(tǒng)的分享功能
- 自定義分享界面功能
- 可分享文字琼富,文件,圖片等
- 簡(jiǎn)單易用
- 無需接入第三方分享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ù)說明
參數(shù) | 說明 |
---|---|
mActivity | FragmentActivity |
shareFilter | 顯示你想要分享出去的應(yīng)用的包名類別 |
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);
}
}