Focus on technology, enjoy life!—— QQ:804212028
瀏覽鏈接:http://blog.csdn.net/y18334702058/article/details/44624305
- 主題:Intent學習
-Intent(意圖)主要是解決Android應用的各項組件之間的通訊問題。Intent消息傳遞是一種組件間運行時綁定的機制。
Intent和Bundle機制
Intent和Bundle實現從一個Activity帶參數轉換到另一個Activity的代碼例子
在activity1的Intent裏綁定信息。
Intent intent = new Intent(active1.this, active2.class);
Bundle bundle = new Bundle();
bundle.putString("NAME", "蛋蛋");
intent.putExtras(bundle);
startActivity(intent);
再到activity2裏取出信息。
Bundle bundle = this.getIntent().getExtras();
String str = bundle.getString("NAME");
Log.v("tag",str);//在Logcat窗口打印獲取的信息
Intent和 Intent Filter區別:
-Intent在Android中被翻譯爲”意圖”,它是activity,service和broadcast receiver之間互相激活時傳遞信息的”信使”。它類似於我們WEB中的HttpServletRequest.
-而Intent Filter相當於我們給Servlet配置的url-patten, 用於匹配某個具體的Intent對象.
Intent用法舉例:
顯示網頁:
Uri uri = Uri.parse("http://www.google.com");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
顯示地圖:
Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent it = new Intent(Intent.Action_VIEW,uri);
startActivity(it);
路徑規劃:
Uri uri = Uri.parse("http://maps.google.com");
Intent it = new Intent(Intent.ACTION_VIEW,URI);
startActivity(it);
撥打電話:
Uri uri = Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
Uri uri = Uri.parse("tel.xxxxxx");
Intent it =new Intent(Intent.ACTION_CALL,uri);
要使用這個必須在配置文件中加入
<uses-permission id="android.permission.CALL_PHONE" />
發送短信
Uri uri = Uri.parse("smsto:0800000123");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "The SMS text");
startActivity(it);
發送彩信
Uri uri = Uri.parse("content://media/external/images/media/23");
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra("sms_body", "some text");
it.putExtra(Intent.EXTRA_STREAM, uri);
it.setType("image/png");
startActivity(it);
發送Email
Uri uri = Uri.parse("mailto:[email protected]");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.setType("text/plain");
startActivity(Intent.createChooser(it, "Choose Email Client"));
Intent it=new Intent(Intent.ACTION_SEND);
String[] tos={"[email protected]"};
String[] ccs={"[email protected]"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it, "Choose Email Client"));
添加附件
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it, "Choose Email Client"));
播放多媒體
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri, "audio/mp3");
startActivity(it);
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
Uninstall 程序
Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);
Intent中傳遞對象的兩種方法
一種是Bundle.putSerializable(Key,Object);
另一種是Bundle.putParcelable(Key,Object);
當然這些Object是有一定的條件的,前者是實現了Serializable接口,而後者是實現了Parcelable接口。
很多人知道在activity之間傳遞對象時有兩個選擇一個是Parcelable,另外一個是Serializable。但究竟我們該何時使用其中的一個呢?
1.在使用內存的時候,Parcelable類比Serializable性能高,所以推薦使用Parcelable類。
2.Serializable在序列化的時候會產生大量的臨時變量,從而引起頻繁的GC。
3.Parcelable不能使用在要將數據存儲在磁盤上的情況,因爲Parcelable不能很好的保證數據的持續性在外界有變化的情況下。儘管Serializable效率低點,也不提倡用,但在這種情況下,還是建議你用Serializable。
Focus on technology, enjoy life!—— QQ:804212028
瀏覽鏈接:http://blog.csdn.net/y18334702058/article/details/44624305