日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android實現(xiàn)app分享文件到微信功能

瀏覽:159日期:2022-06-04 13:20:16

本文實例為大家分享了Android實現(xiàn)app分享文件到微信的具體代碼,供大家參考,具體內(nèi)容如下

兩種實現(xiàn)方案:

1.使用WXFileObject構(gòu)造分享方法發(fā)送到微信;2.調(diào)用系統(tǒng)分享方法,把文件直接發(fā)送到微信;

那么下面來分別看看怎么實現(xiàn):

0、準(zhǔn)備工作

首先,需要在AndroidManifest.xml中配置FileProvider信息,以適配10以后版本文件讀取問題

AndroidManifest.xml

<provider android:name='androidx.core.content.FileProvider' android:authorities='${applicationId}.fileprovider' android:exported='false' android:grantUriPermissions='true' tools:replace='android:authorities'> <meta-dataandroid:name='android.support.FILE_PROVIDER_PATHS'android:resource='@xml/file_paths'tools:replace='android:resource' /></provider>

file_paths.xml

<paths> <external-pathname='external_files'path='.' /></paths>

一、使用WXFileObject構(gòu)造分享方法發(fā)送到微信

這種方式分享需要接入微信分享的SDK,分享到微信后可以顯示來源。但是官方文檔中沒有WXFileObject的示例,所以這里貼一段自己寫的方法給大家做參考,其他分享類型可以參考官方文檔

ShareUtils.java

