Android分享操作

現(xiàn)在用的比較多的都是三方的分享俩莽,其實(shí)安卓自帶的就有簡單的分享缓溅。

在構(gòu)建Intent時,可以指定這個Intent需要觸發(fā)的actions缤苫。比如ACTION_SEND,該action表明該intent用于從一個activity發(fā)送數(shù)據(jù)到另外一個activity的墅拭,甚至可以跨進(jìn)程之間的數(shù)據(jù)發(fā)送活玲。系統(tǒng)會自動識別出能夠兼容接受的這些數(shù)據(jù)的activity。如果這些選擇有多個谍婉,則把這些activity顯示給用戶進(jìn)行選擇舒憾;如果只有一個,則立即啟動該Activity穗熬。

分享數(shù)據(jù)

分享簡單的數(shù)據(jù)

 Intent sendIntent = new Intent();
 sendIntent.setAction(Intent.ACTION_SEND);
 sendIntent.putExtra(Intent.EXTRA_TEXT,"This is my text to send");
 sendIntent.setType("text/plain");
 startActivity(sendIntent);

在不同的程序之間使用intent收發(fā)數(shù)據(jù)是在社交分享內(nèi)容時最常用的方法镀迂。
若有多個匹配的程序,則系統(tǒng)會把他們都給篩選出來唤蔗,并呈現(xiàn)Dialog給用戶進(jìn)行選擇探遵。
如果設(shè)備上安裝有某個能夠匹配ACTION_SEND且MIME類型為text/plain的程序,則Android系統(tǒng)會立即執(zhí)行它妓柜。
不過為intent調(diào)用了Intent.createChooser(),那么Android總是會顯示可供選擇:

 startActivity(Intent.createChooser(sendIntent,getResources().getText(R.string.send_to)));

看下顯示效果:

image.png
image.png
image.png

分享圖片

如果想要分享圖片不是文字的話箱季,首先得將setType設(shè)置成“image/jpeg”,如果不確定圖片類型直接使用"image/*棍掐,同時數(shù)據(jù)需要結(jié)合設(shè)置特定的MIME類型藏雏,EXTRA_STREAM里面放置數(shù)據(jù)的URI。

   Intent sendIntent = new Intent();
   sendIntent.setAction(Intent.ACTION_SEND);
   sendIntent.putExtra(Intent.EXTRA_STREAM, mCroppedImageFile.getPath());
   sendIntent.setType("image/");
   startActivity(Intent.createChooser(sendIntent, "分享"));

image.png
image.png
image.png

分享多種類型數(shù)據(jù)

