转自如下相关博客:《在android程序中打开另一个应用程序》http://www.cnblogs.com/airry66/p/3966569.html

                                    《android 在一个应用中启动另一个应用》http://hunankeda110.iteye.com/blog/1960444

                                    《Android中通过Intent调用其他应用的方法(转)》http://peirubing.iteye.com/blog/1568145

Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。 
一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动: 

1 2 3 4 5 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER);           ComponentName cn = new ComponentName(packageName, className);           intent.setComponent(cn); startActivity(intent);

或者这样:

Intent intent = new Intent();
  PackageManager packageManager = this.getPackageManager();
  intent = packageManager.getLaunchIntentForPackage(packageName);
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ;
  this.startActivity(intent);
但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。 

第一步:怎么获得包名?

PackageManager packageManager = context.getPackageManager();

packageManager.getInstalledApplications(0);

这就得到了手机上安装的所有应用的程序信息,当然包括包名,只需要查找自己需要的程序就可以了。

17 18 19 20 21 22 23 private void openApp(String packageName) { PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0 );   Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null ); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(pi.packageName);   List apps = pm.queryIntentActivities(resolveIntent, 0 );   ResolveInfo ri = apps.iterator().next(); if (ri != null ) { String packageName = ri.activityInfo.packageName; String className = ri.activityInfo.name;   Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER);   ComponentName cn = new ComponentName(packageName, className);   intent.setComponent(cn); startActivity(intent); } }

Android中通过Intent调用其他应用的方法

启动浏览器

代码与范例:

12
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));  startActivity(intent);

说明:启动浏览器并前往http://www.google.com 。

启动拨号程序

代码与范例:

12
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:138"));startActivity(intent);

说明:启动拨号程序并输入号码138。

通话

代码与范例:

123
Uri uri=Uri.parse("tel:138");Intent intent=new Intent(Intent.ACTION_CALL,uri);startActivity(intent);

说明:拨打号码138。需要为程序申请权限

发送短信

代码与范例:

1234
Uri smsUri = Uri.parse(url);Intent intent = new Intent(Intent.ACTION_VIEW, smsUri);intent.setType("vnd.android-dir/mms-sms");startActivity(intent);

说明:启动短信程序。

启动通讯录

代码与范例:

12
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people/1"));startActivity(intent);

说明:启动同学录的某一条目。

启动地图程序(Google Maps等)

代码与范例:

123
Uri mapUri = Uri.parse(url);Intent intent = new Intent(Intent.ACTION_VIEW, mapUri);startActivity(intent);

说明:启动地图程序。

搜索路线

代码与范例:

12345
Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");intent.setData(Uri.parse("http://maps.google.com/maps?myl=saddr&daddr=&dirflg=d"));startActivity(intent);

说明:启动Google Maps并搜索路线,具体的方法另外补充。

启动邮件程序

代码与范例:

12345
Uri uri =Uri.parse("mailto:xxx@example.com");Intent intent = newIntent(Intent.ACTION_SENDTO, uri);intent.putExtra(Intent.EXTRA_SUBJECT, "Hello world");intent.putExtra(Intent.EXTRA_TEXT, "Ganbarimasu");startActivity(intent);

说明:启动邮件程序并将收件人设为xxx@example.com,邮件主题设为Hello world,内容设为Ganbarimasu。

启动邮件程序并添加多个收件人

代码与范例:

123456789
Intent intent=new Intent(Intent.ACTION_SEND);     String[] tos={"me@example.com"};     String[]ccs={"you@example.com"};     intent.putExtra(Intent.EXTRA_EMAIL, tos);     intent.putExtra(Intent.EXTRA_CC, ccs);     intent.putExtra(Intent.EXTRA_TEXT, "The email body text");     intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");     intent.setType("message/rfc822");     startActivity(Intent.createChooser(intent,"Choose Email Client"));

说明:启动邮件程序并设置为发送给多个收件人。

启动邮件程序并添加附件

代码与范例:

12345
Intent intent = newIntent(Intent.ACTION_SEND);   intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");    intent.putExtra(Intent.EXTRA_STREAM,"file:///sdcard/mysong.mp3);   sendIntent.setType("audio/mp3");   startActivity(Intent.createChooser(intent,"Choose Email Client"));

说明:启动邮件程序并添加附件。

播放MP3文件

代码与范例:

1234
Intent intent = new Intent(Intent.ACTION_VIEW);Uri uri =Uri.parse("file:///sdcard/song.mp3");intent.setDataAndType(uri,"audio/mp3");startActivity(intent);

说明:启动音乐程序并播放MP3歌曲。

卸载程序

代码与范例:

123
Uri uri =Uri.fromParts("package", strPackageName, null);   Intent intent = newIntent(Intent.ACTION_DELETE, uri);   startActivity(intent);

说明:卸载包名为strPackageName的程序。

安装程序

代码与范例:

12
Uri installUri = Uri.fromParts("package",strPackageName, null);returnIt = newIntent(Intent.ACTION_PACKAGE_ADDED, installUri);

说明:安装包名为strPackageName的程序。

启动设置

代码与范例:

12
Intent intent=new Intent("android.settings.SETTINGS");startActivity(intent);

说明:进入设定程序。

启动电子市场

代码与范例:

123
Uri uri=Uri.parse("market://search?q=pname:org.breezesoft.techolite");Intent intent=new Intent(Intent.ACTION_VIEW,uri);startActivity(intent);

说明:以包名org.breezesoft.techolite为条件启动Android Market。

启动电子市场并进入程序信息界面

代码与范例:

123
Uri uri = Uri.parse("market://details?id=org.breezesoft.techolite");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);

说明:启动Android Market并进入包名为org.breezesoft.techolite的程序的详细信息界面。

从图库(Gallery)中选择并获取一张图片

代码与范例:

1234
Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(intent, 11);

说明:启动图库并中选择并获取一张图片,返回原程序。



更多相关文章

  1. android EditText设置不可写
  2. android 使用html5作布局文件: webview跟javascript交互
  3. android studio调试c/c++代码
  4. Android(安卓)Wifi模块分析(三)
  5. IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
  6. 锁屏界面
  7. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
  8. Android(安卓)version and Linux Kernel version
  9. Android(安卓)闹钟管理类的使用

随机推荐

  1. protected-broadcast 规范使用(ERROR: Se
  2. Android 手机获取时区
  3. Android EventBus二三事
  4. Android编译打包-gradle task 的依赖
  5. Android进度条学习一
  6. Android Activity的生命周期及四种启动模
  7. android截取屏幕图片
  8. Android获取网络图片并显示的方法
  9. Error:Failed to resolve: com.android.s
  10. Android SDK官方下载地址及在线SDK网址