<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                > 編寫:[kesenhoo](https://github.com/kesenhoo) - 原文:[http://developer.android.com/training/sharing/send.html](http://developer.android.com/training/sharing/send.html) 當你構建一個intent,你必須指定這個intent需要觸發的actions。Android定義了一些actions,包括ACTION_SEND,這個action表明著這個intent是用來從一個[activity](# "An activity represents a single screen with a user interface.")發送數據到另外一個[activity](# "An activity represents a single screen with a user interface.")的,甚至是跨進程之間的。 為了發送數據到另外一個[activity](# "An activity represents a single screen with a user interface."),你需要做的是指定數據與數據的類型,系統會識別出能夠兼容接受的這些數據的[activity](# "An activity represents a single screen with a user interface.")。如果這些選擇有多個,則把這些[activity](# "An activity represents a single screen with a user interface.")顯示給用戶進行選擇;如果只有一個兼容選擇,則立即啟動該[Activity](# "An activity represents a single screen with a user interface.")。同樣的,你可以在manifest文件的[Activity](# "An activity represents a single screen with a user interface.")描述中添加接受的數據類型。 在不同的程序之間使用intent來發送與接受數據是在社交分享內容的時候最常用的方法。Intent使得用戶用最常用的程序進行快速簡單的分享信息。 **注意:**為ActionBar添加分享功能的最好方法是使用[ShareActionProvider](https://developer.android.com/reference/android/widget/ShareActionProvider.html),它能夠在API level 14以上進行使用。ShareActionProvider會在第3課中進行詳細介紹。 ### 分享文本內容(Send Text Content) ACTION_SEND最直接與最常用的地方是從一個[Activity](# "An activity represents a single screen with a user interface.")發送文本內容到另外一個[Activity](# "An activity represents a single screen with a user interface.")。例如,Android內置的瀏覽器可以把當前顯示頁面的URL作為文本內容分享到其他程序。這是非常有用的,通過郵件或者社交網絡來分享文章或者網址給好友。下面是一段Sample Code: ~~~ 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); ~~~ 如果設備上有安裝某個能夠匹配ACTION_SEND與MIME類型為text/plain程序,那么Android系統會自動把他們都給篩選出來,并呈現Dialog給用戶進行選擇。如果你為intent調用了Intent.createChooser(),那么Android總是會顯示可供選擇。這樣有一些好處: - 即使用戶之前為這個intent設置了默認的action,選擇界面還是會被顯示。 - 如果沒有匹配的程序,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)); ~~~ 效果圖如下: ![share-text-screenshot.png](https://box.kancloud.cn/2015-07-28_55b724707a04a.png "Figure 1. Screenshot of ACTION_SEND intent chooser on a handset.") Optionally,你可以為intent設置一些標準的附加值,例如:EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC, EXTRA_SUBJECT.然而,如果接收程序沒有針對那些做特殊的處理,則不會有對應的反應。 **注意:**一些e-mail程序,例如Gmail,對應接收的是EXTRA_EMAIL與EXTRA_CC,他們都是String類型的,可以使用putExtra(string,string[])方法來添加到intent里面。 ### 分享二進制內容(Send Binary Content) 分享二進制的數據需要結合設置特定的MIME類型`,需要在`EXTRA_STREAM`里面放置數據的URI,下面有個分享圖片的例子,這個例子也可以修改用來分享任何類型的二進制數據: ~~~ 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類型,但是這僅僅會match到那些能夠處理一般數據類型的[Activity](# "An activity represents a single screen with a user interface.")(即一般的[Activity](# "An activity represents a single screen with a user interface.")無法詳盡所有的MIME類型) - 接收的程序需要有訪問URI資源的權限。下面有一些方法來處理這個問題: - 將數據存儲在你的ContentProvider中,確保其他程序有訪問你的provider的權限。較好的提供訪問權限的方法是使用 per-URI permissions,其對接收程序而言是只是暫時擁有該許可權限。類似于這樣創建ContentProvider的一種簡單的方法是使用FileProvider helper類。 - 使用MediaStore系統。MediaStore系統主要用于音視頻及圖片的MIME類型。但在Android3.0之后,其也可以用于存儲非多媒體類型。 ### 發送多塊內容(Send Multiple Pieces of Content) 為了同時分享多種不同類型的內容,需要使用`ACTION_SEND_MULTIPLE`與指定到那些數據的URIs列表。MIME類型會根據你分享的混合內容而不同。例如,如果你分享3張JPEG的圖片,那么MIME類型仍然是`image/jpeg`。如果是不同圖片格式的話,應該是用`image/*`來匹配那些可以接收任何圖片類型的[activity](# "An activity represents a single screen with a user interface.")。如果你需要分享多種不同類型的數據,可以使用`*/*`來表示MIME。像前面描述的那樣,這取決于那些接收的程序解析并處理你的數據。下面是一個例子: ~~~ 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能夠被接收程序所訪問(添加訪問權限)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看