第一種方式,用action來跳轉(zhuǎn)。
1、使用Action跳轉(zhuǎn),如果有一個程序的 AndroidManifest.xml中的某一個Activity的IntentFilter段中定義了包含了相同的Action那么這個Intent 就與這個目標(biāo)Action匹配。如果這個IntentFilter段中沒有定義 Type,Category,那么這個 Activity就匹配了。但是如果手機中有兩個以上的程序匹配,那么就會彈出一個對話可框來提示說明。
Action的值在Android中有很多預(yù)定義,如果你想直接轉(zhuǎn)到你自己定義的Intent接收者,你可以在接收者的 IntentFilter中加入一個自定義的Action值(同時要設(shè)定 Category值為"android.intent.category.DEFAULT"),在你的Intent中設(shè)定該值為Intent的 Action,就直接能跳轉(zhuǎn)到你自己的Intent接收者中。因為這個Action在系統(tǒng)中是唯一的。
2,data/type,你可以用Uri來做為data,比如Uri uri = Uri.parse(http://www.google.com);
Intent i = new Intent(Intent.ACTION_VIEW,uri);手機的Intent分發(fā)過程中,會根據(jù)http://www.google.com 的scheme判斷出數(shù)據(jù)類型type
手機的Brower則能匹配它,在Brower的Manifest.xml中的IntenFilter中首先有ACTION_VIEW Action,也能處理http:的type。
3,至于分類Category,一般不要去在Intent中設(shè)置它,如果你寫Intent的接收者,就在Manifest.xml的 Activity的 IntentFilter中包含android.category.DEFAULT,這樣所有不設(shè)置 Category(Intent.addCategory(String c);)的Intent都會與這個Category匹配。
4,extras(附加信息),是其它所有附加信息的集合。使用extras可以為組件提供擴展信息,比如,如果要執(zhí)行“發(fā)送電子郵件”這個動作,可以將電子郵件的標(biāo)題、正文等保存在extras里,傳給電子郵件發(fā)送組件。
Java代碼 package com.android.edit_text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
public class MyEditText extends Activity {
private TextView m_TextView;
private EditText m_EditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
m_EditText = (EditText) this.findViewById(R.id.EditText01);
m_EditText.setOnKeyListener(editTextKeyListener);
}
private EditText.OnKeyListener editTextKeyListener = new EditText.OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// action跳轉(zhuǎn),需要在AndroidManifest.xml中配置action
Intent i = new Intent("android.intent.action.mydialog");
MyEditText.this.startActivity(i);
return false;
}
};
}
復(fù)制代碼Xml代碼 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.edit_text" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MyEditText" android:label="@string/app_name">
< intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
< /intent-filter>
< /activity>
<!--配置跳轉(zhuǎn)activity-->
<activity android:name="com.android.dialog.MyDialog">
< intent-filter>
<!--配置action路徑-->
<action android:name="android.intent.action.mydialog" />
<category android:name="android.intent.category.DEFAULT" />
< /intent-filter>
< /activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
復(fù)制代碼第二種方式,用類名跳轉(zhuǎn)。
Intent負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述, 負(fù)責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent在這里起著實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦作用。
Intent傳遞過程中,要找到目標(biāo)消費者(另一個Activity,IntentReceiver或Service),也就是Intent的響應(yīng)者。
Java代碼 package com.Android;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class FormStuff extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.formstuff);
final ImageButton button = (ImageButton) findViewById(R.id.android_button);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 用類名跳轉(zhuǎn),需要在AndroidManifest.xml中申明activity
Intent intent = new Intent(FormStuff.this, HelloTabWidget.class);
startActivity(intent);
}
});
}
復(fù)制代碼Xml代碼 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Android" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:theme="@android:style/Theme.NoTitleBar">
<activity android:name=".FormStuff" android:label="@string/app_name">
文章內(nèi)容來源于網(wǎng)絡(luò),侵刪