生活随笔
收集整理的這篇文章主要介紹了
android 分享图片和视频
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天,簡單講講如何調用手機的分享功能進行分享。
目前實現一鍵分享功能的方式有兩種:
1.需要集成第三方官方SDK包,在獲得官方授權后調用其API來完成一鍵分享功能,例如使用友盟分享等
? ? 優點:無縫集成,功能多
? ? 缺點:需要集成官方的SDK包并通過申請官方的授權才可進行開發
2.不需要使用任何第三方SDK包,可以直接調起實現了分享功能的應用的activity來進行分享
? ? 優點:不需要使用任何第三方SDK包和申請官方授權
? ? 缺點:需要手機安裝你需要分享的應用(這一點非常重要,一開始測試的時候一直不成功,提示“沒有應用可執行此操作”,后來找了很久才發現是我手機沒有安裝相對應的應用,這也是不好方便的地方)
效果圖:
package com.xiaolijuan.sharedome;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.RelativeLayout;import java.io.File;
import java.util.ArrayList;/*** 項目名稱:ShareDome* 類描述:* 創建人:xiaolijuan* 創建時間:2016/1/13 23:48*/
public class ShareActivity extends Activity implements View.OnClickListener {private RelativeLayout mRlShareText, mRlShareSingleimage, mRlShareMultipleimage, mRlShareQQ, mRlShareTencent, mRlShareWechat, mRlShareMicroblog, mRlShareOther;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_share);bindView();}private void bindView() {mRlShareText = (RelativeLayout) findViewById(R.id.rl_share_text);mRlShareSingleimage = (RelativeLayout) findViewById(R.id.rl_share_singleimage);mRlShareMultipleimage = (RelativeLayout) findViewById(R.id.rl_share_multipleimage);mRlShareQQ = (RelativeLayout) findViewById(R.id.rl_share_qq);mRlShareTencent = (RelativeLayout) findViewById(R.id.rl_share_qqtencent);mRlShareWechat = (RelativeLayout) findViewById(R.id.rl_share_wechat);mRlShareMicroblog = (RelativeLayout) findViewById(R.id.rl_share_microblog);mRlShareOther = (RelativeLayout) findViewById(R.id.rl_share_other);mRlShareText.setOnClickListener(new ShareText());mRlShareSingleimage.setOnClickListener(new ShareSingleImage());mRlShareMultipleimage.setOnClickListener(new ShareMultipleImage());mRlShareQQ.setOnClickListener(this);mRlShareTencent.setOnClickListener(this);mRlShareWechat.setOnClickListener(this);mRlShareMicroblog.setOnClickListener(this);mRlShareOther.setOnClickListener(this);}//分享文字至所有第三方軟件public class ShareText implements View.OnClickListener {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_TEXT, "這里是分享內容");intent.setType("text/plain");//設置分享列表的標題,并且每次都顯示分享列表startActivity(Intent.createChooser(intent, "分享到"));}}//分享單張圖片至所有第三方軟件public class ShareSingleImage implements View.OnClickListener {@Overridepublic void onClick(View v) {String imagePath = Environment.getExternalStorageDirectory() + File.separator + "13e277bb0b9c2e3ab90229463357bf40.jpg";//由文件得到uriUri imageUri = Uri.fromFile(new File(imagePath));Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND);shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);shareIntent.setType("image/*");startActivity(Intent.createChooser(shareIntent, "分享到"));}}//分享多張圖片至所有第三方軟件public class ShareMultipleImage implements View.OnClickListener {@Overridepublic void onClick(View v) {ArrayList<Uri> uriList = new ArrayList<>();String path = Environment.getExternalStorageDirectory() + File.separator;uriList.add(Uri.fromFile(new File(path+"13e277bb0b9c2e3ab90229463357bf40.jpg")));uriList.add(Uri.fromFile(new File(path+"869895e73ddd710e8a132afb37461bf0.jpg")));uriList.add(Uri.fromFile(new File(path+"4753fc4cd47aa1833c70df4c08f4b7fa.jpg")));uriList.add(Uri.fromFile(new File(path+"355ee87cf0ff612331a790f31b3ad113.jpg")));uriList.add(Uri.fromFile(new File(path+"ce61ad4d44e3099d87040f38faabbf56.jpg")));Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);shareIntent.setType("image/*");startActivity(Intent.createChooser(shareIntent, "分享到"));}}@Overridepublic void onClick(View v) {String pakName = "";Intent intent = new Intent(Intent.ACTION_SEND); // 啟動分享發送的屬性intent.setType("text/plain"); // 分享發送的數據類型switch (v.getId()) {case R.id.rl_share_qq:pakName = "com.qzone"; //qq空間break;case R.id.rl_share_qqtencent:pakName = "com.tencent.WBlog"; //騰訊微博break;case R.id.rl_share_wechat:pakName = "com.tencent.mm"; //微信break;case R.id.rl_share_microblog:pakName = "com.sina.weibo"; //微博break;case R.id.rl_share_other:break;default:break;}intent.setPackage(pakName);intent.putExtra(Intent.EXTRA_TEXT, "這里是分享內容"); // 分享的內容this.startActivity(Intent.createChooser(intent, ""));// 目標應用選擇對話框的標題;}
}
由于分享功能是使用隱式調用Activtiy實現的,則需在響應的Activity中聲明intent-filter,在對應的activity的xml里加上
<intent-filter><action android:name="android.intent.action.SEND" /><category android:name="android.intent.category.DEFAULT" />
</intent-filter>
這上面的代碼可以分享圖片,文本內容到手機安裝的能分享的軟件,包括QQ,微信。但是,如果分享視頻時,會發現無法分享到QQ里,這是因為視頻只能單個分享,一次只能分享一個視頻,所以需要修改代碼。
把分享圖片的
Intent shareIntent =
new Intent()
;
shareIntent.setAction(
Intent.
ACTION_SEND_MULTIPLE)
;
shareIntent.putParcelableArrayListExtra(
Intent.
EXTRA_STREAM, uriList)
;
shareIntent.setType(
"image/*")
;
startActivity(
Intent.
createChooser(
shareIntent, "分享到"))
;
修改為
Intent shareIntent =
new Intent()
;
shareIntent.setAction(
Intent.
ACTION_SEND)
; //分享視頻只能單個分享
shareIntent.putExtra(
Intent.
EXTRA_STREAM, “視頻的URI”)
;
shareIntent.setType(
"audio/*")
;
startActivity(
Intent.
createChooser(
shareIntent, "分享到"))
;
源碼下載:http://download.csdn.net/detail/bzlj2912009596/9876105
android 分享圖片和視頻就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 分享图片和视频的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。