Android 接收其他應用的分享 原

廢話

首先附上系統分享內容到其他應用的方法:

https://my.oschina.net/u/1462828/blog/2086000

分享是調起系統分享接口,是拿不到分享成功與否的狀態的,並且分享到其他APP了之後一般不會帶有來源自xxxAPP的這種標識,因爲對方應用不知道分享是來源自什麼地方什麼應用。

分享主要是根據文件的類型進行劃分,有圖片、視頻、音頻、文字等常見類型,也有所有的文件類型,即:(*/*)

常見的幾種類型:(text/plain)、(image/*)、(audio/*)、(video/*)、(*/*)

接收分享

1、新建一個Activity,這裏叫ShareReceiveActivity,並在AndroidManifest裏面註冊它,然後根據類型,加上相關的配置代碼,具體如下:

        <activity android:name=".module.share.ShareReceiveActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="audio/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="audio/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="video/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="video/*" />
            </intent-filter>
        </activity>

2、配置好了之後,往用於接收分享的Activity的onCreate方法裏面加接收代碼:

        Intent intent = getIntent();
        String action = intent.getAction();
        String type = intent.getType();

        if (Intent.ACTION_SEND.equals(action) && type != null) {
            Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
            if ("audio/".equals(type)) {
                // 處理髮送來音頻
                ToastUtils.showToast(getContext(),"");
            } else if (type.startsWith("video/")) {
                // 處理髮送來的視頻
            } else if (type.startsWith("*/")) {
                //處理髮送過來的其他文件
            }
        } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
            ArrayList<Uri> arrayList = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
            if (type.startsWith("audio/")) {
                // 處理髮送來的多個音頻
            } else if (type.startsWith("video/")) {
                //處理髮送過來的多個視頻
            } else if (type.startsWith("*/")) {
                //處理髮送過來的多個文件
            }
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章