Android应用程序不出现在最近打开程序列表里

在开发的过程中,我们肯定会遇到这样的问题:不希望或者不需要应用或者页面出现在最近打开程序列表中。比如: 应用: 一键锁屏应用,点击应用图标,锁屏,结束应用 一些比较私密的应用程序,这个你懂得 页面: 一些应用支持第三方授权登录,授权页不应该出现在最近打开程序列表中 应用通过浏览器打开地图或者是其他的网页,浏览器不应该出现在最近打开程序列表中 关于页面,其实就是那些“中间页面”,就是那些用户无法直接进入的页面,都应该考虑要不要出现在最近程序列表中。 其实Android本身对此有很好的支持,只是目前很多应用并没有用到,可以说很大部分的开发者也没注意到这个问题。 方法一 设置启动的flags /** * If set, the new activity is not kept in the list of recently launched * activities. */ public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 0x00800000; Intent intent = new Intent(this, WaitingFallBackDialog.class); intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); startActivity(intent); 方法二 AndroidManifest.xml中activity标签下加android:excludeFromRecents =“true"即可。 方法三 这个其实是方法一的延伸,以及对现状的改善。对于别人已经发布的应用,我们没有办法改变其内部行为。如果不想自己打开的应用出现在最近应用列表中的话,可以自己做一个app来启动那些应用,intent指定flag: intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 以下是我写一个实现:https://raw.github.com/laomo/Starter/650d1c06f5f8a35c7ec8ec2a45d0659d5e71c0b6/Starter.apk 源码:https://github.com/laomo/Starter

八月 29, 2012

Android SDK各版本源码

http://repository.grepcode.com/java/ext/com/google/android/android/ 以上地址有各个版本android sdk源代码,而且持续更新,相当不错。

八月 21, 2012

Android开发周边

1.设置adb环境变量 a.ubuntu: sudo gedit ~/.bashrc,在最后添加: export PATH=${PATH}:你的sdk的路径/platform-tools 或者export PATH=${PATH}:你的sdk的路径/tools(老版本)根据实际情况 source ~/.bashrc 不重启生效 b.windows xp下配置环境变量 右击我的电脑->属性->高级->环境变量,在下面栏中找到path这一项,点编辑,将 E:\android-sdk-windows\platform-tools添加到后面,注意先加一个;(分号)因为各个环境变量之间以分号间隔!! 还有就是android-sdk-windows下tools目录下的命令,在调试时经常用到可以一并加入path。 2.Android的UI结构试图工具 hierarchyviewer HierarchyView是Android SDK中自带了一个查看UI布局层级结构的工具。在模拟器运行的情况下,使用该工具可以将当前的Activity中的UI组件们以对象树的形式展现出来, 每一个组件所包含的属性也能窥探得到。在对象树上的任意节点可以看到该节点及以下节点的显示效果。 使用HierarchyView能深入全面的理解xml布局文件,更可以通过它来学习别人优秀的布局技巧。同时也更能更深入更全面更整体的把握xml布局文件。体会UI和 代码(java code)以及资源(res)的相互分离。

五月 24, 2012

Android Theme and styles

Android 使用Theme and styles,简化开发,提高开发效率 Theme就像系统主题,可以定义一套完整的"style"。 系统已经预定义了很多Theme,你也可以定义自己的Theme。 例如:系统默认的是黑色背景,白色字体,当然还有别的属性。 单个Activity或者整个应用设置主题使用: android:theme="@android:style/Theme.Light" 即可设置背景为白色,字体黑色。 使用style可以针对某个视图指定样式。

三月 28, 2012

完美实现同时分享图片和文字(Intent.ACTION_SEND)

使用以下代码可以很好的完成同时分享图片和文字的功能: private void share(String content, Uri uri){ Intent shareIntent = new Intent(Intent.ACTION_SEND); if(uri!=null){ shareIntent.putExtra(Intent.EXTRA_STREAM, uri); shareIntent.setType("image/*"); //当用户选择短信时使用sms_body取得文字 shareIntent.putExtra("sms_body", content); }else{ shareIntent.setType("text/plain"); } shareIntent.putExtra(Intent.EXTRA_TEXT, content); //自定义选择框的标题 //startActivity(Intent.createChooser(shareIntent, "邀请好友")); //系统默认标题 startActivity(shareIntent); }

二月 6, 2012

Android源码开发中单个模块的编译自动化

# !/bin/sh . build/envsetup.sh lunch 1 case $1 in "pc") mmm packages/apps/Contacts/ find out -name Contacts.apk |xargs -t -i adb push {} system/app/ ;; "pp") mmm packages/providers/ContactsProvider find out -name ContactsProvider.apk |xargs -t -i adb push {} system/app/ ;; "ph") mmm packages/apps/Phone/ find out -name Phone.apk |xargs -t -i adb push {} system/app/ ;; "pf") mmm frameworks/base find out -name framework.jar |xargs -t -i adb push {} system/framework/ ;; "pm") mmm packages/apps/Mms/ find out -name Mms....

九月 2, 2011

Android对数据库表的一个约定:每张表都应该至少有_id这列

Android对数据库表有一个约定。就是每张表都应该至少有_id这列。ListView在使用CursorAdapter及其子类适配 cursor的时候,会默认的获取 _id 这列的值,如果你建的表没有 _id这列或者你的cursor中没有_id这列(查询时的projection中没有_id)就报错了。所以使用CursorAdapter及其子类的时候一定要使查询时的projection包含_id。CursorAdapter中相关代码如下: 1.注释 /** * Adapter that exposes data from a {@link android.database.Cursor Cursor} to a * {@link android.widget.ListView ListView} widget. The Cursor must include * a column named "_id" or this class will not work. */ 2.构造方法 public CursorAdapter(Context context, Cursor c) { init(context, c, true); } public CursorAdapter(Context context, Cursor c, boolean autoRequery) { init(context, c, autoRequery); } protected void init(Context context, Cursor c, boolean autoRequery) { boolean cursorPresent = c !...

八月 24, 2011