1. 程式人生 > >Android呼叫系統分享和指定app分享-微信朋友圈圖文分享和qq分享

Android呼叫系統分享和指定app分享-微信朋友圈圖文分享和qq分享

1.呼叫系統分享

根據每個手機的情況不同,開啟的分享面板內容也是不一樣的。其實本質上,分享的目標app是外掛化開發,這樣呼叫分享的時候,才能開啟對應的Activity,而不需要開啟一個完整的app程序。

  1. /** 
  2.      * 呼叫本地分享文字 
  3.      */
  4.     privatevoid showLocationShare(int request) {  
  5.         Intent sendIntent = new Intent();  
  6.         sendIntent.setAction(Intent.ACTION_SEND);  
  7.         sendIntent.putExtra(Intent.EXTRA_TEXT, "這是分享的內容!"
    );//注意:這裡只是分享文字內容
  8.         sendIntent.setType("text/plain");  
  9.         startActivityForResult(sendIntent, request);  
  10.     }  
呼叫系統的分享功能可以不用申請API整合,比較方便,但是不好的地方就是沒有回撥可以知道是否分享了,分享是否成功了。

2.指定app分享

首先要知道app的包名和Activity的名稱。通過以下方法獲得手機上全部可用於分享的app的包名和Activity名稱。

  1. Intent share = new Intent(android.content.Intent.ACTION_SEND);  
  2.         PackageManager packageManager = getPackageManager();  
  3.         List<ResolveInfo> list=packageManager.queryIntentActivities(share, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);  
  4.         for(ResolveInfo info:list){  
  5.             MyUtils.log(""+info.activityInfo.packageName+"---"+info.activityInfo.name);  
  6.         }  
得到包名和activity名稱後,指定目標app分享。以QQ和微信舉例。
  1. Intent sendIntent = new Intent();  
  2.             sendIntent.setAction(Intent.ACTION_SEND);  
  3.             sendIntent.putExtra(Intent.EXTRA_TEXT, shareTittle + "\n" + shareContent + "\n" + shareUrl);  
  4.             sendIntent.setType("text/plain");  
  5. //          sendIntent.setClassName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");//微信朋友
  6. //          sendIntent.setClassName("com.tencent.mobileqq", "cooperation.qqfav.widget.QfavJumpActivity");//儲存到QQ收藏
  7. //          sendIntent.setClassName("com.tencent.mobileqq", "cooperation.qlink.QlinkShareJumpActivity");//QQ面對面快傳
  8. //          sendIntent.setClassName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.qfileJumpActivity");//傳給我的電腦
  9.             sendIntent.setClassName("com.tencent.mobileqq""com.tencent.mobileqq.activity.JumpActivity");//QQ好友或QQ群
  10. //          sendIntent.setClassName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");//微信朋友圈,僅支援分享圖片
  11.             startActivityForResult(sendIntent, QUN_QUEST);  

3.Android系統分享-微信朋友圈分享

  1. Bitmap decodeRecource = BitmapFactory.decodeResource(getResources(), R.drawable.app_icon);  
  2.             File file = writeFileByBitmap2(decodeRecource);  
  3.             Uri img = Uri.fromFile(file);//獲得一張圖片的Uri
分享單張圖片到朋友圈
  1. Intent send = new Intent();  
  2.             <strong>send.setAction(Intent.ACTION_SEND)</strong>;  
  3.             send.putExtra(Intent.<strong>EXTRA_STREAM</strong>, img);  
  4.             send.setType("image/*");  
  5.             send.setClassName("com.tencent.mm""com.tencent.mm.ui.tools.ShareToTimeLineUI");//微信朋友圈,僅支援分享圖片
  6.             startActivityForResult(send, WX_QUEST);  
分享多張圖片到朋友圈
  1. ArrayList<Uri> uriList = new ArrayList<Uri>();  
  2.             uriList.add(img);  
  3.             uriList.add(img);  
  4.             Intent send = new Intent();  
  5.             <span style="color:#ff6666;"><strong>send.setAction(Intent.ACTION_SEND_MULTIPLE);</strong></span>  
  6.             send.putExtra(Intent.EXTRA_STREAM, <strong>uriList</strong>);  
  7.             send.setType("image/*");  
  8.             send.setClassName("com.tencent.mm""com.tencent.mm.ui.tools.ShareToTimeLineUI");//微信朋友圈,僅支援分享圖片
  9.             startActivityForResult(send, WX_QUEST);  

微信分享圖片+文字

用上面的方法新增圖片分享,如果要新增文字,再新增一句程式碼就可以

  1. send.putExtra("<span style="color:#ff0000;"><strong>Kdescription</strong></span>", shareContent+shareUrl);