ShareText

Similar documents
單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

0511-Android程式之GPS應用_專題週記4

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

Database_001

書面

Microsoft Word - 02.目錄.doc

Android Service

Dynamic Layout in Android

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

建立Android新專案

建立Android新專案


Microsoft Word - 第3章.doc

Android 编程基础 Android 开发教程 & 笔记 1

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

Android Fragment

Android 开发教程

建模与图形思考

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog

第一章 Android 简介与开发环境搭建

Android + NFC

Lecture01_Android介绍

The Embedded computing platform

Android 开发教程


PowerPoint 簡報

目 錄 一 ANDROID 開發系統需求 作業系統 開發工具... 1 二 安裝 ANDROID 開發工具 安裝 JDK 使用 APT-GET 安裝 使用套件管理程式安裝... 9 三 ANDROID 程式撰寫... 1

Android Android Android SDK iv

Android 开发教程

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Lecture01_Android介绍

题目

TextView: 用來顯示 月 EditText: 讓使用者輸入日期 Button: 使用者按下 得知星座 的按鈕後, 可以查詢自己的星座, 程式會切換到另一個頁陎, 顯示星座的圖示及相關資訊 規畫好使用者介陎後, 我們就可以開始撰寫 XML 檔, 請讀者自行參考光碟內的檔案 \ 範例程式 \Ch

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

「西醫基層總額支付委員會《第28次委員會議紀錄

1.5招募说明书(草案)

公務員服務法第13條相關解釋彙整表

大陸教育部等6個部門公佈「現代職業教育體系建設規劃 ( 年)」規劃到2015年初步形成現代職業教育體系框架,到2020年基本建成「中國」特色現代職業教育體系

B1

浙江师范大学2014年度毕业生就业质量报告

目 录 监 管 资 讯 2016 年 全 国 保 险 监 管 工 作 会 议 召 开...3 协 会 动 态 赤 峰 保 险 行 业 协 会 召 开 数 据 统 计 和 信 息 宣 传 总 结 表 彰 会 议...5 赤 峰 市 保 险 行 业 协 会 秘 书 处 召 开 2015 年 度 述 职

同 时, 采 取 提 供 新 闻 线 索 和 素 材 安 排 专 访 等 方 式 主 动 为 新 闻 媒 体 服 务, 为 采 访 报 道 活 动 创 造 便 利 条 件 建 设 网 络 信 息 发 布 平 台 2013 年 9 月 开 通 中 央 纪 委 监 察 部 网 站,2015 年 1 月

资 讯 速 递 台 基 于 大 数 据 的 学 校 督 导 评 估 系 统 建 设 上 海 市 闵 行 区 人 民 政 府 教 育 督 导 室 ( 摘 要 ) 闵 行 教 育 在 深 化 教 育 改 革 探 索 管 办 评 分 离 的 背 景 下, 把 教 育 督 导 评 估 系 统 建 设 作 为

時間軸上的竹蓮記憶 學務主任 黃雅彙 我不是竹蓮國小的畢業校友 但對於身為新竹人的我來 說 仔細回想起來 似乎和竹蓮有著一種特別的緣分 對竹蓮國小最初的印象是在小學的時候 猶記得年幼的 我經過一段時日的啦啦隊舞蹈訓練後 老師便帶著我們從學 校步行到竹蓮國小來參加比賽 一踏入竹蓮校門 映入眼簾 的是黑

B1

Microsoft Word - 临政办发6.doc

<4D F736F F D20B5DA33D5C220B3CCD0F2C9E8BCC6BBF9B4A12E646F6378>

RecyclerView and CardVew

實作SQLiteOpenHelper類別

Microsoft Word - 004_Android線程模式介紹.doc

Microsoft PowerPoint - ch6 [相容模式]

untitled

《捕捉儿童敏感期》

2 國 文 考 科 試 題 解 析 命 題 出 處 與 南 一 版 第 五 冊 第 二 課 幽 夢 影 選 課 程 內 涵 同 試 題 解 析 某 君 講 信 用, 重 然 諾, 行 事 穩 健, 工 作 負 責 較 符 合 謹 飭 友 謹 飭 友 指 的 是 言 行 謹 慎 而 有 節 制 的 朋

untitled

29 碳 酸 钙 D3 片 ( 别 名 维 生 素 D3 碳 酸 钙 ) 吉 林 省 第 一 批 低 价 药 30 炔 诺 酮 滴 丸 吉 林 省 第 一 批 低 价 药 31 去 氯 羟 嗪 片 吉 林 省 第 一 批 低 价 药 32 茶 苯 海 明 片 吉 林 省 第 一 批 低 价 药 33

穨飲食與養老_決定版_.PDF

untitled

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

建模与图形思考

Microsoft Word - 第4章 3D相册.doc

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

校园之星

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

03 开发入门.key

版权声明

Microsoft Word - 01.DOC

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

投影片 1

