今天晚上Jimmy问了我一个问题,就是如何在一个应用中 通过某个事件,而去启动另外一个已安装的应用。所以愿意和大家分享一下!
而为了能让大家更加容易的理解,我写了一个简单的Demo,我们的程序有俩个按钮,其中一个点击会启动我自己写的应用(一个3D应用为例),而另外一个按钮会启动系统自带的应用(如,日历,闹钟,计算器等等).这里我一日历为例子!
首先看一下我们的效果图(点击第一个按钮为例):
下面是Demo的详细步骤:
一、新建一个Android工程命名为StartAnotherApplicationDemo.
二、修改main.xml布局,代码如下:
- <?xml version= "1.0" encoding= "utf-8" ?>
- <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
- android:orientation= "vertical"
- android:layout_width= "fill_parent"
- android:layout_height= "fill_parent"
- >
- <TextView
- android:layout_width= "fill_parent"
- android:layout_height= "wrap_content"
- android:text= "Welcome to Mr Wei's Blog."
- />
- <Button
- android:id= "@+id/button"
- android:layout_width= "fill_parent"
- android:layout_height= "wrap_content"
- android:text= "Start Another Application"
- />
- <Button
- android:id= "@+id/start_calender"
- android:layout_width= "fill_parent"
- android:layout_height= "wrap_content"
- android:text= "Start Calendar"
- />
- </LinearLayout>
- <?xml version= "1.0" encoding= "utf-8" ?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Welcome to Mr Wei's Blog."
- />
- <Button
- android:id="@+id/button"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Start Another Application"
- />
- <Button
- android:id="@+id/start_calender"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Start Calendar"
- />
- </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Welcome to Mr Wei's Blog." /> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Start Another Application" /> <Button android:id="@+id/start_calender" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Start Calendar" /> </LinearLayout>
三、修改主程序StartAnotherApplicationDemo.java代码如下:
- package com.android.tutor;
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- public class StartAnotherApplicationDemo extends Activity {
- private Button mButton01,mButton02;
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mButton01 = (Button)findViewById(R.id.button);
- mButton02 = (Button)findViewById(R.id.start_calender);
- //-----启动我们自身写的程序------------------
- mButton01.setOnClickListener( new Button.OnClickListener(){
- public void onClick(View v) {
- //-----核心部分----- 前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名
- Intent intent= new Intent();
- intent.setComponent( new ComponentName( "com.droidnova.android.games.vortex" ,
- "com.droidnova.android.games.vortex..Vortex" ));
- startActivity(intent);
- }
- });
- //-----启动系统自带的应用程序------------------
- mButton02.setOnClickListener( new Button.OnClickListener(){
- public void onClick(View v) {
- Intent intent= new Intent();
- intent.setComponent( new ComponentName( "com.android.calendar" , "com.android.calendar.LaunchActivity" ));
- startActivity(intent);
- }
- });
- }
- }
- package com.android.tutor;
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- public class StartAnotherApplicationDemo extends Activity {
- private Button mButton01,mButton02;
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mButton01 = (Button)findViewById(R.id.button);
- mButton02 = (Button)findViewById(R.id.start_calender);
- //-----启动我们自身写的程序------------------
- mButton01.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View v) {
- //-----核心部分----- 前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名
- Intent intent=new Intent();
- intent.setComponent(new ComponentName( "com.droidnova.android.games.vortex" ,
- "com.droidnova.android.games.vortex..Vortex" ));
- startActivity(intent);
- }
- });
- //-----启动系统自带的应用程序------------------
- mButton02.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View v) {
- Intent intent=new Intent();
- intent.setComponent(new ComponentName( "com.android.calendar" , "com.android.calendar.LaunchActivity" ));
- startActivity(intent);
- }
- });
- }
- }
package com.android.tutor; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class StartAnotherApplicationDemo extends Activity { private Button mButton01,mButton02; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton01 = (Button)findViewById(R.id.button); mButton02 = (Button)findViewById(R.id.start_calender); //-----启动我们自身写的程序------------------ mButton01.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { //-----核心部分----- 前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名 Intent intent=new Intent(); intent.setComponent(new ComponentName("com.droidnova.android.games.vortex", "com.droidnova.android.games.vortex..Vortex")); startActivity(intent); } }); //-----启动系统自带的应用程序------------------ mButton02.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { Intent intent=new Intent(); intent.setComponent(new ComponentName("com.android.calendar", "com.android.calendar.LaunchActivity")); startActivity(intent); } }); } }
四、执行之,将得到如上效果!
好了今天就到这里了,夜深了,收工睡觉!有什么不明白的,希望大家多留言,我会耐心解答!谢谢~