編輯:Android開發實例
構造和觸發一個Intent,需要先要指定其Action。Android系統已經預定義了很多Action,其中的ACTION_SEND用來做數據分享,可以把數據從一個Activity發送到另一個Activity, 甚至跨越進程邊界的限制。要想給其他的Activity發送內容,您需要做的是構造一個Intent,設置Action類別為ACTION_SEND,把數據填充到該Intent中,並且設置正確的數據的類型,最後觸發該Intent,這樣系統就會選擇最合適的目標Activity來接收和處理該數據。如果候選的目標Activity多於一個,則系統通常會彈出一個對話框讓用戶來選擇,如果候選的目標Activity只有一個,那麼系統就會直接啟動該Activity來處理數據。同樣地,您自己的應用程序也可以在manifest文件中聲明可以處理的數據類型,這樣當其他Activity發送此種類型的數據時,系統就會將您的App列入到候選名單中。
數據的共享常應用在社會化分享的APP中,方便用戶快速和簡單的分享自己的共享信息。
注意 :最簡單的在ActionBar中添加一個”share action item”的方法是使用ShareActionProvider,其要求API level 14,將在後面的章節討論。
數據分享最常用的是Activity之間發送文本內容,例如,系統的內置浏覽器可以共享當前正在浏覽頁面的URL地址,以純文本的數據格式存儲,這非常有助於用戶通過Email或者社會化分享APP分享有趣的文章鏈接和網站鏈接。
示例代碼:
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);
如果當前設備裡安裝的所有應用程序中其中有一個APP的intent filter設置了ACTION_SEND,並且聲明的數據類型匹配純文本(text/plain)格式,那麼系統就會啟動它,若此時匹配的APP個數多於一個,系統會彈出一個選擇對話框(a “chooser”) ,讓用戶從中選擇處理該數據的APP。若您觸發該Intent的時候使用了Intent.createChooser() ,那麼系統總是會彈出選擇對話框(a “chooser”) 讓用戶選擇,這麼做有如下優點。
示例代碼:
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));
ACTION_SEND Intent 選擇器對話框如下面圖示
可選地,您也可以在Intent中設置一些標准的附加參數,比如EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC, EXTRA_SUBJECT,除非目標APP會使用該數據,不然也沒有什麼副作用。通常如果您設計的應用程序可以用來接收和處理該數據,那麼應該使用它們。
注意:某些Email郵件處理程序,比如Gmail,需要的是一個字符串數組類型(String[] for extras like EXTRA_EMAIL and EXTRA_CC),那麼您應該使用putExtra(String, String[]) 來添加附加參數。
與發送文本格式的數據類似,構造一個Intent其Action為ACTION_SEND,設定正確的MIME類型,填充數據的URI 到Intent的鍵值 EXTRA_STREAM中,最後觸發該Intent就可以了。共享二進制數據最常用的是圖片數據的分享,其他任何的二進制數據都可以分享,只要設定了正確的MIME類型。
示例代碼:
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)));
注意事項:
要想批量發送數據,Intent的Action應設置為ACTION_SEND_MULTIPLE ,然後再設置批量數據的URIs 地址列表,MIME 類型隨著混合數據格式的不同而不同。比如,您發送3張JPEG 格式的圖片,那麼MIME 類型仍然是”image/jpeg“,如果發送的一系列圖片中格式不完全相同,那麼MIME 類型就應當設置為通用圖片格式”image/*” ,如果您發送的一系列數據中類型都不完全一樣,那麼MIME 類型就應當設置為通用格式”*/*” 。請注意,”image/*“只匹配能處理任何圖片格式的APP,而”*/*” 只能匹配處理通用數據類型的APP。
示例代碼
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.."));
如上文所提到的,請確保目標APP有足夠的權限來訪問Uris地址指向的數據。
參考文摘:
http://developer.android.com/training/sharing/send.html
原文:http://blog.zhourunsheng.com/2012/01/android-%e4%bf%a1%e6%81%af%e5%85%b1%e4%ba%ab%e4%b8%93%e9%a2%98%e4%b9%8b%e5%86%85%e5%ae%b9%e5%8f%91%e5%b8%83/ | 潤物無聲
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
在應用程序中有些時候,如果想詢問用戶采取決定是或否所采取的特殊動作的回應,由停在原來的活動而不改變屏幕,可以使用警告對話框(Alert Dialog)。要使用一個警告對話
公司准備要做一個項目,是p2p配資的app。在網上問了一些人後,發現有的是直接有html5做好後,用軟件封裝的。之前我學過app的開發,當時Android版本的,
學習目的: 1、了解在Android中如何使用TextView控件 2、掌握TextView控件重要屬性 作用:TextView類似一般UI中的Label,Tex