1. 程式人生 > >Activity詳解 Intent顯式跳轉和隱式跳轉, 及多個Activity之間傳值 總結

Activity詳解 Intent顯式跳轉和隱式跳轉, 及多個Activity之間傳值 總結

複製程式碼
    //web瀏覽器
    Uri uri= Uri.parse("http://www.baidu.com:8080/image/a.jpg");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    //地圖(要在 Android 手機上才能測試)
    Uri uri = Uri.parse("geo:38.899533,-77.036476");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    
//路徑規劃 Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); //撥打電話-呼叫撥號程式 Uri uri = Uri.parse("tel:15980665805"); Intent intent = new Intent(Intent.ACTION_DIAL, uri); startActivity(intent);
//撥打電話-直接撥打電話 //要使用這個必須在配置檔案中加入<uses-permission android:name="android.permission.CALL_PHONE"/> Uri uri = Uri.parse("tel:15980665805"); Intent intent = new Intent(Intent.ACTION_CALL, uri); startActivity(intent); //呼叫傳送簡訊程式(方法一) Uri uri = Uri.parse("smsto:15980665805"); Intent intent
= new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "The SMS text"); startActivity(intent); //呼叫傳送簡訊程式(方法二) Intent intent = new Intent(Intent.ACTION_VIEW); intent.putExtra("sms_body", "The SMS text"); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent); //傳送彩信 Uri uri = Uri.parse("content://media/external/images/media/23"); Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra("sms_body", "some text"); intent.putExtra(Intent.EXTRA_STREAM, uri); intent.setType("image/png"); startActivity(intent); //傳送Email(方法一)(要在 Android 手機上才能測試) Uri uri = Uri.parse("mailto:[email protected]"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); startActivity(intent); //傳送Email(方法二)(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:[email protected]")); intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題"); intent.putExtra(Intent.EXTRA_TEXT, "這是內容"); startActivity(intent); //傳送Email(方法三)(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題"); intent.putExtra(Intent.EXTRA_TEXT, "這是內容"); intent.setType("text/plain"); //選擇一個郵件客戶端 startActivity(Intent.createChooser(intent, "Choose Email Client")); //傳送Email(方法四)(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SEND); //收件人 String[] tos = {"[email protected]", "[email protected]"}; //抄送人 String[] ccs = {"[email protected]", "[email protected]"}; //密送人 String[] bcc = {"[email protected]", "[email protected]"}; intent.putExtra(Intent.EXTRA_EMAIL, tos); intent.putExtra(Intent.EXTRA_CC, ccs); intent.putExtra(Intent.EXTRA_BCC, bcc); intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題"); intent.putExtra(Intent.EXTRA_TEXT, "這是內容"); intent.setType("message/rfc822"); startActivity(Intent.createChooser(intent, "Choose Email Client")); //傳送Email且傳送附件(要在 Android 手機上才能測試) Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mp3/醉紅顏.mp3"); intent.setType("audio/mp3"); startActivity(Intent.createChooser(intent, "Choose Email Client")); //播放媒體檔案(android 對中文名的檔案支援不好) Intent intent = new Intent(Intent.ACTION_VIEW); //Uri uri = Uri.parse("file:///sdcard/zhy.mp3"); Uri uri = Uri.parse("file:///sdcard/a.mp3"); intent.setDataAndType(uri, "audio/mp3"); startActivity(intent); Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); //音樂選擇器 //它使用了Intent.ACTION_GET_CONTENT 和 MIME 型別來查詢支援 audio/* 的所有 Data Picker,允許使用者選擇其中之一 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); //Intent.createChooser:應用選擇器,這個方法建立一個 ACTION_CHOOSER Intent startActivity(Intent.createChooser(intent, "選擇音樂")); Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT); intent1.setType("audio/*"); Intent intent2 = new Intent(Intent.ACTION_CHOOSER); intent2.putExtra(Intent.EXTRA_INTENT, intent1); intent2.putExtra(Intent.EXTRA_TITLE, "aaaa"); startActivity(intent2); // //設定桌布 // Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); // startActivity(Intent.createChooser(intent, "設定桌布")); //解除安裝APK //fromParts方法 //引數1:URI 的 scheme //引數2:包路徑 //引數3: Uri uri = Uri.fromParts("package", "com.great.activity_intent", null); Intent intent = new Intent(Intent.ACTION_DELETE, uri); startActivity(intent); //安裝APK(???) Uri uri = Uri.fromParts("package", "com.great.activity_intent", null); Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri); startActivity(intent); //調用搜索 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, "android"); startActivity(intent);

 多個Activity之間傳值

可以通過Bundle物件儲存需要傳遞的資料,例如:
  在IntentDemoActivity裡面傳值,
  Intent explicitIntent=new Intent(IntentDemoActivity.this, ExplicitActivity.class); //這是在Intent的建構函式中指定
  EditText nameText=(EditText)findViewById(R.id.username);
  // 通過Bundle物件儲存需要傳遞的資料 
  Bundle bundle=new Bundle();
  bundle.putString("userName", nameText.getText().toString());
  //把Bundle物件bundle給explicitIntent
  explicitIntent.putExtras(bundle);
  startActivity(explicitIntent);
  在ExplicitActivity獲取值:
  //獲取Intent中的Bundle物件
  Bundle bundle = this.getIntent().getExtras();
  //獲取Bundle中的資料,注意型別和key
  String userName=bundle.getString("userName");
兩個個Activity之間切換

在ExplicitActivity頁面上加一個返回按鈕,並在事件寫如下程式碼:

/*給上一個Activity返回結果*/

Intent intent=new Intent(ExplicitActivity.this, IntentDemoActivity.class); //這是在Intent的建構函式中指定 ExplicitActivity.this.setResult(RESULT_OK,intent); /*結束本Activity*/ ExplicitActivity.this.finish();

這樣就返回到IntentDemoActivity這個Activity去了。