public static final String PACKAGE_WECHAT = 'com.tencent.mm'; /** * 分享文件到微信好友 by WXAPI * * @param thumbId 分享到微信顯示的圖標(biāo) */ public static void shareFileToWechat(Context context, File file, int thumbId) { if (!isInstallApp(context, ShareUtils.PACKAGE_WECHAT)) { Toast.makeText(context, '您需要安裝微信客戶端', Toast.LENGTH_LONG).show(); return;}//構(gòu)建發(fā)送文件體WXFileObject fileObject = new WXFileObject();byte[] fileBytes = readFile(file);//設(shè)置需要發(fā)送的文件byte[]fileObject.setFileData(fileBytes);fileObject.setFilePath(file.getAbsolutePath());//使用媒體消息分享WXMediaMessage msg = new WXMediaMessage(fileObject);//這個title有講究,最好設(shè)置為帶后綴的文件名,否則可能分享到微信后無法讀取msg.title = file.getName();//設(shè)置顯示的預(yù)覽圖 需小于32KBif (thumbId <= 0) thumbId = R.mipmap.ic_launcher;msg.thumbData = readBitmap(context, thumbId);//發(fā)送請求SendMessageToWX.Req req = new SendMessageToWX.Req();//創(chuàng)建唯一標(biāo)識req.transaction = String.valueOf(System.currentTimeMillis());req.message = msg;req.scene = SendMessageToWX.Req.WXSceneSession; //WXSceneSession:分享到對話// 通過WXAPIFactory工廠,獲取IWXAPI的實例IWXAPI api = WXAPIFactory.createWXAPI(context, WXEntryActivity.APP_ID, true);// 將應(yīng)用的appId注冊到微信api.registerApp(WXEntryActivity.APP_ID);api.sendReq(req); } // 判斷是否安裝指定app public static boolean isInstallApp(Context context, String app_package) {final PackageManager packageManager = context.getPackageManager();List<PackageInfo> pInfo = packageManager.getInstalledPackages(0);if (pInfo != null) { for (int i = 0; i < pInfo.size(); i++) {String pn = pInfo.get(i).packageName;if (app_package.equals(pn)) { return true;} }}return false; } /** * 圖片讀取成byte[] */ private static byte[] readBitmap(Context context, int resourceId) {Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId);ByteArrayOutputStream bos = new ByteArrayOutputStream();try { bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos); return bos.toByteArray();} catch (Exception e) { e.printStackTrace();} finally { closeQuietly(bos);}return null; } /** * file文件讀取成byte[] */ private static byte[] readFile(File file) {RandomAccessFile rf = null;byte[] data = null;try { rf = new RandomAccessFile(file, 'r'); data = new byte[(int) rf.length()]; rf.readFully(data);} catch (Exception exception) { exception.printStackTrace();} finally { closeQuietly(rf);}return data; } //關(guān)閉讀取file private static void closeQuietly(Closeable closeable) {try { if (closeable != null) {closeable.close(); }} catch (Exception exception) { exception.printStackTrace(); }}

效果如下:

Android實現(xiàn)app分享文件到微信功能

二、調(diào)用系統(tǒng)分享方法,把文件直接發(fā)送到微信

此種方式的好處就是不依賴微信SDK,調(diào)用系統(tǒng)提供的分享彈窗來分享到微信。

/** * 直接文件到微信好友 * * @param picFile 文件路徑 */ public static void shareWechatFriend(Context mContext, File picFile) { //首先判斷是否安裝微信if (isInstallApp(mContext, ShareUtils.PACKAGE_WECHAT)) { Intent intent = new Intent(); intent.setPackage(PACKAGE_WECHAT); intent.setAction(Intent.ACTION_SEND); String type = '*/*'; for (int i = 0; i < MATCH_ARRAY.length; i++) {//判斷文件的格式if (picFile.getAbsolutePath().toString().contains(MATCH_ARRAY[i][0].toString())) { type = MATCH_ARRAY[i][1]; break;} } intent.setType(type); Uri uri = null; if (picFile != null) {//這部分代碼主要功能是判斷了下文件是否存在,在android版本高過7.0(包括7.0版本)//當(dāng)前APP是不能直接向外部應(yīng)用提供file開頭的的文件路徑,//需要通過FileProvider轉(zhuǎn)換一下。否則在7.0及以上版本手機將直接crash。try { ApplicationInfo applicationInfo = mContext.getApplicationInfo(); int targetSDK = applicationInfo.targetSdkVersion; if (targetSDK >= Build.VERSION_CODES.N && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {uri = FileProvider.getUriForFile(mContext, mContext.getApplicationContext().getPackageName() + '.fileprovider', picFile); } else {uri = Uri.fromFile(picFile); } intent.putExtra(Intent.EXTRA_STREAM, uri);} catch (Exception e) { e.printStackTrace();} } intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (getVersionCode(mContext, PACKAGE_WECHAT) > VERSION_CODE_FOR_WEI_XIN_VER7) {// 微信7.0及以上版本intent.setAction(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_STREAM, uri); } mContext.startActivity(Intent.createChooser(intent, '分享文件'));} else { Toast.makeText(mContext, '您需要安裝微信客戶端', Toast.LENGTH_LONG).show();} } // 建立一個文件類型與文件后綴名的匹配表 private static final String[][] MATCH_ARRAY = { //{后綴名, 文件類型} {'.3gp', 'video/3gpp'}, {'.apk', 'application/vnd.android.package-archive'}, {'.asf', 'video/x-ms-asf'}, {'.avi', 'video/x-msvideo'}, {'.bin', 'application/octet-stream'}, {'.bmp', 'image/bmp'}, {'.c', 'text/plain'}, {'.class', 'application/octet-stream'}, {'.conf', 'text/plain'}, {'.cpp', 'text/plain'}, {'.doc', 'application/msword'}, {'.exe', 'application/octet-stream'}, {'.gif', 'image/gif'}, {'.gtar', 'application/x-gtar'}, {'.gz', 'application/x-gzip'}, {'.h', 'text/plain'}, {'.htm', 'text/html'}, {'.html', 'text/html'}, {'.jar', 'application/java-archive'}, {'.java', 'text/plain'}, {'.jpeg', 'image/jpeg'}, {'.jpg', 'image/jpeg'}, {'.js', 'application/x-javascript'}, {'.log', 'text/plain'}, {'.m3u', 'audio/x-mpegurl'}, {'.m4a', 'audio/mp4a-latm'}, {'.m4b', 'audio/mp4a-latm'}, {'.m4p', 'audio/mp4a-latm'}, {'.m4u', 'video/vnd.mpegurl'}, {'.m4v', 'video/x-m4v'}, {'.mov', 'video/quicktime'}, {'.mp2', 'audio/x-mpeg'}, {'.mp3', 'audio/x-mpeg'}, {'.mp4', 'video/mp4'}, {'.mpc', 'application/vnd.mpohun.certificate'}, {'.mpe', 'video/mpeg'}, {'.mpeg', 'video/mpeg'}, {'.mpg', 'video/mpeg'}, {'.mpg4', 'video/mp4'}, {'.mpga', 'audio/mpeg'}, {'.msg', 'application/vnd.ms-outlook'}, {'.ogg', 'audio/ogg'}, {'.pdf', 'application/pdf'}, {'.png', 'image/png'}, {'.pps', 'application/vnd.ms-powerpoint'}, {'.ppt', 'application/vnd.ms-powerpoint'}, {'.prop', 'text/plain'}, {'.rar', 'application/x-rar-compressed'}, {'.rc', 'text/plain'}, {'.rmvb', 'audio/x-pn-realaudio'}, {'.rtf', 'application/rtf'}, {'.sh', 'text/plain'}, {'.tar', 'application/x-tar'}, {'.tgz', 'application/x-compressed'}, {'.txt', 'text/plain'}, {'.wav', 'audio/x-wav'}, {'.wma', 'audio/x-ms-wma'}, {'.wmv', 'audio/x-ms-wmv'}, {'.wps', 'application/vnd.ms-works'}, {'.xml', 'text/plain'}, {'.z', 'application/x-compress'}, {'.zip', 'application/zip'}, {'', '*/*'} };

效果如下:

Android實現(xiàn)app分享文件到微信功能

以上,就是app通過微信分享文件的2種解決方式。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: 微信
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品入口久久| 麻豆精品久久| 国产麻豆一区二区三区精品视频| 欧美丝袜一区| 不卡在线一区| 热久久国产精品| 午夜精品福利影院| 日韩av黄色在线| 日韩国产在线不卡视频| 美女网站视频一区| 91久久国产| 日韩精品一区二区三区免费视频| 亚洲+小说+欧美+激情+另类| 欧美一级一区| 精品中文字幕一区二区三区四区| 精品久久91| 欧美福利一区| 午夜一级久久| 国产三级一区| 波多视频一区| 久久福利一区| 国产精品对白| 久久精品青草| 日本va欧美va欧美va精品| 国产精品毛片视频| 日韩在线观看不卡| 夜夜嗨av一区二区三区网站四季av| 精品国产一区二区三区性色av| 亚洲综合电影| 中文字幕乱码亚洲无线精品一区| 国产精品日本一区二区不卡视频 | 亚洲人成在线影院| 国产一区二区三区黄网站| 国产精品美女| 日本在线高清| 国产三级精品三级在线观看国产| 久久精选视频| 欧美激情99| 亚洲久久一区| 不卡中文一二三区| av中文资源在线资源免费观看| 在线一区二区三区视频| 亚洲福利精品| 亚洲欧美网站在线观看| 成人欧美一区二区三区的电影| 久久99伊人| 日韩在线二区| 国产精品不卡| 国产精品久久| 欧美日韩一区二区高清| 自拍自偷一区二区三区| 欧美va天堂在线| 欧美男人天堂| 精品久久久亚洲| 国产精品观看| 国产欧美一区二区三区精品观看 | 一区二区三区四区日本视频| 爽爽淫人综合网网站| 蜜臀av免费一区二区三区| 国产精品白丝一区二区三区| 日本在线高清| 黑人精品一区| 日韩在线综合| 另类专区亚洲| 国产资源在线观看入口av| 麻豆精品久久久| 国产精品1区| 欧美a在线观看| 麻豆国产91在线播放| 久久精品国产精品亚洲毛片| 欧美1区2区3| 丝袜诱惑一区二区| 日韩国产一区二区| 久久久人人人| 免费人成在线不卡| 日韩国产在线观看一区| 美女视频黄久久| 日韩精品1区| 国产精品视区| 国产高清不卡| 欧美一级精品| 日韩高清国产一区在线| 精品一区av| 另类亚洲自拍| 久久av免费| 婷婷中文字幕一区| 青青草视频一区| 精品一区二区三区中文字幕视频 | 香蕉久久一区| 国产精品原创| 综合一区二区三区| 国产一区国产二区国产三区| 久久精品电影| 美日韩一区二区三区| 欧美成人亚洲| 国产一区二区精品福利地址| 免费成人性网站| 日韩一区二区三区四区五区| 亚洲97av| 91精品国产调教在线观看| 日韩欧美久久| 国产一区欧美| а√在线中文在线新版| 日韩激情一区二区| 日韩亚洲精品在线| 国产精品黑丝在线播放| 欧美自拍一区| 美女精品在线| 亚洲一级少妇| 精品国产乱码久久久| 久久精品av麻豆的观看方式| 亚洲永久字幕| 欧美91福利在线观看| 国产中文在线播放| 国产激情久久| 国产伦精品一区二区三区在线播放 | 激情综合亚洲| 久久精品国产99| 欧美日韩夜夜| 亚洲三级观看| 五月国产精品| 日本午夜精品久久久| 亚洲精品自拍| 亚洲日产国产精品| 蜜臀av国产精品久久久久| 久久亚洲成人| 久久久精品久久久久久96| 日韩一区电影| 久久在线电影| 激情五月色综合国产精品| 久久精品免费一区二区三区| 久久精品欧美一区| 欧美综合另类| 欧美在线亚洲| 水蜜桃久久夜色精品一区的特点| 国产模特精品视频久久久久| 国产福利一区二区三区在线播放| 99视频+国产日韩欧美| 欧美日韩四区| 久久国产精品久久久久久电车| 久久精品欧美一区| 亚洲国内精品| 亚洲ww精品| 国产一区二区三区国产精品| 亚洲va中文在线播放免费| 亚洲午夜黄色| 日韩精品免费视频一区二区三区| 国产情侣一区在线| 国模精品一区| 视频一区欧美日韩| 国产精品超碰| 欧美精品一区二区三区精品| 久久香蕉精品| 精品无人区麻豆乱码久久久| 国产 日韩 欧美一区| 91精品蜜臀一区二区三区在线| 亚洲少妇在线| 欧美国产另类| 岛国av在线播放| 久久夜夜操妹子| 亚洲日本欧美| 精品不卡一区| 在线日韩成人| 亚洲精品福利电影| 蜜桃一区二区三区在线观看| 国产精品久久久久久模特| 午夜欧美巨大性欧美巨大| 亚洲一区二区三区久久久| 国产自产自拍视频在线观看| 日韩精品一二三区| 国产精品一线天粉嫩av| 亚洲高清成人| 狠狠久久伊人中文字幕| 亚洲日本欧美| 尤物精品在线| 成人在线视频免费| 国产日韩在线观看视频| 亚洲综合欧美| 亲子伦视频一区二区三区| 国产精品久久久久77777丨| 亚洲人成网77777色在线播放 | 欧美片第1页| 久久精品资源| 日韩不卡手机在线v区| 久久久影院免费| 日韩精品91| 久久精品91| 欧美sss在线视频| 精品欧美一区二区三区在线观看| 国产精品一区二区精品视频观看| 丝袜美腿一区二区三区| 日韩一级网站| 亚洲深爱激情| 日韩一区精品视频| 亚洲青青久久| 日韩黄色免费网站| 日韩av中文字幕一区| 日韩精品国产欧美| 国产精品伦一区二区| 国产精品一区二区av日韩在线|