1
2
3
4
5
6
7
8
9
10
<code> </code><code>//通過制定setComponent來啟動元件</code>
<code> </code><code>public</code> <code>void</code> <code>start(View view){</code>
<code> </code><code>//建立一個意圖</code>
<code> </code><code>//Intent intent=new Intent(this,MainActivity2.class);</code>
<code> </code><code>Intent intent=</code><code>new</code> <code>Intent();</code>
<code> </code><code>//建立元件,通過元件響應,直接Intent</code>
<code> </code><code>ComponentName component=</code><code>new</code> <code>ComponentName(</code><code>this</code><code>, MainActivity2.</code><code>class</code><code>);</code>
<code> </code><code>intent.setComponent(component);</code>
<code> </code><code>startActivity(intent);</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>void</code> <code>start1(View view){</code>
<code> </code><code>Intent intent=</code><code>new</code> <code>Intent(</code><code>this</code><code>,MainActivity9.</code><code>class</code><code>);</code>
通過action屬性查找啟動activity,必須在清單檔案中進行配置
<code> </code><code>//通過action屬性查找啟動activity</code>
<code> </code><code>public</code> <code>void</code> <code>start2(View view){</code>
<code> </code><code>//設定動作,實際上action就是字元串标記而已</code>
<code> </code><code>intent.setAction(MainActivity3.MY_ACTION);</code>
MainActivity3
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<code>package</code> <code>com.example.intent;</code>
<code>import</code> <code>android.app.Activity;</code>
<code>import</code> <code>android.os.Bundle;</code>
<code>/**</code>
<code> </code><code>* 在自定義動作時,使用action元件時,必須添加一個預設類别</code>
<code> </code><code>* <activity android:name="MainActivity3"></code>
<code> </code><code><intent-filter ></code>
<code> </code><code><action android:name="com.example.action.MY_ACTION"></code>
<code> </code><code></action></code>
<code> </code><code><category android:name="android.intent.category.DEFAULT"/></code>
<code> </code><code></intent-filter></code>
<code> </code>
<code> </code><code>* 如果有多個元件被比對成功,就會對話框清單的形式讓使用者進行選擇</code>
<code> </code><code>* */</code>
<code>public</code> <code>class</code> <code>MainActivity3 </code><code>extends</code> <code>Activity{</code>
<code> </code><code>//自定義action标記</code>
<code> </code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String MY_ACTION=</code><code>"com.example.action.MY_ACTION"</code><code>;</code>
<code> </code><code>@Override</code>
<code> </code><code>protected</code> <code>void</code> <code>onCreate(Bundle savedInstanceState) {</code>
<code> </code><code>// TODO Auto-generated method stub</code>
<code> </code><code>super</code><code>.onCreate(savedInstanceState);</code>
<code> </code><code>setContentView(R.layout.activity_main3);</code>
<code>}</code>
清單檔案中的配置,如果沒有類别,必須寫上預設類别
<category android:name="android.intent.category.LAUNCHER" />
<code> </code><code><application</code>
<code> </code><code>android:allowBackup=</code><code>"true"</code>
<code> </code><code>android:icon=</code><code>"@drawable/ic_launcher"</code>
<code> </code><code>android:label=</code><code>"@string/app_name"</code>
<code> </code><code>android:theme=</code><code>"@style/AppTheme"</code> <code>></code>
<code> </code><code><activity</code>
<code> </code><code>android:name=</code><code>".MainActivity"</code>
<code> </code><code>android:label=</code><code>"@string/app_name"</code> <code>></code>
<code> </code><code><intent-filter></code>
<code> </code><code><action android:name=</code><code>"android.intent.action.MAIN"</code> <code>/></code>
<code> </code><code><category android:name=</code><code>"android.intent.category.LAUNCHER"</code> <code>/></code>
<code> </code><code></intent-filter></code>
<code> </code><code></activity></code>
加入的類别越多,越精确,如果有找不到的類别會報錯(假設有兩個類别,一個類别未找到,則報錯)
<code>public</code> <code>void</code> <code>start3(View view){</code>
<code> </code><code>intent.setAction(MainActivity4.MY_ACTION);</code>
<code> </code><code>intent.addCategory(MainActivity4.MY_CATEGORY);</code>
<code> </code><code>//如果MainActivity4中沒有在清單檔案中配置,且寫了下面的類别,則會報錯</code>
<code> </code><code>//intent.addCategory(MainActivity4.MY_CATEGORY2);</code>
<code> </code><code>//加入的類别越多,越精确,如果有找不到的類别會報錯</code>
MainActivity4
<code> </code><code>* 自定義類别</code>
<code> </code><code>* 在Intent中可以添加多個類别</code>
<code> </code><code>* 那就要求被比對的元件必須同時滿足這多個類别才能比對成功,否則比對失敗</code>
<code> </code><code>* </code>
<code>public</code> <code>class</code> <code>MainActivity4 </code><code>extends</code> <code>Activity{</code>
<code> </code><code>//自定義動作類别</code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String MY_CATEGORY=</code><code>"com.example.category.myCategory"</code><code>;</code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String MY_CATEGORY2=</code><code>"com.example.category.myCategory2"</code><code>;</code>
<code> </code><code>//自定義動作</code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String MY_ACTION=</code><code>"com.example.action.myAction2"</code><code>;</code>
<code> </code><code>setContentView(R.layout.activity_main4);</code>
清單檔案中的MainActivity4
<code> </code><code><activity android:name=</code><code>"MainActivity4"</code><code>></code>
<code> </code><code><!-- <action android:name=</code><code>"com.example.action.MY_ACTION"</code><code>></action> --></code>
<code> </code><code><action android:name=</code><code>"com.example.action.myAction2"</code><code>></action></code>
<code> </code><code><category android:name=</code><code>"com.example.category.myCategory"</code><code>/></code>
<code> </code><code><category android:name=</code><code>"com.example.category.myCategory2"</code><code>/></code>
<code> </code><code><category android:name=</code><code>"android.intent.category.DEFAULT"</code><code>/></code>
<code> </code><code><!-- 沒有類别時要加上預設類别 --></code>
<code> </code><code></intent-filter></code>
<code> </code><code></activity></code>
intent中的Date屬性
Date屬性表示動作(要操作)的資料
實際上一個Date是用一個URI對象表示
通常情況下,使用action+date屬性的組合來描述一個意圖(intent)
當Intent比對的元件有多個時,先顯示優先級高的元件,如果優先級相同,顯示清單讓使用者自己選擇
優先級從-1000到1000,并且其中一個必須為負值才有效
MainActivity5:指定通路一個網址
<intent-filter android:priority="800">
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="http" android:host="java.lampbrother.net"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
Intent intent=new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri=Uri.parse("http://java.lampbrother.net");
intent.setData(uri);
startActivity(intent);
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<code>import</code> <code>android.content.Intent;</code>
<code>import</code> <code>android.net.Uri;</code>
<code>import</code> <code>android.view.View;</code>
<code> </code><code>* intent中的Date屬性</code>
<code> </code><code>* Date屬性表示動作(要操作)的資料</code>
<code> </code><code>* 實際上一個Date是用一個URI對象表示</code>
<code> </code><code>* 通常情況下,使用action+date屬性的組合來描述一個意圖(intent)</code>
<code> </code><code>* 當Intent比對的元件有多個時,先顯示優先級高的元件,如果優先級相同,顯示清單讓使用者自己選擇</code>
<code> </code><code>* 優先級從-1000到1000,并且其中一個必須為負值才有效</code>
<code>public</code> <code>class</code> <code>MainActivity5 </code><code>extends</code> <code>Activity{</code>
<code> </code>
<code> </code><code>setContentView(R.layout.activity_main5);</code>
<code> </code><code>public</code> <code>void</code> <code>testActionDateClick(View ivew){</code>
<code> </code><code>intent.setAction(Intent.ACTION_VIEW);</code>
<code> </code><code>Uri uri=Uri.parse(</code><code>"http://java.lampbrother.net"</code><code>);</code>
<code> </code><code>intent.setData(uri);</code>
<code> </code><code>public</code> <code>void</code> <code>testActivity7(View view){</code>
<code> </code><code>Intent intent=</code><code>new</code> <code>Intent(</code><code>this</code><code>,MainActivity7.</code><code>class</code><code>);</code>
清單檔案中MainActivity5的配置
<code> </code><code><activity android:name=</code><code>"MainActivity5"</code><code>></activity></code>
<code> </code><code><activity android:name=</code><code>"MainActivity6"</code><code>></code>
<code> </code><code><intent-filter android:priority=</code><code>"800"</code><code>></code>
<code> </code><code><action android:name=</code><code>"android.intent.action.VIEW"</code><code>/></code>
<code> </code><code><data android:scheme=</code><code>"http"</code> <code>android:host=</code><code>"java.lampbrother.net"</code><code>/></code>
<code> </code><code><category android:name=</code><code>"android.intent.category.DEFAULT"</code><code>/></code>
<code> </code><code></intent-filter></code>
<code> </code><code></activity></code>
Intent
date+type屬性
type表示資料的類型或者MIME類型(如:text/xml,text/html,audio/mp3,image/png...)
date和type屬性,一般隻需要一個
通過setDate方法會把type實行設定為null,相反,設定setType也會把date屬性設定為null
如果想要兩個屬性同時設定,要使用setDateAndType方法設定
MianActivity7:調用系統選擇(各種)檔案,以mp3檔案為例,
<code> </code><code>* Intent</code>
<code> </code><code>* date+type屬性</code>
<code> </code><code>* type表示資料的類型或者MIME類型(如:text/xml,text/html,audio/mp3,image/png...)</code>
<code> </code><code>* date和type屬性,一般隻需要一個</code>
<code> </code><code>* 通過setDate方法會把type實行設定為null,相反,設定setType也會把date屬性設定為null</code>
<code> </code><code>* 如果想要兩個屬性同時設定,要使用setDateAndType方法設定</code>
<code>public</code> <code>class</code> <code>MainActivity7 </code><code>extends</code> <code>Activity{</code>
<code> </code><code>setContentView(R.layout.activity_main7);</code>
<code> </code><code>public</code> <code>void</code> <code>play7(View view){</code>
<code> </code><code>Uri date=Uri.parse(</code><code>"file:///sdcard/xx.mp3"</code><code>);</code>
<code> </code><code>//intent.setData(date);</code>
<code> </code><code>//intent.setDataAndType(data, type);</code>
<code> </code><code>intent.setType(</code><code>"audio/mp3"</code><code>);</code>
MainActivity8
本文轉自 matengbing 51CTO部落格,原文連結:http://blog.51cto.com/matengbing/1883732