zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    移动端前端开发调试
    webkit图片滤镜
    ruby安装sass报错解决办法
    mongodb的查询语句学习摘要
    signedCookies
    [cookie篇]从cookie-parser中间件说起
    node.js下mongoose简单操作实例
    在ExpressJS中设置二级域名跨域共享Cookie
    Node.js开发工具、开发包、框架等总结
    hibernate框架学习笔记4:主键生成策略、对象状态
  • 原文地址:https://www.cnblogs.com/jiezzy/p/3750781.html
Copyright © 2011-2022 走看看