android 系統分享.(解決微信瀏覽器分享,分享文字,圖片)

  此次這個項目.用到了分享功能.以前作的項目分享是經過shareSDK作的.shareSDK集成了不少主流具備分享功能的軟件,簡單幾句代碼就能分享到不一樣渠道,確實很好,也很方便.可是,隨着第三方分享功能的升級,不少經過shareSDK分享一樣也須要在第三方分享平臺申請,驗證.也很麻煩.android

 android自帶了系統的分享功能.可快速搜索到手機內具備分享功能的程序.不用去第三方分享平臺驗證.因此此次爲了方便,採用了調用android系統分享來實現其功能.瀏覽器

 .....原本想一步一步描述個人過程.可是,因爲時間關係.直接仍是上我最終代碼吧.不少開發者不看過程.只看結果.微信

代碼解決問題以下:1.得到手機內具備分享功能軟件.2.分享文本.3.分享本地圖片.4.解決分享下載連接.再微信內瀏覽器直接分享內容.5.因爲微信分享內容特殊.在普通微博分享後,顯示和連接會有問題.故作了特殊處理.網絡

待解決問題:我想經過此種方式.分享來自於網絡的圖片.(不下載到本地).弄了好久沒實現.求高人指點.url

 1 public class Share {
 2     public static void shareMsg(Context context, String activityTitle, String msgTitle, String content, String imgPath) {
 3         Intent intent = new Intent(Intent.ACTION_SEND);
 4         if (imgPath == null || imgPath.equals("")) {
 5             intent.setType("text/plain"); // 純文本
 6         } else {
 7             File f = new File(imgPath);
 8             if (f != null && f.exists() && f.isFile()) {
 9                 intent.setType("image/png");
10                 Uri u = Uri.fromFile(f);
11                 intent.putExtra(Intent.EXTRA_STREAM, u);
12             }
13         }
14         intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);
15         // gets the list of intents that can be loaded.
16         boolean isWeixin = false;
17         List<ResolveInfo> resInfos = context.getPackageManager().queryIntentActivities(intent, 0);
18         List<Intent> targetedShareIntents = new ArrayList<Intent>();
19         for (ResolveInfo info : resInfos) {
20             Intent targeted = new Intent(Intent.ACTION_SEND);
21             targeted.setType("text/plain");
22             ActivityInfo activityInfo = info.activityInfo;
23             // judgments : activityInfo.packageName, activityInfo.name, etc.
24             String packageName = activityInfo.packageName.toLowerCase();
25             if (packageName.contains("bluetooth") || packageName.contains("bluetooth")) {
26                 continue;
27             }
28             String msgText = content;
29             if (packageName.contains("com.tencent.mm")) {
30                 String msgText1 = context.getString(R.string.download_url_mm);
31                 msgText += msgText1;
32             } else {
33                 String msgText2 = context.getString(R.string.download_url);
34                 msgText += msgText2;
35             }
36             targeted.putExtra(Intent.EXTRA_TEXT, msgText);
37             targeted.setPackage(activityInfo.packageName);
38             targetedShareIntents.add(targeted);
39         }
40         Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "分享到:");
41         if (chooserIntent == null) {
42             return;
43         }
44 
45         chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {}));
46         try {
47             context.startActivity(chooserIntent);
48         } catch (android.content.ActivityNotFoundException ex) {
49             Toast.makeText(context, "Can't find share component to share", Toast.LENGTH_SHORT).show();
50         }
51 
52     }

上述代碼.可控制過慮程序,監聽具體程序點擊..外部直接調用該類靜態方法.傳入參數便可.spa

剛剛說到微信分享具備下載連接的內容時.打開微信瀏覽器.不能進行直接下載.(多是微信作了特殊保護處理).下載連接地方作以下修改便可.3d

<string name="download_url_mm">下載地址:\n &lt;a href=\"http://42.96.192.186/upload/apk/readfishing.apk#weixin.qq.com\"&gt;點擊我下載..&lt;/a&gt;\n</string>

其餘應用下載內容字符串爲:code

 <string name="upload_url">"  下載地址: http://42.96.192.186/upload/apk/readfishing.apk</string>

有的讀者可能會問,既然第一個download_url_mm字符串解決微信瀏覽器直接下載問題.就直接用第一個.爲何還要過濾呢..如下是若是用第一種字符串進行分享.在微博內顯示.如圖1.這樣,"點擊我下載"是很差用的component

 

 而用upload_url字符串.顯示效果爲:這樣直接點擊下載連接便可進行apk下載.blog

 

第一次寫技術博客.寫的很差.請多多關照.安卓技術沒到位.代碼不規範.多多保函

相關文章
相關標籤/搜索