如果分享3張JPEG的圖片作煌,那么MIME類型仍然是image/jpeg掘殴。如果是不同圖片格式的話赚瘦,應(yīng)該是用image/來匹配那些可以接收任何圖片類型的activity。如果需要分享多種不同類型的數(shù)據(jù)奏寨,可以使用/*來表示MIME起意。

  • 一次分享多張圖片
                ArrayList<Uri> imageUris = new ArrayList<>();
                imageUris.add(Uri.fromFile(mCroppedImageFile));
                imageUris.add(Uri.fromFile(mCroppedImageFile));

                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
                sendIntent.putExtra(Intent.EXTRA_STREAM, imageUris);
                sendIntent.setType("image/*");
                startActivity(Intent.createChooser(sendIntent, "分享"));

可以看到同時分發(fā)了2張圖片:

image.png

接收從其他App傳送來的數(shù)據(jù)

讓自己的app可以接受數(shù)據(jù)

Intent filters告訴Android系統(tǒng)一個程序愿意接受的數(shù)據(jù)類型。

 <activity
            android:name=".MainActivity"
            android:theme="@style/CustomActionBarTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>
    </activity>

上面將當(dāng)前app的MainActivity可以接受文字服爷。然后我們用另外一個app來分享文字:

image.png

上圖中的TraningApp就是我自己定義能接受文字分享的app

處理接受到的數(shù)據(jù)

為了處理從Intent帶來的數(shù)據(jù)杜恰,可以通過調(diào)用getIntent()方法來獲取到Intent對象。拿到這個對象后仍源,我們可以對其中面的數(shù)據(jù)進(jìn)行判斷心褐,從而決定下一步行為。

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

        if (Intent.ACTION_SEND.equals(action)){
            if ("text/plain".equals(type)){
                Log.e(TAG, "ACTION_SEND:"+intent.getStringExtra(Intent.EXTRA_TEXT) );
            }
        }

然后發(fā)送消息:

                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);
                sendIntent.putExtra(Intent.EXTRA_TEXT, "測試文字");
                sendIntent.setType("text/plain");
                startActivity(Intent.createChooser(sendIntent, "分享"));


查看log日志:

07-26 12:32:51.315 9746-9746/com.example.frc.trainingapp E/MainActivity: ACTION_SEND:測試文字

同樣我們可以添加圖片的處理:

        if (Intent.ACTION_SEND.equals(action)) {
            if ("text/plain".equals(type)) {
                Log.e(TAG, "ACTION_SEND:" + intent.getStringExtra(Intent.EXTRA_TEXT));
            } else if ("image/*".equals(type)) {
                Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
                Log.e(TAG, "ACTION_SEND_URI:"+uri.toString());
            }
        }

查看Log日志:

07-26 14:09:37.135 30944-30944/com.yanxiu.yxsanke_android E/SK::: /storage/emulated/0/YXSanKe_Android/res/nnnn.jpg

note:需要注意的是處理發(fā)送過來的數(shù)據(jù)可能會是耗時操作笼踩,建議不要在UI線程進(jìn)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逗爹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嚎于,更是在濱河造成了極大的恐慌掘而,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件于购,死亡現(xiàn)場離奇詭異袍睡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肋僧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門斑胜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫌吠,你說我怎么就攤上這事止潘。” “怎么了辫诅?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵凭戴,是天一觀的道長。 經(jīng)常有香客問我炕矮,道長么夫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任肤视,我火速辦了婚禮魏割,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钢颂。我一直安慰自己钞它,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遭垛,像睡著了一般尼桶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锯仪,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天泵督,我揣著相機(jī)與錄音,去河邊找鬼庶喜。 笑死小腊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的久窟。 我是一名探鬼主播秩冈,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斥扛!你這毒婦竟也來了入问?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤稀颁,失蹤者是張志新(化名)和其女友劉穎芬失,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匾灶,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棱烂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阶女。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颊糜。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖张肾,靈堂內(nèi)的尸體忽然破棺而出芭析,到底是詐尸還是另有隱情锚扎,我是刑警寧澤吞瞪,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站驾孔,受9級特大地震影響芍秆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翠勉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一妖啥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧对碌,春花似錦荆虱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诉位。三九已至,卻和暖如春菜枷,著一層夾襖步出監(jiān)牢的瞬間苍糠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工啤誊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岳瞭,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓蚊锹,卻偏偏與公主長得像瞳筏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枫耳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程乏矾,因...
    小菜c閱讀 6,358評論 0 17
  • 顯示Intent和隱式Intent Android中的Intent是一個非常重要且常用的類,可以用來在一個組件中啟...
    獅_子歌歌閱讀 1,158評論 0 2
  • 不管那個人迁杨,在極度生氣和亢奮中钻心,不管別人說什么話,你都聽不進(jìn)去铅协,反而說那些越刺激的花捷沸,就會順著桿子往上爬,從而越說...
    吊炸天的小丸子閱讀 335評論 0 0
  • 今天又溫習(xí)了一邊Android中各種屬性動畫的使用以及原理狐史,發(fā)現(xiàn)自己遺漏了很多的知識點(diǎn)痒给,那今天就來總結(jié)一下。 An...
    麥兜叮叮當(dāng)閱讀 391評論 0 1
  • 第一句骏全,我現(xiàn)在過上了晝夜顛倒的生活苍柏,我不到晚上零點(diǎn)我就不能思考問題,所以按一個良好的標(biāo)準(zhǔn)來說姜贡,我現(xiàn)在過的可能是歐洲...
    ClaireJ阿章閱讀 376評論 2 0