1. 程式人生 > >Android輕鬆實現分享功能

Android輕鬆實現分享功能

在Android開發中,要實現分享功能,可能首先想到第三方的ShareSDK,其實,想要分享一些圖片,文字之類的完全沒必要在App中整合第三方SDK,利用原生的SDK就可以輕鬆實現分享功能。

Activity的跳轉方式

  眾所周知,Activity的跳轉方式分為兩種,分別為顯示跳轉隱式跳轉

顯示跳轉

  顯示跳轉比較簡單,直接看程式碼

Intent intent=new Intent(MainActivity.this, OtherActivity.class); 
startActivity(intent);

隱式跳轉

  隱式跳轉複雜一點,同樣,先看下程式碼

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/jpeg");
startActivity(shareIntent);

可以看到隱式跳轉Activity不像顯示跳轉那樣,直接在Intent中設定類名進行跳轉。隱式跳轉的步驟如下

  1. 例項化Intent。
  2. 設定Action。
  3. 設定Extra(可選)。
  4. 設定型別(可選)
  5. 通過startActivity啟動相應的Activity。

步驟2中的setAction(),其中需要的引數是,你要跳轉的目標Activity所設定的Action,設定Action可以在AndroidManifest.xml中進行設定。setAction()中的引數就是過濾條件,決定我們跳轉到哪個Activity。同樣,setType()中的引數也是過濾條件,如果說setAction()是一級過濾,那麼setType()則是二級過濾,過濾的更加細緻。putExtra()中的引數,就是跳轉到目標Activity攜帶的引數。

  瞭解過了Activity的跳轉方式,下面就進入本文的重點,為軟體實現分享功能。

實現分享功能

分享圖片

  由於需要呼叫系統的Activity,所以,我們只能選擇Activity的隱式跳轉方式,先看下實現分享圖片的程式碼

public static void shareImage(Context context, Uri uri, String title) {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        shareIntent.setType("image/jpeg");
        context.startActivity(Intent.createChooser(shareIntent, title));
    }

這裡主要說一下其中的一些引數,uri就是你要分享的圖片的路徑,title就是分享時顯示的文字,額…,為了不讓大家誤解,下面看一張圖,圖中紅框標起來的就是title



再來看一下這個程式碼
Intent.createChooser(shareIntent, title)

官方文件的介紹如下

Builds a new ACTION_CHOOSER Intent that wraps the given target intent, also optionally supplying a title.

上面一段話的主要意思就是,就是為目標Activity提供一個標題。

分享文字

  文字分享和圖片分享大同小異,直接看程式碼

public static void shareText(Context context, String extraText) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.action_share));
        intent.putExtra(Intent.EXTRA_TEXT, extraText);//extraText為文字的內容
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//為Activity新建一個任務棧
        context.startActivity(
                Intent.createChooser(intent, context.getString(R.string.action_share)));//R.string.action_share同樣是標題
    }

其中與分享圖片不同的程式碼已經在程式碼中進行了註釋。

實現可以被系統分享呼叫的App

  以上實現了,通過系統呼叫其他的App進行分享,那麼,我們怎樣讓自己的App可以被系統列入可以分享的App呢?
其實很簡單,只要在AndroidManifest.xml中Activity的action標籤設定以下值即可

android.intent.action.SEND

看下示例程式碼

<activity android:name=".ShareActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

這樣,在系統呼叫可以用來分享的App時,我們的軟體就會出現在列表中了。

結束語