//通過制定setComponent來啟動組件
public void start(View view){
//創(chuàng)建一個意圖
//Intent intent=new Intent(this,MainActivity2.class);
Intent intent=new Intent();
//創(chuà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屬性查找啟動activity,必須在清單文件中進行配置

成都創(chuàng)新互聯(lián)公司于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元嶧城做網(wǎng)站,已為上家服務,為嶧城各地企業(yè)和個人服務,聯(lián)系電話:028-86922220
//通過action屬性查找啟動activity
public void start2(View view){
Intent intent=new Intent();
//設置動作,實際上action就是字符串標記而已
intent.setAction(MainActivity3.MY_ACTION);
startActivity(intent);
}MainActivity3
package com.example.intent;
import android.app.Activity;
import android.os.Bundle;
/**
* 在自定義動作時,使用action組件時,必須添加一個默認類別
* <activity android:name="MainActivity3">
<intent-filter >
<action android:name="com.example.action.MY_ACTION">
</action>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
* 如果有多個組件被匹配成功,就會對話框列表的形式讓用戶進行選擇
* */
public class MainActivity3 extends Activity{
//自定義action標記
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);
}
}清單文件中的配置,如果沒有類別,必須寫上默認類別
<category android:name="android.intent.category.LAUNCHER" />
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
加入的類別越多,越精確,如果有找不到的類別會報錯(假設有兩個類別,一個類別未找到,則報錯)
public void start3(View view){
Intent intent=new Intent();
intent.setAction(MainActivity4.MY_ACTION);
intent.addCategory(MainActivity4.MY_CATEGORY);
//如果MainActivity4中沒有在清單文件中配置,且寫了下面的類別,則會報錯
//intent.addCategory(MainActivity4.MY_CATEGORY2);
//加入的類別越多,越精確,如果有找不到的類別會報錯
startActivity(intent);
}MainActivity4
package com.example.intent;
import android.app.Activity;
import android.os.Bundle;
/**
* 自定義類別
* 在Intent中可以添加多個類別
* 那就要求被匹配的組件必須同時滿足這多個類別才能匹配成功,否則匹配失敗
*
* */
public class MainActivity4 extends Activity{
//自定義動作類別
public static final String MY_CATEGORY="com.example.category.myCategory";
public static final String MY_CATEGORY2="com.example.category.myCategory2";
//自定義動作
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
<activity android:name="MainActivity4"> <intent-filter > <!-- <action android:name="com.example.action.MY_ACTION"></action> --> <action android:name="com.example.action.myAction2"></action> <category android:name="com.example.category.myCategory"/> <category android:name="com.example.category.myCategory2"/> <category android:name="android.intent.category.DEFAULT"/> <!-- 沒有類別時要加上默認類別 --> </intent-filter> </activity>
intent中的Date屬性
Date屬性表示動作(要操作)的數(shù)據(jù)
實際上一個Date是用一個URI對象表示
通常情況下,使用action+date屬性的組合來描述一個意圖(intent)
當Intent匹配的組件有多個時,先顯示優(yōu)先級高的組件,如果優(yōu)先級相同,顯示列表讓用戶自己選擇
優(yōu)先級從-1000到1000,并且其中一個必須為負值才有效
MainActivity5:指定訪問一個網(wǎng)址
<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);
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屬性表示動作(要操作)的數(shù)據(jù)
* 實際上一個Date是用一個URI對象表示
* 通常情況下,使用action+date屬性的組合來描述一個意圖(intent)
*
*
*
* 當Intent匹配的組件有多個時,先顯示優(yōu)先級高的組件,如果優(yōu)先級相同,顯示列表讓用戶自己選擇
* 優(yōu)先級從-1000到1000,并且其中一個必須為負值才有效
* */
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的配置
<activity android:name="MainActivity5"></activity> <activity android:name="MainActivity6"> <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> </activity>
Intent
date+type屬性
type表示數(shù)據(jù)的類型或者MIME類型(如:text/xml,text/html,audio/mp3,p_w_picpath/png...)
date和type屬性,一般只需要一個
通過setDate方法會把type實行設置為null,相反,設置setType也會把date屬性設置為null
如果想要兩個屬性同時設置,要使用setDateAndType方法設置
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ù)的類型或者MIME類型(如:text/xml,text/html,audio/mp3,p_w_picpath/png...)
* date和type屬性,一般只需要一個
* 通過setDate方法會把type實行設置為null,相反,設置setType也會把date屬性設置為null
* 如果想要兩個屬性同時設置,要使用setDateAndType方法設置
*
* */
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的啟動模式:4種
* 1.standard 標準模式,每次啟動都會創(chuàng)建一個新的activity,加入目標任務的棧頂
* 2.singleTop,判斷當前任務棧頂是否存在相同的activity,如果存在直接使用
* 如果不存在,那么創(chuàng)建新的activity對象放入棧頂
* 3.singleTask:在任務棧中是會判斷否存在相同的activity,如果存在,那么會清除該activity之上的其他activity對象來顯示
* 如果不存在,創(chuàng)建新的activity對象放入棧頂
* 4.singleInstance:會在一個新的任務棧中創(chuàng)建activity,并且該任務棧中只允許存在一個activity實例,
* 其他調(diào)用該activity的組件會直接使用該任務棧中的activity對象
*
* Intent的flags屬性也可以指定啟動模式
*
*
*
* */
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);
//相當于singleTask
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//相當于singleTop
//intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
}
文章標題:android的Intent
網(wǎng)址分享:http://chinadenli.net/article36/pgjhsg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站導航、外貿(mào)建站、網(wǎng)站設計、網(wǎng)站營銷、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)