//通過制定setComponent來啟動(dòng)組件 public void start(View view){ //創(chuàng)建一個(gè)意圖 //Intent intent=new Intent(this,MainActivity2.class); Intent intent=new Intent(); //創(chuàng)建組件,通過組件響應(yīng),直接Intent ComponentName component=new ComponentName(this, MainActivity2.class); intent.setComponent(component); startActivity(intent); }
public void start1(View view){ Intent intent=new Intent(this,MainActivity9.class); startActivity(intent); }
通過action屬性查找啟動(dòng)activity,必須在清單文件中進(jìn)行配置
成都創(chuàng)新互聯(lián)公司于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元嶧城做網(wǎng)站,已為上家服務(wù),為嶧城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
//通過action屬性查找啟動(dòng)activity public void start2(View view){ Intent intent=new Intent(); //設(shè)置動(dòng)作,實(shí)際上action就是字符串標(biāo)記而已 intent.setAction(MainActivity3.MY_ACTION); startActivity(intent); }
MainActivity3
package com.example.intent; import android.app.Activity; import android.os.Bundle; /** * 在自定義動(dòng)作時(shí),使用action組件時(shí),必須添加一個(gè)默認(rèn)類別 ** 如果有多個(gè)組件被匹配成功,就會(huì)對(duì)話框列表的形式讓用戶進(jìn)行選擇 * */ public class MainActivity3 extends Activity{ //自定義action標(biāo)記 public static final String MY_ACTION="com.example.action.MY_ACTION"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); } }
清單文件中的配置,如果沒有類別,必須寫上默認(rèn)類別
加入的類別越多,越精確,如果有找不到的類別會(huì)報(bào)錯(cuò)(假設(shè)有兩個(gè)類別,一個(gè)類別未找到,則報(bào)錯(cuò))
public void start3(View view){ Intent intent=new Intent(); intent.setAction(MainActivity4.MY_ACTION); intent.addCategory(MainActivity4.MY_CATEGORY); //如果MainActivity4中沒有在清單文件中配置,且寫了下面的類別,則會(huì)報(bào)錯(cuò) //intent.addCategory(MainActivity4.MY_CATEGORY2); //加入的類別越多,越精確,如果有找不到的類別會(huì)報(bào)錯(cuò) startActivity(intent); }
MainActivity4
package com.example.intent; import android.app.Activity; import android.os.Bundle; /** * 自定義類別 * 在Intent中可以添加多個(gè)類別 * 那就要求被匹配的組件必須同時(shí)滿足這多個(gè)類別才能匹配成功,否則匹配失敗 * * */ public class MainActivity4 extends Activity{ //自定義動(dòng)作類別 public static final String MY_CATEGORY="com.example.category.myCategory"; public static final String MY_CATEGORY2="com.example.category.myCategory2"; //自定義動(dòng)作 public static final String MY_ACTION="com.example.action.myAction2"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main4); } }
清單文件中的MainActivity4
intent中的Date屬性
Date屬性表示動(dòng)作(要操作)的數(shù)據(jù)
實(shí)際上一個(gè)Date是用一個(gè)URI對(duì)象表示
通常情況下,使用action+date屬性的組合來描述一個(gè)意圖(intent)
當(dāng)Intent匹配的組件有多個(gè)時(shí),先顯示優(yōu)先級(jí)高的組件,如果優(yōu)先級(jí)相同,顯示列表讓用戶自己選擇
優(yōu)先級(jí)從-1000到1000,并且其中一個(gè)必須為負(fù)值才有效
MainActivity5:指定訪問一個(gè)網(wǎng)址
Intent intent=new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri=Uri.parse("http://java.lampbrother.net");
intent.setData(uri);
startActivity(intent);
package com.example.intent; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; /** * intent中的Date屬性 * Date屬性表示動(dòng)作(要操作)的數(shù)據(jù) * 實(shí)際上一個(gè)Date是用一個(gè)URI對(duì)象表示 * 通常情況下,使用action+date屬性的組合來描述一個(gè)意圖(intent) * * * * 當(dāng)Intent匹配的組件有多個(gè)時(shí),先顯示優(yōu)先級(jí)高的組件,如果優(yōu)先級(jí)相同,顯示列表讓用戶自己選擇 * 優(yōu)先級(jí)從-1000到1000,并且其中一個(gè)必須為負(fù)值才有效 * */ public class MainActivity5 extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main5); } public void testActionDateClick(View ivew){ Intent intent=new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri=Uri.parse("http://java.lampbrother.net"); intent.setData(uri); startActivity(intent); } public void testActivity7(View view){ Intent intent=new Intent(this,MainActivity7.class); startActivity(intent); } }
清單文件中MainActivity5的配置
Intent
date+type屬性
type表示數(shù)據(jù)的類型或者M(jìn)IME類型(如:text/xml,text/html,audio/mp3,p_w_picpath/png...)
date和type屬性,一般只需要一個(gè)
通過setDate方法會(huì)把type實(shí)行設(shè)置為null,相反,設(shè)置setType也會(huì)把date屬性設(shè)置為null
如果想要兩個(gè)屬性同時(shí)設(shè)置,要使用setDateAndType方法設(shè)置
MianActivity7:調(diào)用系統(tǒng)選擇(各種)文件,以mp3文件為例,
package com.example.intent; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; /** * Intent * date+type屬性 * type表示數(shù)據(jù)的類型或者M(jìn)IME類型(如:text/xml,text/html,audio/mp3,p_w_picpath/png...) * date和type屬性,一般只需要一個(gè) * 通過setDate方法會(huì)把type實(shí)行設(shè)置為null,相反,設(shè)置setType也會(huì)把date屬性設(shè)置為null * 如果想要兩個(gè)屬性同時(shí)設(shè)置,要使用setDateAndType方法設(shè)置 * * */ public class MainActivity7 extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main7); } public void play7(View view){ Intent intent=new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri date=Uri.parse("file:///sdcard/xx.mp3"); //intent.setData(date); //intent.setDataAndType(data, type); intent.setType("audio/mp3"); startActivity(intent); } }
MainActivity8
package com.example.intent; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; /** * activity的啟動(dòng)模式:4種 * 1.standard 標(biāo)準(zhǔn)模式,每次啟動(dòng)都會(huì)創(chuàng)建一個(gè)新的activity,加入目標(biāo)任務(wù)的棧頂 * 2.singleTop,判斷當(dāng)前任務(wù)棧頂是否存在相同的activity,如果存在直接使用 * 如果不存在,那么創(chuàng)建新的activity對(duì)象放入棧頂 * 3.singleTask:在任務(wù)棧中是會(huì)判斷否存在相同的activity,如果存在,那么會(huì)清除該activity之上的其他activity對(duì)象來顯示 * 如果不存在,創(chuàng)建新的activity對(duì)象放入棧頂 * 4.singleInstance:會(huì)在一個(gè)新的任務(wù)棧中創(chuàng)建activity,并且該任務(wù)棧中只允許存在一個(gè)activity實(shí)例, * 其他調(diào)用該activity的組件會(huì)直接使用該任務(wù)棧中的activity對(duì)象 * * Intent的flags屬性也可以指定啟動(dòng)模式 * * * * */ public class MainActivity8 extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main8); } public void start1(View view){ Intent intent=new Intent(this,MainActivity9.class); startActivity(intent); } public void start2(View view){ Intent intent=new Intent(this,MainActivity8.class); //相當(dāng)于singleTask //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //相當(dāng)于singleTop //intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); } }