Intent 意图 用于Activity之间的数据传递
转自:http://blog.sina.com.cn/s/blog_83940dfb0100veas.html
用于Activity之间的数据传递 在起始Activity中,发送数据 protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.thisactivity); Intent intent = new Intent(); //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity intent.setClass(ThisActivity.this,TargetActivity.class); //绑定数据 intent.putExtra("username",username);//也可以绑定数组 intent.putExtra("userpass",userpass); //打开目标Activity startActivity(intent); } 在目标Activity中,接收数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.targetactivity); //获得意图 Intent intent = getIntent(); //读取数据 String name = intent.getStringExtra("username"); String pass = intent.getStringExtra("userpass); } 也可以适用Bundle(捆) 在起始Activity中,发送数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.thisactivity); Intent intent = new Intent(); //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity intent.setClass(ThisActivity.this,TargetActivity.class); //一次绑定多个数据 Bundle bundle = new Bundle(); bundle.putString("username",username); bundle.putString("userpass",userpass); intent.putExtras(bundle); //打开目标Activity startActivity(intent); } 在目标Activity中,接收数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.targetactivity); //获得意图 Intent intent = getIntent(); //读取数据 Bundle bundle = intent.getExtras(); String name = bundle.getString("username"); String pass = bundle.getString("userpass"); } 当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,也可以使用startActivityForResult(Intent intent, int requestCode);方法。 在起始Activity中,发送数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.thisactivity); Intent intent = new Intent(); //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity intent.setClass(ThisActivity.this,TargetActivity.class); //绑定数据 intent.putExtra("username",username);//也可以绑定数组 intent.putExtra("userpass",userpass); //打开目标Activity startActivityForResult(intent,1); } //需要重写onActivityResult方法 protected void onActivityResult(int requestCode, int resultCode, Intent intent){ super.onActivityResult(requestCode,resultCode,intent); //判断结果码是否与回传的结果码相同 if(resultCode == 1){ //获取回传数据 String name = intent.getStringExtra("name"); String pass = intent.getStringExtra("pass); //对数据进行操作 ...... } 在目标Activity中,接收数据: protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.targetactivity); //获得意图 Intent intent = getIntent(); //读取数据 String name = intent.getStringExtra("username"); String pass = intent.getStringExtra("userpass); //从EditText中获取新的数据给name和pass name = editText1.getText().toString(); pass = editText2.getText().toString() //数据发生改变,需要把改变后的值传递回原来的Activity intent.putExtra("name",name); intent.putExtra("pass",pass); //setResult(int resultCode,Intent intent)方法 setResult(1,intent); //销毁此Activity,摧毁此Activity后将自动回到上一个Activity finish(); }
下面是转载来的其他的一些Intent用法实例(转自javaeye) 显示网页 1. Uri uri = Uri.parse("http://google.com"); 2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 3. startActivity(it); 显示地图 1. Uri uri = Uri.parse("geo:38.899533,-77.036476"); 2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 3. startActivity(it); 4. //其他 geo URI 範例 5. //geo:latitude,longitude 6. //geo:latitude,longitude?z=zoom 7. //geo:0,0?q=my+street+address 8. //geo:0,0?q=business+near+city 9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom 路径规划 1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); 2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 3. startActivity(it); 4. //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456 打电话 1. //叫出拨号程序 2. Uri uri = Uri.parse("tel:0800000123"); 3. Intent it = new Intent(Intent.ACTION_DIAL, uri); 4. startActivity(it); 1. //直接打电话出去 2. Uri uri = Uri.parse("tel:0800000123"); 3. Intent it = new Intent(Intent.ACTION_CALL, uri); 4. startActivity(it); 5. //用這個,要在 AndroidManifest.xml 中,加上 6. //<uses-permission id="android.permission.CALL_PHONE" /> 传送SMS/MMS 1. //调用短信程序 2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 3. it.putExtra("sms_body", "The SMS text"); 4. it.setType("vnd.android-dir/mms-sms"); 5. startActivity(it); 1. //传送消息 2. Uri uri = Uri.parse("smsto://0800000123"); 3. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 4. it.putExtra("sms_body", "The SMS text"); 5. startActivity(it); 1. //传送 MMS 2. Uri uri = Uri.parse("content://media/external/images/media/23"); 3. Intent it = new Intent(Intent.ACTION_SEND); 4. it.putExtra("sms_body", "some text"); 5. it.putExtra(Intent.EXTRA_STREAM, uri); 6. it.setType("image/png"); 7. startActivity(it); 传送 Email 1. Uri uri = Uri.parse("mailto:xxx@abc.com"); 2. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 3. startActivity(it); 1. Intent it = new Intent(Intent.ACTION_SEND); 2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com"); 3. it.putExtra(Intent.EXTRA_TEXT, "The email body text"); 4. it.setType("text/plain"); 5. startActivity(Intent.createChooser(it, "Choose Email Client")); 1. Intent it=new Intent(Intent.ACTION_SEND); 2. String[] tos={"me@abc.com"}; 3. String[] ccs={"you@abc.com"}; 4. it.putExtra(Intent.EXTRA_EMAIL, tos); 5. it.putExtra(Intent.EXTRA_CC, ccs); 6. it.putExtra(Intent.EXTRA_TEXT, "The email body text"); 7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); 8. it.setType("message/rfc822"); 9. startActivity(Intent.createChooser(it, "Choose Email Client")); 1. //传送附件 2. Intent it = new Intent(Intent.ACTION_SEND); 3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); 4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3"); 5. sendIntent.setType("audio/mp3"); 6. startActivity(Intent.createChooser(it, "Choose Email Client")); 播放多媒体 Uri uri = Uri.parse("file:///sdcard/song.mp3"); Intent it = new Intent(Intent.ACTION_VIEW, uri); it.setType("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); Market 相关 1. //寻找某个应用 2. Uri uri = Uri.parse("market://search?q=pname:pkg_name"); 3. Intent it = new Intent(Intent.ACTION_VIEW, uri); 4. startActivity(it); 5. //where pkg_name is the full package path for an application 1. //显示某个应用的相关信息 2. Uri uri = Uri.parse("market://details?id=app_id"); 3. Intent it = new Intent(Intent.ACTION_VIEW, uri); 4. startActivity(it); 5. //where app_id is the application ID, find the ID 6. //by clicking on your application on Market home 7. //page, and notice the ID from the address bar Uninstall 应用程序 1. Uri uri = Uri.fromParts("package", strPackageName, null); 2. Intent it = new Intent(Intent.ACTION_DELETE, uri); 3. startActivity(it);