intent詳解(二)
阿新 • • 發佈:2019-02-13
前言:上篇講解了有關intent的基礎知識,現在通過幾個例項講講intent這幾個屬性的具體應用,還有,(題外話)我發現不能一直聽《一生所愛》太悲涼,整得我一晚上都沒勁頭了,心情很低落,看來以後還是少聽悲傷的歌為好。
相關連結:
一、使用包含預定義動作的隱式Intent
效果圖:
初始狀態(一個按鈕) 跳轉(多個activity符合條件,讓使用者選擇一個)
選擇我們自己寫義的一個activity
1、新建應用,在佈局檔案中,新增一個button
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.intenttest1.MainActivity" > <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="轉到action.VIEW"/> </RelativeLayout>
2、新建一個Activity,命名為:SecondActivity
佈局如下:(只是改了一下textview的顯示值,其它沒動)<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.intenttest1.SecondActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第二個activiy" /> </RelativeLayout>
3、修改AndroidManifest.xml
修改SecondActivity的屬性,為其新增系統定義的Action,修改如下:
<activity android:name=".SecondActivity" android:label="@string/title_activity_second" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
4、定義隱式intent跳轉
在MainActivity中,當點選按鈕時實現隱式intent跳轉。public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
}
});
}
}
原始碼在文章最底部給出。
二、使用自定義動作的隱式Intent
1、在上例的基礎上,更改AndroidManifest.xml,為SecondActivity自定義一個action name
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second" >
<intent-filter>
<action android:name="test_action" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
2、隱式Intent跳轉public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction("test_action");
startActivity(intent);
}
});
}
}
在intent.setAction()裡直接傳入自定義的action name,就直接跳轉到指定的activity,因為只有這個activity才符合條件,如若有多個activity都有action name="test_action"的話,那就會像上例一樣列出列表供使用者選擇。原始碼在文章最底部給出。
效果圖:
初始化狀態 點選跳轉
三、使用Intent開啟網頁
效果圖:
初始化狀態 開啟百度網頁
1、新建工程testIntent3,在主頁面加一個Button
XML程式碼 :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.intenttest1.MainActivity" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="開啟百度"/>
</RelativeLayout>
2、點選Button開啟網頁public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
}
}
使用隱式Intent,利用執行資料來匹配activity,由於執行資料是網頁,所以也就只有瀏覽器才能匹配,所以如果你手機上有不止一個瀏覽器的話,同樣會以列表形式讓你選擇用哪一個開啟。如下圖:所有原始碼打包一起下載: