转自Android_Tutorcsdn博客:


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

public class MyReceiver extends BroadcastReceiver{

public static final String action="acc";
public void onReceive(Context context, Intent intent) {
Intent i=new Intent(context,Receivered.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}


}

1. 指定action 和type
// SIM import
Intent importIntent = new Intent(Intent.ACTION_VIEW);
importIntent.setType("vnd.android.cursor.item/sim-contact");
importIntent.setClassName("com.android.phone", "com.android.phone.SimContacts");
menu.add(0, 0, 0, R.string.importFromSim)
.setIcon(R.drawable.ic_menu_import_contact)
.setIntent(importIntent);

2. 指定action, data和type
(1)隐式查找type
示例代码:
uri: content://simcontacts/simPeople/(id)
intent = new Intent("android.intent.action.SIMEDIT",uri);
startActivity(intent);

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

配置文件中的filter设定
AndroidManifest.xml
<intent-filter>
<action android:name="android.intent.action.SIMEDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/sim-contact" />
</intent-filter>

也可以自己设定type,但只能使用 setDataAndType()

3. 其他设定intent的属性方式
Intent setComponent(ComponentName component)
Intent setClassName(Context packageContext, String className)
Intent setClassName(String packageName, String className)
Intent setClass(Context packageContext, Class<?> cls)

Intent应该算是Android中特有的东西。你可以在Intent中指定程序要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料。都指定好后,只要调用startActivity(),Android系统会自动寻找最符合你指定要求的应用程序,并执行该程序。

下面列出几种Intent的用法
显示网页:

  1. Uri uri = Uri.parse("http://www.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);

路径规划:

  1. Uri uri = Uri.parse("http://maps.google.com/maps?f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
  2. Intent it = new Intent(Intent.ACTION_VIEW,URI);
  3. startActivity(it);

拨打电话:
调用拨号程序

  1. Uri uri = Uri.parse("tel:xxxxxx");
  2. Intent it = new Intent(Intent.ACTION_DIAL, uri);
  3. startActivity(it);
  1. Uri uri = Uri.parse("tel.xxxxxx");
  2. Intent it =new Intent(Intent.ACTION_CALL,uri);
  3. 要使用这个必须在配置文件中加入<uses-permission id="android.permission.CALL_PHONE" />

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

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

发送短信

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

发送彩信

  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

  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. 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. 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);
  1. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
  3. startActivity(it);

Uninstall 程序

  1. Uri uri = Uri.fromParts("package", strPackageName, null);
  2. Intent it = new Intent(Intent.ACTION_DELETE, uri);
  3. startActivity(it);

uninstall apk
  1. Uri uninstallUri = Uri.fromParts("package", "xxx", null);
  2. returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
install apk
  1. Uri installUri = Uri.fromParts("package", "xxx", null);
  2. returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
play audio
  1. Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
  2. returnIt = new Intent(Intent.ACTION_VIEW, playUri);
  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/eoe.mp3");
  5. sendIntent.setType("audio/mp3");
  6. startActivity(Intent.createChooser(it, "Choose Email Client"));
  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
  6. //显示指定应用的详细页面(这个好像不支持了,找不到app_id)
  7. Uri uri = Uri.parse("market://details?id=app_id");
  8. Intent it = new Intent(Intent.ACTION_VIEW, uri);
  9. startActivity(it);
  10. //where app_id is the application ID, find the ID
  11. //by clicking on your application on Market home
  12. //page, and notice the ID from the address bar

更多相关文章

  1. java后台接收android客户端通过http方式发送的数据
  2. android 发送邮件
  3. Android(安卓)TextView 给文本中指定片段添加自定义点击事件
  4. Android实现指定区域截屏的实现
  5. android 8.0 wifi-host ap 开关操作
  6. android 模拟按键单值/多值输入
  7. MUI调用自定义插件(Android)
  8. android调用NotificationManager.notify无效,通知栏不显示
  9. Android(安卓)手机端与服务端POST数据交互类

随机推荐

  1. Android一行代码 搞定图片太多,太大OOM(内
  2. ok6410 android driver(2)
  3. Android(安卓)Canvas练习(9)自已绘分割突
  4. Android(安卓)自定义TextView实现文本内
  5. 程序员的双十一剁手指南,看完不剁手算我输
  6. Android之SharedPreferencesUtils,支持对
  7. Arouter异常汇总
  8. Android(安卓)Notification基础知识
  9. Android(安卓)自定义Dialog 的使用
  10. FastJson使用详解Demo