Microsoft PowerPoint - 03 开发入门.ppt [兼容模式]

2000 中華民國自動控制研討會徵文啟事

投影片 1

JavaIO.PDF

苏州中科图新网络科技有限公司 客服电话 LSViewer-Android 开发指南 V2.0 撰写单位 最后修订日期 苏州中科图新网络科技有限公司 2016 年 12 月 1

<4D F736F F D20B5DA36D5C220D7E9BCFEBCE4CDA8D0C52E646F6378>

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

EJB-Programming-4-cn.doc

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas

为什么引入 Intent Android 应 用程序的四 大组件 Activities Services Content Providers Broadcast Receivers 解决 Android 应用的各项组件之间的通讯 Activity Service Intent Broadcast R

首先讓我們來看 SimpleGoogleSearch.java, 程式碼如下所示 : 1 public class SimpleGoogleSearch extends Activity { 2 3 EditText et_searchstr; 4 Button btn_search; 5

2014年全国体操锦标赛

Microsoft Word - 002_Java層框架介紹.doc

投影片 1

untitled

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

untitled

《Android平台开发之旅》第三章 Android应用程序组件

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Microsoft PowerPoint - VB14.ppt

<4D F736F F D20312D3120D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A92E646F63>

EJB-Programming-3.PDF

Transcription:

作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單, 主畫面只有一段文字及一個按鈕, 如下圖 ( 左 ) 所示, 當按下按鈕後, 會出現一個對話框, 如下圖 ( 右 ) 所示, 這個對話框有一個文字編輯元件 (EditText) 與一個按鈕, 文字編輯元件的預設內容是主畫面那段文字的內容, 使用者被允許在分享前做一些編輯, 當編輯好欲分享的文字內容後, 就可按下 分享文字給 按鈕 按下 分享文字給 按鈕後, 會出現一個應用程式列表, 如下圖所示, 這些應用 程式都可接收 CopyPaste_Source 所分享的文字

筆者嘗試點選幾個應用程式, 讓讀者更能感受那些應用程式是如何接收分享的文字, 下面依序是點選 訊息 ( 簡訊 ) Gmail LINE 以及 Evernote 的結果 點選 訊息 ( 簡訊 ) 後, 分享的文字會成為簡訊的內容 ; 點選 Gmail 後, 分享的文字會成為信件的內容 ; 點選 LINE 後, 分享的文字會成為聊天的內容 ; 點選 Evernote 後, 分享的文字會成為記事的內容

接下來我們就來看如何寫出 CopyPaste_Source 這樣的應用程式, 程式碼如下 所示 : 1 package lincyu.copypaste.source;

2 3 import android.app.activity; 4 import android.app.alertdialog; 5 import android.content.intent; 6 import android.os.bundle; 7 import android.view.layoutinflater; 8 import android.view.view; 9 import android.view.view.onclicklistener; 10 import android.widget.button; 11 import android.widget.edittext; 12 import android.widget.textview; 13 14 public class CopyPaste_Source extends Activity { 15 16 TextView tv_msg; 17 EditText et_sharetext; 18 19 public void oncreate(bundle savedinstancestate) { 20 super.oncreate(savedinstancestate); 21 setcontentview(r.layout.main); 22 23 tv_msg = (TextView)findViewById(R.id.tv_msg); 24 Button btn_opendialog = 25 (Button)findViewById(R.id.btn_open_dialog); 26 btn_opendialog.setonclicklistener(new OnClickListener() { 27 public void onclick(view v) { 28 opendialog(); 29 } 30 }); 31 } 32 33 void opendialog() { 34 LayoutInflater li = LayoutInflater.from(this); 35 View dialogview= li.inflate(r.layout.dialog, null); 36 37 et_sharetext = 38 (EditText)dialogView.findViewById(R.id.et_sharetext); 39 et_sharetext.settext(tv_msg.gettext());

40 Button btn_shareto = 41 (Button)dialogView.findViewById(R.id.btn_share); 42 btn_shareto.setonclicklistener(new OnClickListener() { 43 public void onclick(view v) { 44 String sharetext = 45 et_sharetext.geteditabletext().tostring(); 46 Intent intent = new Intent(Intent.ACTION_SEND); 47 intent.settype("text/plain"); 48 intent.putextra(intent.extra_text, sharetext); 49 startactivity( 50 Intent.createChooser(intent, " 分享 ")); 51 } 52 }); 53 54 AlertDialog.Builder ad = 55 new AlertDialog.Builder(this); 56 ad.setview(dialogview); 57 ad.show(); 58 } 59 } 比較需要解說的, 應該只有 分享文字給 這個按鈕的傾聽者, 程式碼位於 43~51 行, 第 44 行,shareText 變數所儲存的就是欲分享的文字, 接著就是叫出 應用程式列表 (Chooser), 首先我們要宣告一個 Implicit Intent, 這個 Intent 的 ACTION 為 Intent.ACTION_SEND, 如第 46 行所示, 接著在第 47 行, 我們設定分享資料的 MIME type, 由於我們所傳送的資料是純文字, 設成 text/plain 即可, 關於其它資料的 MIME type 可參考 [1], 第 48 行, 利用 Intent 類別的 putextra 方法把分享的文字帶進去, 即完成所有 Intent 的設定, 這個 Intent 是要送給處理分享文字的應用程式 ( 例如 訊息 ( 簡訊 ) Gmail LINE 等), 而不是不是叫出 應用程式列表 用的, 要叫出 應用程式列表 (Chooser), 必須宣告另一個 Implicit Intent,Intent 的 ACTION 為 Intent.ACTION_CHOOSER,Intent 類別提供了 Static 方法叫 createchooser,createchooser 的第一個參數是真正要丟給選擇的應用程式 ( 例如 訊息 ( 簡訊 ) Gmail LINE 等) 的 Intent, 我們只要把第 46 行所產生的 Intent 丟進去就可以了,createChooser 的第二個參數是 應用程式列表 (Chooser) 的標題, 如下圖紅色圈起來的地方所顯示的文字 :

以上就是 CopyPaste_Source 需要講解的部份, 其它部份的程式碼, 讀者可自行閱讀 然而讀者可能馬上想到一個問題 : 我們有沒有可能寫一個 App( 像 訊息 ( 簡訊 ) Gmail LINE 那樣 ), 能夠讀取其它應用程式所分享的文字?, 本文件的第二個範例 CopyPaste_Destination 就是介紹如何寫出這樣的 App 有兩個重點 : AndroidManifest.xml 的撰寫方法 主程式的撰寫方法 首先我們來看 AndroidManifest.xml, 檔案內容如下 : 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 package="lincyu.copypaste.destination" 5 android:versioncode="1" 6 android:versionname="1.0" > 7 <uses-sdk android:minsdkversion="7" /> 8 9 <application 10 android:icon="@drawable/ic_launcher" 11 android:label="@string/app_name" >

12 <activity 13 android:name=".copypaste_destination" 14 android:label="@string/app_name" > 15 <intent-filter> 16 <action android:name="android.intent.action.main" /> 17 <category android:name="android.intent.category.launcher" /> 18 </intent-filter> 19 </activity> 20 <activity 21 android:name=".copypaste_destination" 22 android:label="@string/app_name" > 23 <intent-filter> 24 <action android:name="android.intent.action.send" /> 25 <category android:name="android.intent.category.default" /> 26 <data android:mimetype="text/plain" /> 27 </intent-filter> 28 </activity> 29 </application> 30 </manifest> 我們將重點放在 20~28 行處, 透過 CopyPaste_Source, 我們知道, 能夠處理分享文字的 App 會接收到一個 ACTION 為 Intent.ACTION_SEND 的 Implicit Intent, 因此 23~27 行的 <intent-filter> 內, 我們必須設定這個 Activity 能夠處理 ACTION 為 Intent.ACTION_SEND( 即 android.intent.action.send) 的 Intent, 第 26 行我們更進一步指定能夠處理的資料為 text/plain 接下來我們來看主程式的寫法, 程式碼如下所示 : 1 package lincyu.copypaste.destination; 2 3 import android.app.activity; 4 import android.content.intent; 5 import android.os.bundle; 6 import android.widget.textview; 7 8 public class CopyPaste_Destination extends Activity { 9 /** Called when the activity is first created. */ 10 @Override 11 public void oncreate(bundle savedinstancestate) {

12 super.oncreate(savedinstancestate); 13 setcontentview(r.layout.main); 14 15 TextView tv_msg = (TextView)findViewById(R.id.tv_receive); 16 Intent intent = getintent(); 17 if (intent.getaction().equals(intent.action_send)) { 18 tv_msg.settext( 19 intent.getstringextra(intent.extra_text)); 20 } 21 } 22 } 需要解說的應該只有 16~20 行的地方, 首先在第 16 行, 呼叫 Activity 類別的 getintent 方法來取得傳入的 Intent, 如果這個 Intent 的 ACTION 是 Intent.ACTION_SEND ( 第 17 行 ), 我們在第 19 行呼叫 Intent 類別的 getstringextra 方法將分享的文字取出並印出來,getStringExtra 的參數帶入 Intent.EXTRA_TEXT 即可 下面是執行結果, 首先我們先執行 CopyPaste_Source, 按下 分享文字給 按鈕後, 我們寫的 CopyPaste_Destinaion 出現在應用程式列表了, 如下圖 ( 左 ) 所示, 點選後, CopyPaste_Destinaion 就會被啟動, 分享的文字被印出來,, 如下圖 ( 右 ) 所示

參考資料 [1] Webmaster Toolkit :: listing of mime types, http://www.webmaster-toolkit.com/mime-types.shtml