1、如何實現Activity頁面跳轉? 一、Intent intent=new Intent(this,BActivity.class); startActivity(intent); 二、Intent intent2=new Intent(); intent2.setClass(MainActivity.this, BActivity.class); startActivity(intent2); 3、Intent啓動不一樣組件的方法: 一、啓動Activity: startActivity() 、startActivtyForResult() 二、啓動Service ComponetName startService() boolean bindService() 三、啓動BroadcastReceiver:sendBroadcast()、sendOrderedBroadcast ()、sendStickyBroadcast()、sendStickyOrderedBroadcast() 4、 Intent對象大體包括7大屬性:ComponentName、 Action 、 Category 、 Data 、Type、 Extra 、Flag。 一、ComponentName屬性:意圖分顯性和隱性意圖 (1.1)、顯性意圖: Intent intent = new Intent(); ComponentName cName = new ComponentName(MainActivity.this,NextActivity.class); intent.setComponent(cName); startActivity(intent); // 實際上,以上的寫法都被簡化爲如下寫法: Intent intent = new Intent(MainActivity.this,NextActivity.class); startActivity(intent); (1.2)、隱性意圖: Intent intent3=new Intent(); ComponentName cname=new ComponentName("com.xxx.xxx","com.xxx.xxx.類名"); //能夠一個app跳到另外一個app兩個參數的意義:第一個表示要跳轉到APP的包名,第二個表示跳轉到的APP的頁面的類(class) intent3.setComponent(cname); startActivity(intent3); 二、Action屬性 :經常使用Action屬性常量 Intent對象不只能夠啓動本應用內的程序組件,也能夠啓動Android系統的其餘應用的組件,包括系統內置的程序組件(須要設置權 限)。 ACTION_MAIN:(android.intent.action.MAIN)Android程序入口。 每一個Android應用必須且只能包含一個此類型的Action聲明。【若是設置多個,則哪一個在前,執行哪一個。】 ACTION_VIEW: (android.intent.action.VIEW) 顯示指定數據。 ACTION_EDIT: (android.intent.action.EDIT) 編輯指定數據。 ACTION_DIAL: (android.intent.action.DIAL) 顯示撥號面板。 ACTION_CALL: (android.intent.action.CALL) 直接呼叫Data中所帶的號碼。 ACTION_ANSWER: (android.intent.action.ANSWER) 接聽來電。 ACTION_SEND: (android.intent.action.SEND) 向其餘人發送數據(例如:彩信/email)。 ACTION_SENDTO: (android.intent.action.SENDTO) 向其餘人發送短信。 ACTION_SEARCH: (android.intent.action.SEARCH) 執行搜索。 ACTION_GET_CONTENT: (android.intent.action.GET_CONTENT) 讓用戶選擇數據,並返回所選數據。 三、Category 屬性: Category屬性爲Action增長額外的附加類別信息。CATEGORY_LAUNCHER意味着在加載程序的時候Acticity出如今最上面,而 CATEGORY_HOME表示頁面跳轉到HOME界面。 Intent intent = new Intent(); intent.setAction(intent.ACTION_MAIN); intent.addCategory(intent.CATEGORY_HOME); startActivity(intent); 四、Data屬性:Intent利用Action屬性和Data屬性啓動Android系統內置組件的代碼 1 )Intent intent=new Intent();//打電話 intent.setAction(intent.ACTION_CALL); //intent.setAction("android.intent.action.CALL"); // 如下各項皆如此,都有兩種寫法。 intent.setData(Uri.parse("tel:10086")); startActivity(intent); 2)// 調用撥號面板 Intent intent=new Intent(); intent.setAction(intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086")); startActivity(intent); 3)//利用 Uri 打開瀏覽器、打開地圖等: //Uri uri = Uri.parse("http://www.google.com"); // 瀏覽器 Uri uri2=Uri.parse("geo:39.899533,116.036476"); // 打開地圖定位 Intent intent=new Intent(); intent.setAction(intent.ACTION_VIEW); intent.setData(uri2); startActivity(intent); 五、Type屬性: Type屬性用於指定Data所指定的Uri對應的MIME類型。MIME只要符合「abc/xyz」這樣的字符串格式便可。 Intent利用Action、Data和Type屬性啓動Android系統內置組件的代碼: Intent intent=new Intent(); Uri uri=Uri.parse("/mnt/sdcard/papa.mp4"); //type同時存在時要像下面同樣合併寫在一塊兒 intent.setDataAndType(uri, "video/*"); startActivity(intent); 六、Extra屬性: 一、經過intent.putExtra(鍵, 值)的形式在多個Activity之間進行數據交換。 Intent利用Action、Data和Type、Extra屬性啓動Android系統內置組件的代碼: //發送短信的程序 public void sms(View view){ Intent intent=new Intent(); intent.setAction(intent.ACTION_VIEW); intent.setType("vnd.android-dir/mms-sms"); intent.putExtra("sms_body", "短信內容"); startActivity(intent); } //發送短信 public void send(View view){ Uri uri=Uri.parse("smsto:10086"); Intent intent=new Intent(); intent.setAction(intent.ACTION_SENDTO); intent.setData(uri); intent.putExtra("sms_body", "短信內容"); startActivity(intent); } // 發送彩信 , 設備會提示選擇合適的程序發送 public void sendcai(View view){ Uri uri=Uri.parse("/mnt/sdcard/aaa.png"); Intent intent = new Intent(); intent.setAction(Intent. ACTION_SEND ); intent.setType("image/png"); intent.putExtra("sms_body", " 內容 "); intent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(intent); } 七、Flags屬性:Intent可調用addFlags()方法來爲Intent添加控制標記 一、FLAG_ACTIVITY_CLEAR_TOP:(效果同Activity LaunchMode的singleTask) 若是在棧中已經有該Activity的實例,就重用該實例。重用時,會讓該實例回到棧頂,所以在它上面的實例將會被移除棧。若是棧中 不存在該實例,將會建立新的實例放入棧中。 二、FLAG_ACTIVITY_SINGLE_TOP:(效果同Activity LaunchMode的singleTop) 若是在任務的棧頂正好存在該Activity的實例, 就重用該實例,而不會建立新的Activity對象。 三、FLAG_ACTIVITY_NEW_TASK: (效果相似Activity LaunchMode的singleInstance) 八、android:launchMode四種屬性 ="standard",每一次都會new一個Activity,hashcode會改變,getTaskId()不變 =" singleTop「若是在棧頂,返回時則不用new一個Activity,直接調用原來的 , 可是若是沒在棧頂,儘管棧中有也會新new一個Activity,getTaskId() 不變 ="singleTask」跟 singleTop的區別是,若是棧中已存在實例,會把實例放在 棧頂,同時 singleTask會把前面的Activity清除掉,再 按返回 鍵時,會回到 手機桌面,getTaskId()也沒變 ="singleInstance"若是當前窗口沒有該Activity實例,就會建立一個新的棧,把實例放進去,若是再重用它,不會再建立,而且TaskId會改變,即 只能new一次