当前位置:首页 » 安卓系统 » android信息管理系统

android信息管理系统

发布时间: 2025-05-22 06:25:42

❶ 什么是android系统,android的发展以及android的平台架构和特性

Android平台采用了整合的策略思想,包括底层Linux操作系统、中间层的中间件和上层的java应用程序。下面我把Android的特性及其架构体系结构总结一下。

一、Android的平台特性

Android平台有如下特性:

1. 应用程序框架支持组件的重用与替换。

这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。

2. Dalvik虚拟机专门为移动设备进行了优化。

Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。

3. 内部集成浏览器基于开源的WebKit引擎。

有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。

4. 优化的图形库包括2D和3D图形库,3D图形库基于OpenGL ES 1.0。

强大的图形库给游戏开发带来福音。在3G最为重要的的应用莫过于手机上网和手机游戏。

5. SQLite用作结构化的数据存储

6. 多媒体支持包括常见的音频、视频和静态印象文件格式

如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。

7. GSM电话(依赖于硬件)。

8. 蓝牙(Bluetooth)、EDGE、3G、WiFi(依赖于硬件)。

9. 照相机、GPS、指南针和加速度计(依赖于硬件)。

10. 丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成的开发环境插件。

Google提供了Android开发包SDK,其中包含了大量的类库和开发工具,并且针对Eclipse的可视化开发插件ADT。

二、Android平台架构

从上图我们可以看出,Android操作系统的体系结构可分为4层,由上到下依次是应用程序、应用程序框架、核心类库和Linux内核,其中第三层还包括Android运行时的环境。下面分别来讲解各个部分。

1. 程序应用

Android
连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。

2. 应用程序框架

开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架架构用来简化组件软件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。

以下所有的应用程序都由一系列的服务和系统组成,包括:

1)一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网络(grids)、文本框(text
boxes)、按钮(buttons),甚至是一个可嵌入的Web浏览器。

2)内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

3)一个资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串、图形和分层文件(layout files)。

4)一个通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。

5)一个活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。

3. Android程序库

Android包括一个被Android系统中各种不同组件所使用的C/C++集库。该库通过Android应用程序框架为开发者提供服务。

以下是一些主要的核心库:

1)系统C库:一个从BSD继承来的标准C系统函数库(libc),专门为基于Embedded Linux的设备定制。

2)媒体库:基于PacketVideo
OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。

3)Surface Manager:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。

4)LibWebCore:一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图。

5)SGL:一个内置的2D图形引擎。

6)3D libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。

7)FreeType:位图(bitmap)和向量(vector)字体显示。

8)SQLite:一个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。

4. Android运行库

Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效地运行多个VMs实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都是经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。

5. Linux内核

Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的硬件抽象层。

❷ 如何调用Android系统程序详细信息界面

调用Android系统“应用程序信息(Application Info)”界面“Android系统设置->应用程序->管理应用程序”列表下,列出了系统已安装的应用程序。选择其中一个程序,则进入“应用程序信息(Application Info)”界面。这个界面显示了程序名称、版本、存储、权限等信息,并有卸载、停止、清除缓存等按钮,可谓功能不少。如果在编写相关程序时(比如任务管理器)可以调用这个面板,自然提供了很大的方便。那么如何实现呢?

在最新的Android SDK 2.3(API Level 9)中,提供了这样的接口。在文档路径

docs/reference/android/provider/Settings.html#ACTION_APPLICATION_DETAILS_SETTINGS

下,有这样的描述:

public static final String ACTION_APPLICATION_DETAILS_SETTINGS Since: API Level 9

Activity Action: Show screen of details about a particular application.
In some cases, a matching Activity may not exist, so ensure you safeguard against this.
Input: The Intent's data URI specifies the application package name to be shown, with the "package" scheme. That is "package:com.my.app".
Output: Nothing.
Constant Value: "android.settings.APPLICATION_DETAILS_SETTINGS"

就是说,我们只要以android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS作为Action;“package:应用程序的包名”作为URI,就可以用startActivity启动应用程序信息界面了。代码如下:

view plain
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
startActivity(intent);

但是,在Android 2.3之前的版本,并没有公开相关的接口。
通过查看系统设置platform/packages/apps/Settings.git程序的源码,可以发现应用程序信息界面为InstalledAppDetails。
在这里(2.1)还有这里(2.2),我们可以分别看到Android2.1和Android2.2的应用管理程序(ManageApplications.java)是如何启动InstalledAppDetails的。
view plain
// utility method used to start sub activity
private void () {
// Create intent to start new activity
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClass(this, InstalledAppDetails.class);
intent.putExtra(APP_PKG_NAME, mCurrentPkgName);
// start new activity to display extended information
startActivityForResult(intent, INSTALLED_APP_DETAILS);
}

但是常量APP_PKG_NAME的定义并不相同。
2.2中定义为"pkg",2.1中定义为"com.android.settings.ApplicationPkgName"
那么,对于2.1及以下版本,我们可以这样调用InstalledAppDetails:
view plain
Intent i = new Intent(Intent.ACTION_VIEW);
i.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
i.putExtra("com.android.settings.ApplicationPkgName", packageName);
startActivity(i);

对于2.2,只需替换上面putExtra的第一个参数为"pkg"

综上,通用的调用“应用程序信息”的代码如下:
view plain
private static final String SCHEME = "package";
/**
* 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.1及之前版本)
*/
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
/**
* 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.2)
*/
private static final String APP_PKG_NAME_22 = "pkg";
/**
* InstalledAppDetails所在包名
*/
private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";
/**
* InstalledAppDetails类名
*/
private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";
/**
* 调用系统InstalledAppDetails界面显示已安装应用程序的详细信息。 对于Android 2.3(Api Level
* 9)以上,使用SDK提供的接口; 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)。
*
* @param context
*
* @param packageName
* 应用程序的包名
*/
public static void showInstalledAppDetails(Context context, String packageName) {
Intent intent = new Intent();
final int apiLevel = Build.VERSION.SDK_INT;
if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
} else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)
// 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。
final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
: APP_PKG_NAME_21);
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName(APP_DETAILS_PACKAGE_NAME,
APP_DETAILS_CLASS_NAME);
intent.putExtra(appPkgName, packageName);
}
context.startActivity(intent);
}

❸ Android5.1系统中使用代码实现后台中给某个指定号码发送的短信在信息管理器中不显示出发送信息

发送短信的方法

/**
*直接调用短信接口发短信
*@paramphoneNumber
*@parammessage
*/
publicvoidsendSMS(StringphoneNumber,Stringmessage){
//获取短信管理器
android.telephony.SmsManagersmsManager=android.telephony.SmsManager.getDefault();
//拆分短信内容(手机短信长度限制)
List<String>divideContents=smsManager.divideMessage(message);
for(Stringtext:divideContents){
smsManager.sendTextMessage(phoneNumber,null,text,sentPI,deliverPI);
}
}

删除最后一条短信的方法

/*
*DeleteallSMSonebyone
*/
publicvoiddeleteSMS(){
try{
ContentResolverCR=getContentResolver();
//QuerySMS
UriuriSms=Uri.parse("content://sms/sent");
Cursorc=CR.query(uriSms,
newString[]{"_id","thread_id"},null,null,null);
if(null!=c&&c.moveToLast()){//获取最后一条
do{
//DeleteSMS
longthreadId=c.getLong(1);
CR.delete(Uri.parse("content://sms/conversations/"+threadId),
null,null);
Log.d("deleteSMS","threadId::"+threadId);
}while(c.moveToNext());
}
}catch(Exceptione){
//TODO:handleexception
Log.d("deleteSMS","Exception::"+e);
}
}

相应权限自己添加,满意采纳

热点内容
苹果13怎么导入旧安卓手机通讯录 发布:2025-05-22 13:03:22 浏览:192
javaweb访问项目 发布:2025-05-22 13:02:30 浏览:510
一哥源码 发布:2025-05-22 12:58:13 浏览:818
iisphp500错误 发布:2025-05-22 12:50:35 浏览:811
压缩机110 发布:2025-05-22 12:50:31 浏览:2
哔咔漫画缓存路径 发布:2025-05-22 12:20:51 浏览:591
有的服务器为什么放水里 发布:2025-05-22 12:04:40 浏览:994
解压球成分排名 发布:2025-05-22 11:51:03 浏览:82
网站打赏源码 发布:2025-05-22 11:43:59 浏览:254
c语言与visualstudio 发布:2025-05-22 11:43:15 浏览:713