Android Intent用法详解

如果是从BroadcastReceiver 启动一个新的Activity , 不要忘记i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

[java]  view plain copy print ?
  1. public class MyReceiver extends BroadcastReceiver{  
  2. public static final String action=”acc”;  
  3. public void onReceive(Context context, Intent intent) {  
  4. Intent i=new Intent(context,Receivered.class);  
  5. i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  6. context.startActivity(i);  
  7. }  
  8. }  


1. 指定act ion 和type
// SIM import

[java]  view plain copy print ?
  1. Intent importIntent = new Intent(Intent.ACTION_VIEW);  
  2. importIntent.setType(“vnd.android.cursor.item/sim-contact”);  
  3. importIntent.setClassName(“com.android.phone”, “com.android.phone.SimContacts”);  
  4. menu.add(000, R.string.importFromSim)  
  5. .setIcon(R.drawable.ic_menu_import_contact)  
  6. .setIntent(importIntent);  


2. 指定act ion, da ta和type
(1)隐式查找type
示例代码:

[java]  view plain copy print ?
  1. uri: content://simcontacts/simPeople/(id)  
  2. intent = new Intent(“android.intent.action.SIMEDIT”,uri);  
  3. startActivity(intent);  

程序会根据data中的uri去查找匹配的type(必须的)
provider中的getType()
case SIM_PEOPLE_ID:
return “vnd.android.cursor.item/sim-contact”;

配置文件中的filter设定
AndroidManifest.xml
也可以自己设定type,但只能使用 setDataAndType()

3. 其他设定intent的属性方式

[java]  view plain copy print ?
  1. Intent setComponent(ComponentName component)  
  2. Intent setClassName(Context packageContext, String className)  
  3. Intent setClassName(String packageName, String className)  
  4. Intent setClass(Context packageContext, Class cls)  


打开其他APK文件的ACTIVITY

[java]  view plain copy print ?
  1. Intent mIntent = new Intent();  
  2. ComponentName comp = new ComponentName(“com.android.a”,”com.android.a.AbcActivity” );  
  3. mIntent.setComponent(comp);  
  4. mIntent.setAction(“android.intent.action.MAIN”);  
  5. startActivity(mIntent);  


显示网页:

[java]  view plain copy print ?
  1.  Uri uri = Uri.parse(“http://www.google.com”);  
  2. Intent it = new Intent(Intent.ACTION_VIEW,uri);  
  3. startActivity(it);  


显示地图:

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“geo:38.899533,-77.036476″);  
  2. Intent it = new Intent(Intent.Action_VIEW,uri);  
  3. startActivity(it);  


路径规划:

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);

拨打电话:
调用拨号程序

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“tel:xxxxxx”);  
  2.  Intent it = new Intent(Intent.ACTION_DIAL, uri);  
  3.  startActivity(it);  

直接拨号

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“tel.xxxxxx”);  
  2. ntent it =new Intent(Intent.ACTION_CALL,uri);  


要使用这个必须在配置文件中加入权限

发送SMS/MMS
调用发送短信的程序

[java]  view plain copy print ?
  1. Intent it = new Intent(Intent.ACTION_VIEW);  
  2. it.putExtra(“sms_body”, “The SMS text”);  
  3.  it.setType(“vnd.android-dir/mms-sms”);  
  4. startActivity(it);  


发送短信

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“smsto:0800000123″);  
  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);  
  3. it.putExtra(“sms_body”, “The SMS text”);  
  4. startActivity(it);  


发送彩信

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“content://media/external/images/media/23″);  
  2. Intent it = new Intent(Intent.ACTION_SEND);  
  3. it.putExtra(“sms_body”, “some text”);  
  4. it.putExtra(Intent.EXTRA_STREAM, uri);  
  5. it.setType(“image/png”);  
  6. startActivity(it);  


发送Email

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“mailto:xxx@abc.com”);  
  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);  
  3. startActivity(it);  


[java]  view plain copy print ?
  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”));  



[java]  view plain copy print ?
  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”));  


添加附件

[java]  view plain copy print ?
  1. Intent it = new Intent(Intent.ACTION_SEND);  
  2. it.putExtra(Intent.EXTRA_SUBJECT, “The email subject text”);  
  3. it.putExtra(Intent.EXTRA_STREAM, “file:///sdcard/mysong.mp3″);  
  4. sendIntent.setType(“audio/mp3″);  
  5. startActivity(Intent.createChooser(it, “Choose Email Client”));  


播放多媒体

//方法1.

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“file:///sdcard/song.mp3″);  
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  
  3. // it.addFlags(it.FLAG_ACTIVITY_NEW_TASK);//非必须选项  
  4. it.setDataAndType(uri, “audio/mp3″);  
  5. context.startActivity(it);  


//方法2.


[java]  view plain copy print ?
  1. Intent it = new Intent(Intent.ACTION_VIEW);  
  2. Uri uri = Uri.parse(“file:///sdcard/song.mp3″);  
  3. it.setDataAndType(uri, “audio/mp3″);  
  4. startActivity(it);  


//方法3. 启动一个播放器并播放一个系统声音

[java]  view plain copy print ?
  1. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, “1″);  
  2.  Intent it = new Intent(Intent.ACTION_VIEW, uri);  
  3.  startActivity(it);  
  4. Uninstall 程序  
  5.  Uri uri = Uri.fromParts(“package”, strPackageName, null);  
  6.  Intent it = new Intent(Intent.ACTION_DELETE, uri);  
  7.  startActivity(it);  



uninstall apk

[java]  view plain copy print ?
  1. Uri uninstallUri = Uri.fromParts(“package”, “xxx”, null);  
  2. returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);  



install apk

[java]  view plain copy print ?
  1. Uri installUri = Uri.fromParts(“package”, “xxx”, null);  
  2. eturnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);  



play audio

[java]  view plain copy print ?
  1. Uri playUri = Uri.parse(“file:///sdcard/download/everything.mp3″);  
  2. returnIt = new Intent(Intent.ACTION_VIEW, playUri);  

哈,原来你还没贴完,我再加个:

//发送附件

[java]  view plain copy print ?
  1.  Intent it = new Intent(Intent.ACTION_SEND);  
  2.  it.putExtra(Intent.EXTRA_SUBJECT, “The email subject text”);  
  3. it.putExtra(Intent.EXTRA_STREAM, “file:///sdcard/eoe.mp3″);  
  4. sendIntent.setType(“audio/mp3″);  
  5. startActivity(Intent.createChooser(it, “Choose Email Client”));  



market相关

//搜索应用

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“market://search?q=pname:pkg_name”);  
  2.  Intent it = new Intent(Intent.ACTION_VIEW, uri);  
  3. startActivity(it);  
  4. //where pkg_name is the full package path for an application  


//显示指定应用的详细页面(这个好像不支持了,找不到app_id)

[java]  view plain copy print ?
  1. Uri uri = Uri.parse(“market://details?id=app_id”);  
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  
  3. startActivity(it);  


原文网址:http://blog.csdn.net/xyz_lmn/article/details/5968056

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值