編輯:關於android開發
先看效果圖:

該標識用來說明這個activity可以執行哪些動作,所以當隱式intent傳遞過來action時,如果跟這裡<intent-filter>所列出的任意一個匹配的話,就說明這個activity是可以完成這個intent的意圖的,可以將它激活!
常用的Action如下所示:
ACTION_CALL activity 啟動一個電話.
ACTION_EDIT activity 顯示用戶編輯的數據.
ACTION_MAIN activity 作為Task中第一個Activity啟動
ACTION_SYNC activity 同步手機與數據服務器上的數據.
ACTION_BATTERY_LOW broadcast receiver 電池電量過低警告.
ACTION_HEADSET_PLUG broadcast receiver 插拔耳機警告
ACTION_SCREEN_ON broadcast receiver 屏幕變亮警告.
ACTION_TIMEZONE_CHANGED broadcast receiver 改變時區警告.
兩條原則:
一條<intent-filter>元素至少應該包含一個<action>,否則任何Intent請求都不能和該<intent-filter>匹配。
如果Intent請求的Action和<intent-filter>中個任意一條<action>匹配,那麼該Intent就可以激活該activity(前提是除了action的其它項也要通過)。
兩條注意:
如果Intent請求或<intent-filter>中沒有說明具體的Action類型,那麼會出現下面兩種情況。如果<intent-filter>中沒有包含任何Action類型,那麼無論什麼Intent請求都無法和這條<intent-filter>匹配。 反之,如果Intent請求中沒有設定Action類型,那麼只要<intent-filter>中包含有Action類型,這個Intent請求就將順利地通過<intent-filter>的行為測試。
即這個activity在哪個環境中才能被激活。不屬於這個環境的,不能被激活。
常用的Category屬性如下所示:
CATEGORY_DEFAULT:Android系統中默認的執行方式,按照普通Activity的執行方式執行。表示所有intent都可以激活它
CATEGORY_HOME:設置該組件為Home Activity。
CATEGORY_PREFERENCE:設置該組件為Preference。
CATEGORY_LAUNCHER:設置該組件為在當前應用程序啟動器中優先級最高的Activity,通常為入口ACTION_MAIN配合使用。
CATEGORY_BROWSABLE:設置該組件可以使用浏覽器啟動。表示該activity只能用來浏覽網頁。
CATEGORY_GADGET:設置該組件可以內嵌到另外的Activity中。
注意:如果該activity想要通過隱式intent方式激活,那麼不能沒有任何category設置,至少包含一個android.intent.category.DEFAULT
// 調用浏覽器
Uri webViewUri = Uri.parse("http://blog.csdn.net/zuolongsnail");
Intent intent = new Intent(Intent.ACTION_VIEW, webViewUri);
// 調用地圖
Uri mapUri = Uri.parse("geo:100,100");
Intent intent = new Intent(Intent.ACTION_VIEW, mapUri);
// 播放mp3
Uri playUri = Uri.parse("file:///sdcard/test.mp3");
Intent intent = new Intent(Intent.ACTION_VIEW, playUri);
intent.setDataAndType(playUri, "audio/mp3");
// 調用撥打電話
Uri dialUri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, dialUri);
// 直接撥打電話,需要加上權限<uses-permission id="android.permission.CALL_PHONE" />
Uri callUri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_CALL, callUri);
// 調用發郵件(這裡要事先配置好的系統Email,否則是調不出發郵件界面的)
Uri emailUri = Uri.parse("mailto:zuolongsnail@163.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);
// 直接發郵件
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "zuolongsnail@gmail.com" };
String[] ccs = { "zuolongsnail@163.com" };
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_TEXT, "the email text");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.setType("text/plain");
Intent.createChooser(intent, "Choose Email Client");
// 發短信
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("sms_body", "the sms text");
intent.setType("vnd.android-dir/mms-sms");
// 直接發短信
Uri smsToUri = Uri.parse("smsto:10086");
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
intent.putExtra("sms_body", "the sms text");
// 發彩信
Uri mmsUri = Uri.parse("content://media/external/images/media/23");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "the sms text");
intent.putExtra(Intent.EXTRA_STREAM, mmsUri);
intent.setType("image/png");
// 卸載應用
Uri uninstallUri = Uri.fromParts("package", "com.app.test", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri);
// 安裝應用
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("/sdcard/test.apk"), "application/vnd.android.package-archive");
// 在Android Market中查找應用
Uri uri = Uri.parse("market://search?q=憤怒的小鳥");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
package mm.shandong.com.testactioncate;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
public class TestActionCateActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_action_cate);
}
//啟動activityTestComponentOtherActivity,設置intent的action為
//TestComponentOtherActivity1
public void startActivityToAction1(View view) {
Intent intent = new Intent();
intent.setAction("TestComponentOtherActivity1");
startActivity(intent);
}
//啟動activityTestComponentOtherActivity,設置intent的action為
//TestComponentOtherActivity2
public void startActivityToAction2(View view) {
Intent intent = new Intent();
intent.setAction("TestComponentOtherActivity2");
startActivity(intent);
}
//啟動activityTestComponentOtherActivity,設置intent的action為
//TestComponentOtherActivity3
public void startActivityToAction3(View view) {
Intent intent = new Intent();
intent.setAction("TestComponentOtherActivity3");
startActivity(intent);
}
//啟動action為sameAction的activity,有兩個activity設置了相同
//的action
public void startActivitySameAction1(View view) {
Intent intent = new Intent();
intent.setAction("sameAction");
startActivity(intent);
}
//啟動action為Intent.ACTION_VIEW的activity,
// 系統浏覽器的activity也設置了這個action
public void startActivitySameAction2(View view) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
}
//啟動一個設置了三個category的activity,這個category必須全都設置,
//才能啟動
public void startActivityCategory(View view) {
Intent intent = new Intent();
intent.setAction("TestActionCate3Activity");
intent.addCategory("category1");
intent.addCategory("category2");
intent.addCategory("category3");
startActivity(intent);
}
}
本人微博:honey_11
Demo下載
最後,以上例子都來源與安卓無憂,請去應用寶或者豌豆莢下載:例子源碼,源碼例子文檔一網打盡
android 常用的listview管理示例
android 常用的listview管理示例 listview作為一個常用控件,對listview的操作都應該滾瓜爛熟了。對listview 的數據管理也很熟悉。包括l
Android應用開發教程之二十三:應用程序屏幕鎖定詳解
由於此前在51寫過屏幕鎖相關的文章,在最近開發過程中也用到了屏幕鎖,今天就抽個時間將屏幕鎖的控制及實現代碼復習及更一步學習,希望能幫助朋友們對屏幕鎖
android studio上的基本動畫實現(第一篇),androidstudio
android studio上的基本動畫實現(第一篇),androidstudiohello,各位小伙伴們,在很多小伙伴們剛剛開始學習android的時候,常常會有一些p
為RecyclerView打造通用Adapter 讓RecyclerView更加好用,recyclerviewadapter
為RecyclerView打造通用Adapter 讓RecyclerView更加好用,recyclerviewadapter原文出處: 張鴻洋 (Granker