编写:徐建祥(netpirate@gmail.com)
日期:2010/12/13
网址:http://www.anymobile.org
打开程序的入口有很多个:
shell 命令行运行;
Launcher待机界面执行;
状态通知栏运行;
桌面快捷方式运行;
软件中调用运行;
安装软件后执行“OPEN”运行!
前面几项,调用程序的代码如下(参考:com.android.Launcher/.Launcher.java):
- Intent intent = new Intent(this, TestActivity.class);
- intent.setAction(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
- this.startActivity(intent);
而安装软件后,点击“Open”调用的代码如下(参考:com.android.packageinstaller/.InstallAppDone.java):
- Intent intent = new Intent(this, TestActivity.class);
- this.startActivity(intent);
如果用户安装软件后立刻执行“Open”,运行程序后,按HOME键返回到后台,然后再通过别的几种方法运行程序,则会再起一个MAIN程序。这是因为Intent的处理机制是,先比较Activity,再比较Action、Flag、bnds。。。,前后两张方式的Action不一样,一个有LAUNCHER ACTION,一个没有,所以会认为是启动两个不同的INTENT。
目前只想到一个简单的处理方式:
程序入口MAIN程序:SplashActivity.java
程序原入口程序:LoginActivity.java
启动程序后,在状态通知栏上添加快捷通知,代码如下:
- package org.anymobile.test;
- import android.app.Activity;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- public class SplashActivity extends Activity
- {
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- this.showNotification(this.getBaseContext(), -1, "Test is Running!", "Test Start Up!");
-
- Intent intent = this.getIntent();
- if (intent.hasCategory(Intent.CATEGORY_LAUNCHER))
- {
- intent = new Intent(this, TestActivity.class);
- this.startActivity(intent);
- }
- else
- {
- intent = new Intent();
- ComponentName componentName = new ComponentName(this, SplashActivity.class);
- intent.setComponent(componentName);
-
-
- intent.setAction(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-
- this.startActivity(intent);
- }
-
- this.finish();
- }
- public void showNotification(Context context,int iResIcon,String sNotifybar,String sNofitymsg)
- {
-
- NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
-
- CharSequence from = "Test";
- CharSequence message = sNofitymsg;
-
- Intent intent = new Intent();
- ComponentName componentName = new ComponentName(context, TestActivity.class);
- intent.setComponent(componentName);
-
- intent.setAction(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-
- PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
- Notification notification =
- new Notification(iResIcon,sNotifybar, System.currentTimeMillis());
- notification.flags = notification.flags | Notification.FLAG_ONGOING_EVENT;
- notification.defaults =
- Notification.DEFAULT_LIGHTS;
- notification.setLatestEventInfo(context, from, message, contentIntent);
- line-height: 18px; color: black; background-co
分享到:
相关推荐
当启动一个activity的时候他将进入返回栈的栈顶。系统不会管栈内是否有相同的activity,方式像后入先出。 singleTop方式是在活动启动的时候,系统先判定栈顶是否有相同的活动,如果没有则新建活动,否则将不新建...
一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。 其中standard是系统默认的启动...
activity的启动方式,支持一下,谢谢
使用Intent filter来实现不同应用中Activity的相互跳转,点击A应用中的Activity,就跳转到B应用中的Activity,这种方式可以实现从一个应用的Activity 跳转到另一个应用的Activity,它们之间还可以传递数据。
Activity启动方式,短信可以分屏,Contacts不允许分屏
问题描述: 在执行docker run -p 19918:19918/tcp -v /etc/localtime:/etc/localtime时候后 ...补充知识:docker中开启时运行多个不同进程,安装ssh,并在启动docker时与jenkins同时启动运行 最近在做
Activity和Service是应用程序的核心组件,程序框架层提供了一套完整的机制来协助应用程序启动Activity和Service
清晰的Log打印出执行了哪些方法,并且打印出了taskID
BroadcastReceiver中启动Activity,broadcast不会直接显示一个用户界面,而是启动一个activity来响应它们所接受到的信息或是使用 NotificationManager警示用户。Notification有很多方式能引起用户的注意。
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。 本文档讲解Android中Activity的启动模式
点击“使用显示启动”按钮和“使用隐式启动”按钮,均能跳转至界面2,如图2所示,前者使用显示启动方式,后者使用隐式启动方式,两种启动方式均将界面1中的数据传递至界面2中。 2、 点击界面1中的按钮后,跳转至...
简单的去理解 启动activity的方式 主要是介绍了 startActivityForResult 这个API
[VS2005]解决“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题” 今天在准备发布用VS2005写的那个程序时,拷贝到我同事机器上,双击突然出现了“由于应用程序的配置不正确,...
activity四种启动模式,
通过快捷方式打开特定Activity但不呼起应用,让你的快捷方式使用更方便,想去哪就去吗。
对于大多数Oracle DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle 8i以后,系统将Server Manager的所有功能都集中到了SQL*Plus中,也就是说从8i以后对于数据库的启动和...
近年来,电力电子技术和电力电子器件都有了很大发展,从根本上解决了电动机控制中存在的一些难题,特别是智能开关技术在解决大、中容量的电动机启动问题中有着卓越的功能,是替代传统启动方式的一项新技术。...
猜测可能会是快捷方式的错误导致系统创建两个应用,就也是同一个应用会有两个PID,结果在控制台查看打印的LOG,不同方式启动的LOG如下: 代码如下:09-22 09:39:11.929: INFO/ActivityManager(61): Starting: Intent ...
易语言快捷方式启动源码,快捷方式启动,创建快捷方式,取启动目录,SHGetSpecialFolderLocation,SHGetPathFromIDListA,MoveFileExA
安卓Activity活动的四种启动方式,适合新手理解记忆活动的四种启动方式。