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 plain copy- importandroid.content.Intent;
- importandroid.content.pm.PackageInfo;
- importandroid.content.pm.PackageManager;
- importandroid.os.Bundle;
- importandroid.view.View;
- publicclassMainextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- PackageManagerpackageManager=getPackageManager();
- Intentintent=newIntent();
- intent=packageManager.getLaunchIntentForPackage("pkgName");
- if(intent==null){
- System.out.println("APPnotfound!");
- }
- startActivity(intent);
- }
- }
- //-----启动我们自身写的程序------------------
- mButton01.setOnClickListener(newButton.OnClickListener(){
- publicvoidonClick(Viewv){
- //-----核心部分-----前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名
- Intentintent=newIntent();
- intent.setComponent(newComponentName("com.droidnova.android.games.vortex",
- "com.droidnova.android.games.vortex..Vortex"));
- startActivity(intent);
- }
- });
- //-----启动系统自带的应用程序------------------
- mButton02.setOnClickListener(newButton.OnClickListener(){
- publicvoidonClick(Viewv){
- Intentintent=newIntent();
- intent.setComponent(newComponentName("com.android.calendar","com.android.calendar.LaunchActivity"));
- startActivity(intent);
- }
- });
//这些代码是启动另外的一个应用程序的主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
更多相关文章
- Android应用程序组件Content Provider的启动过程源代码分析(3)
- Android应用程序组件Content Provider的启动过程源代码分析(5)
- Android代码实现APK文件的安装与卸载
- android 9.0 startService启动Servcie的过程分析
- android 命令行执行java 的方式
- android studio 2.2 ndk jni 开发 调试 hello world
- Android、JUnit深入浅出(七)——总…
- Android网络连接判断与处理
- Android(安卓)快速选择联系人