亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android Developers Training】 32. 向其它應

系統 1837 0

注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術一般,由于喜愛安卓而產生了翻譯的念頭,純屬個人興趣愛好。

原文鏈接: http://developer.android.com/training/sharing/send.html


當你構造了一個intent,你需要制定你的intent將會“ 激活 ”的行為。Andriud定義了一些行為,就像你所料想的一樣,這里面就有 ACTION_SEND 這個行為,它表明了這個intent是將一個數據從一個Activity發送至另一個Activity,甚至這一操作可能會跨進程執行。為了將數據發送中另一個activity,所有你需要做的就是指定這個數據以及它的類型,系統會尋找出于其要求相符合的所有activity,并將它們展現給用戶(如果有多個選擇);或者直接啟動這個activity(只有一個符合的activity)。類似的,你可以將你的activity所能支持的來自其它應用的數據類型在你的清單文件中聲明出來。

在應用之間通過intent發送和接收數據在社交分享內容一塊最為常用。Intent允許同于使用他們最喜愛的應用快速和簡單的分享信息。

Note:

使用 ShareActionProvider 將一個分享行為添加到一個 ActionBar 是最好的方法,這在API Level 14及以上的平臺上可以使用。 ShareActionProvider 將會在課程: Adding an Easy Share Action 中做進一步討論。

?

一). 發送文字內容

最直接和通用的使用 ACTION_SEND 行為的場景是將文本內容從一個activity發送至另一個activity。例如,內置的瀏覽器應用可以將當前頁面的URL以文本形式分享給任何一個應用。這對于將一個文章或者網站通過Email或者社交網站分享給朋友是很有用的。下面就是實現這樣的分享的代碼:

      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過濾器能夠匹配 ACTION_SEND 和" text/plain "的MIME類型,Android就會執行這個應用;如果不止一個應用能夠符合要求,系統會展示一個單選對話框(即一個應用選擇器),來讓用戶選擇一個應用。如果你為這個Intent調用 Intent.createChooser() ,Android將會 永遠 顯示這個選擇對話框,這有一些優勢:

  • 哪怕用戶之前已經選擇了一個默認應用,選擇器仍然會顯示出來。
  • 如果沒有匹配的應用,Android會顯示一個系統消息。
  • 你可以自定義對話框的標題。

下面是更新優化后的代碼:

      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(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));
      
    

運行結果如圖1所示。

圖1. 手持設備上選擇器對話框的截圖

另外,你可以為Intent設置一下附加選項(extras): EXTRA_EMAIL EXTRA_CC EXTRA_BCC EXTRA_SUBJECT 等。不過,如果接收intent的應用沒有設計成會使用它們,那么什么事情都不會發生。你也可以使用自定義的附加選項,當然只有接收intent的應用笨笨狗狗理解它們才會有效果。一般而言,你會使用被接收intent應用自己定義的附加選項。

Note:

一些Email應用,比如 Gmail ,會期望一個 String[] 的附加選項,比如: EXTRA_EMAIL EXTRA_CC 。你可以使用 putExtra(String, String[]) 來將它們添加至你的intent。

?

二). 發送二進制內容

二進制數據的分享是將 ACTION_SEND 的行為,恰當的MIME類型,數據的URI放置在名為 EXTRA_STREAM 的附加選項中,這三者結合在一起。下面的例子經常被用來分享一個圖片,但也能用來分享二進制類型的數據內容:

      Intent shareIntent = 
      
        new
      
      
         Intent();

shareIntent.setAction(Intent.ACTION_SEND);

shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);

shareIntent.setType(
      
      "image/jpeg"
      
        );

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

務必記住下面的幾點提示:

  • 你可以使用“ */* ”做為MIME類型,這將只會匹配到可以處理通用數據流的activity。
  • 接受的應用需要響應的權限來訪問 Uri 指向的數據。推薦的操作方式是這樣的:

?

三). 發送多組內容

要分享多組內容,使用 ACTION_SEND_MULTIPLE 行為,和一個指向內容的URI的List。MIME的類型根據你要分享的內容而變化。例如,如果你要分享三張JPEG圖片,那么類型仍然是“ image/jpeg ”。如果是各種圖片格式的混合,那么類型就應該是“ image/* ”,它會尋找能夠處理任意 格式 圖片的Activity。僅在你在分享很多種類型的內容時,才應該使用“ */* ”。如之前所述,解析和處理數據的行為就要看接收intent的應用了。下面是一個發送多組內容數據的例子:

      ArrayList<Uri> imageUris = 
      
        new
      
       ArrayList<Uri>
      
        ();

imageUris.add(imageUri1); 
      
      
        //
      
      
         Add your image URIs here
      
      
        imageUris.add(imageUri2);



Intent shareIntent 
      
      = 
      
        new
      
      
         Intent();

shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);

shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);

shareIntent.setType(
      
      "image/*"
      
        );

startActivity(Intent.createChooser(shareIntent, 
      
      "Share images to.."));
    

如之前所述,確保提供的 URIs 所指向的數據是接收intent應用能夠有權限訪問的數據。

【Android Developers Training】 32. 向其它應用發送簡單數據


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲第一伊人 | 波多野结衣一区二区三区高清在线 | 狠狠色香婷婷久久亚洲精品 | 一级成人毛片 | 久久频这里精品香蕉久久 | 久久99精品国产99久久6男男 | www.国产一区二区三区 | 成人性色大片 | videosex久久麻豆 | a中文字幕1区 | 日本九九视频 | 成人毛片免费观看视频大全 | 男人都懂www深夜免费网站 | 国产精品久久久久久久成人午夜 | 自拍在线视频 | 欧美性视频一区二区三区 | 亚洲国产精品ⅴa在线观看 亚洲国产精品aa在线看 | 黄片毛片在线看 | 国产成人精品影院狼色在线 | 欧美夜夜 | a资源在线 | 99精品视频免费 | 热久久精品免费视频 | 国产一级毛片欧美视频 | 国产一区二区三区视频 | 91人人看| 久久99国产精品 | 4hu四虎| 九九久久视频 | 四虎影视在线观看2022a | 国产第一页福利 | 一级毛片在线播放免费 | 久久成人免费大片 | 亚洲视频免费 | 中文字幕 亚洲精品 第1页 | 男人的午夜| 亚洲国产综合精品中文字幕 | 九色网址 | 日韩精品免费一级视频 | 日韩欧美视频在线播放 | 一区二区中文字幕在线观看 |