android启动另一应用

http://www.2cto.com/kf/201203/122910.html

Android SDK中有这样一个API:

public abstract Intent getLaunchIntentForPackage (String packageName)

如果packageName存在返回入口Intent, startActivity(Intent)可以启动应用,否则返回nullimport android.app.Activity;

下面有个小示例:

[java] view plaincopy
 
  1. import android.content.Intent;  
  2. import android.content.pm.PackageInfo;  
  3. import android.content.pm.PackageManager;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6.   
  7. public class Main extends Activity {  
  8.         /** Called when the activity is first created. */  
  9.         @Override  
  10.         public void onCreate(Bundle savedInstanceState) {  
  11.                 super.onCreate(savedInstanceState);  
  12.                 setContentView(R.layout.main);  
  13.     PackageManager packageManager = getPackageManager();   
  14.         Intent intent=new Intent();   
  15.         intent =packageManager.getLaunchIntentForPackage("pkgName");   
  16.         if(intent==null){  
  17.             System.out.println("APP not found!");  
  18.        }  
  19.         startActivity(intent);         
  20.     }  
  21. }  
  1. //-----启动我们自身写的程序------------------  
  2.         mButton01.setOnClickListener(new Button.OnClickListener(){  
  3.             public void onClick(View v) {  
  4.                 //-----核心部分----- 前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名  
  5.                 Intent intent=new Intent();  
  6.                 intent.setComponent(new ComponentName("com.droidnova.android.games.vortex",   
  7.                                                      "com.droidnova.android.games.vortex..Vortex"));  
  8.                 startActivity(intent);  
  9.             }             
  10.         });  
  11.       //-----启动系统自带的应用程序------------------  
  12.         mButton02.setOnClickListener(new Button.OnClickListener(){  
  13.             public void onClick(View v) {  
  14.                 Intent intent=new Intent();  
  15.                 intent.setComponent(new ComponentName("com.android.calendar""com.android.calendar.LaunchActivity"));  
  16.                 startActivity(intent);  
  17.             }             
  18.         });  

//这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activity 
ComponentName componetName = new ComponentName( 
//这个是另外一个应用程序的包名 
"com.poynt.weibo", 
//这个参数是要启动的Activity 
"com.poynt.weibo.ui.IndexActivity");

Android在一个应用中启动另一个应用的Activity

为 activity 添加 intent-filter 的定义。
通过测试发现,只要添加如下语句,activity就可以被正常调用:
<intent-filter>
<action android:name=""/>
</intent-filter>

相应的启动代码为:
Intent intent = new Intent();
intent.setClassName(<package name>, <class name>);
startActivity(intent); 

Activity1隐式调用Activity2时需要在AndroidManifest.xml文件中配置Activity2的action和category,具体添加下面的代码到Activity2的定义中

<intent-filter>

<action android:name="myaction2"/>

<category android:name="android.intent.category.DEFAULT"/>

<category android:name="mycategory" />

</intent-filter>

接着同样使用intent来启动Activity,代码如下:

Intent intent = new Intent("myaction2");

intent.addCategory("myCategory");

startActivity(intent);

这样就可以启动Activity2

原文地址:https://www.cnblogs.com/jiezzy/p/3750781.html