无需言 做自己 业 ,精于勤 荒于嬉.

Android杂项 Android中的库

发表日期:2015-07-08 21:53:14 | 来源: | 分类:Android杂项

Android中的类库:

1、Android.util 核心使用包(看名字就知道啦),包括了低级类,例如,专用的容器、字符串格式化和XML解析程序。

2、Android.os 操作系统包,提供了基本操作系统服务的访问时间,例如,消息传递、进程间通信、始终函数和调试。

3、Android.graphic 图形API提供了支持画布、颜色和绘画原语的低级图行类,让你可以在画布上画画。

4、Android.text 用来显示和解析文本的文本处理工具。

5、Android.database 当使用数据库的时候,提供处理游标(cursor)所要求的低级类。

6、Android.content 内容API通过处理资源、内容提供器和包的服务,来管理数据访问和发布。

7、Android.view View是核心用户界面类。所有的用户界面元素都是使用一系列View来构造的,用来提供交互组件。

8、Android.widget 构建在View包的基础上,Widget类是已经创建好的用户界面元素,可以直接在应用程序中使用,他们包含列表、按键和布局。

9、Com.google.android.maps 一个高级API,提供了对本地地图控件的访问,可以再应用程序中使用这些控件,它包括MapView控件以及用来对嵌入的地图进行注释和控制的Overlay和MapController类。

10、Android.app 一个提供了对应用程序模型进行访问的高级包。应用程序包包含活动(Acitivity)和服务(Service)API,它形成所有应用程序的基础。

11、Android.provider 为了方便开发人员对某些标注的内容提供器进行访问,provider包提供了一些类,从而提供了对所有的android发行版中包含的标准数据库的访问。

12、Android.telephony telephony Api允许直接与蛇鞭的电话栈进行交互,让你可以直接打电话、监控电话状态以及收发SMS消息。

13、Android.webkit webKit 包提供了与基于Web的内容相关的API,包括一个WebView控件,可以再活动或许cookie管理器重嵌入一个浏览器。

除了Android API之外,android栈还包含了一些可以提供程序框架使用的c/c++库集合:

1、OpenGL 基于O喷GL ES ApI 的用来支持3D图形的库。

2、Free Type 支持位图和矢量字体渲染。

3、SGL 用来提供2D图形引擎的核心库。

4、Libc 为基于Linux的嵌入式设备而优化的标注C库。

5、SQLite 用来存储数据的轻量级关系数据库引擎

6、SSL 用来支持使用安全套接字层(Secure Sockets Layer)加密协议的安全Internet通信。

7、Android.location 基于位置的服务API让应用程序可以访问到设备当前的物理位置,不管使用什么样硬件或技术来确定位置,基于位置的服务都提供了对位置信息的通用访问。

8、Android.media 媒体API提供了对音频和视频文件的回收和录制的支持,包括留媒体。

9、Android.opengl android使用OpenGL ES API提供了强大的3d渲染引擎,这种酒可以使用它来创建动态的3D用户界面。

10、Android.hardware 当可用的时候,硬件API就会提供传感器硬件,包括摄像头、加速计和罗盘传感器。

11、Android.buetooth, android.net.wifi和android.telephony android也提供了对硬件平台的低级访问,包括蓝牙,wifi和电话硬件。

阅读全文 »

Android杂项 Manifest.permission_group android所有授权常量2

发表日期:2015-07-08 21:49:05 | 来源: | 分类:Android杂项

常量

ACCOUNTS

直接通过统计管理器访问管理的统计

COST_MONEY

可以用来让用户花钱但不需要通过与他们直接牵涉的权限

DEVELOPMENT_TOOLS

与开发联盟特征相连的权限组

HARDWARE_CONTROLS

被用来提供直接访问硬件设备的权限

LOCATION

用来允许访问用户的当前位置的权限

MESSAGES

用来允许应用发送用户收到的被拦截的信息

NETWORK

用来提供访问网络服务的权限

PERSONAL_INFO

用于提供访问用户私人数据如联系人、日历、电子邮件等的权限

PHONE_CALLS

用于跟访问和修改拨号状态如截取去话信息、读取和修改电话状态等的权限

STORAGE

与SD卡访问相关联的权限组

SYSTEM_TOOLS

与系统API有关联的权限组

 

阅读全文 »

Android杂项 Manifest.permission android所有授权常量

发表日期:2015-07-08 21:47:45 | 来源: | 分类:Android杂项

常量

<td style="border-color: windowtext;border-width: 1px;height: 36px;width: 237px;padding: 0 7px" wi

ACCESS_CHECKIN_PROPERTIES

允许在登入数据库的时候读写其中的属性表,并上传改变的值

ACCESS_COARSE_LOCATION

允许应用访问范围(如WIFI)性的定位

ACCESS_FINE_LOCATION

允许应用访问精确(如GPS)性的定位

ACCESS_LOCATION_EXTRA_COMMANDS

允许应访问额外的提供定位的指令

ACCESS_MOCK_LOCATION

允许应用创建用于测试的模拟定位提供者

ACCESS_NETWORK_STATE

允许应用访问网络上的信息

ACCESS_SURFACE_FLINGER

允许应用使用低版本视图的特征

ACCESS_WIFI_STATE

允许应用访问关羽Wi-Fi网络的信息

ACCOUNT_MANAGER

允许应用进入帐户认证

AUTHENTICATE_ACCOUNTS

允许应用为ACCOUNT_MANAGER扮演一个帐户认证系统 

BATTERY_STATS

允许应用去统计电源信息

BIND_APPWIDGET

允许应用告诉AppWidget哪个应用能够访问该AppWidget的数据  

BIND_DEVICE_ADMIN

必须通过关机接收者的请求来确保只有系统能够与之交互

BIND_INPUT_METHOD

必须通过InputMethodService的请求来确保只有系统能够与之绑定

BIND_WALLPAPER

必须通过WallpaperService的请求来确保只有系统能够与之绑定

BLUETOOTH

允许应用去连接蓝牙设备

BLUETOOTH_ADMIN

允许应用找到与之连接的蓝牙设备

BRICK

被请求废止设备(非常危险)

BROADCAST_PACKAGE_REMOVED

允许应用发出一个程序包被移除的广播消息

BROADCAST_SMS

允许应用发出一个收到短信的消息

BROADCAST_STICKY

允许应用发出一个与intent相连的消息

BROADCAST_WAP_PUSH

允许应用发出一个收到WAP PUSH的广播消息

CALL_PHONE

允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的拨打程序

CALL_PRIVILEGED

允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的任意号码的拨打,包括紧急号码.

CAMERA

能够启动照相机设备的请求

CHANGE_COMPONENT_ENABLED_STATE

允许应用去改变一个应用是否是激活状态

CHANGE_CONFIGURATION

允许应用修改当前的配置,如本地设置

CHANGE_NETWORK_STATE

允许应用改变网络的连接状态

CHANGE_WIFI_MULTICAST_STATE

允许应用进入Wi-Fi的组播方式

CHANGE_WIFI_STATE

允许应用改变Wi-Fi的连接状态

CLEAR_APP_CACHE

允许应用清除所有安装在设备上的应用的缓存

CLEAR_APP_USER_DATA

允许应用清除使用者的信息资料

CONTROL_LOCATION_UPDATES

允许从广播设备来更新或不更新本地的消息

DELETE_CACHE_FILES

允许应用删除掉缓存文件

DELETE_PACKAGES

允许应用删除掉程序包

DEVICE_POWER

允许低权限的访问电源管理项

DIAGNOSTIC

允许应用诊断程序资源

DISABLE_KEYGUARD

允许应用禁用键盘锁

DUMP

允许应用从系统服务中恢复转储的信息

EXPAND_STATUS_BAR

允许应用扩大或缩小状态栏

FACTORY_TEST

如制造商测试的应用一样用终极权限用户运行

FLASHLIGHT

允许访问手电筒

FORCE_BACK

允许应用强制的返回操作而不论是不是最终的activity

GET_ACCOUNTS

允许应用访问账目服务中的统计清单

GET_PACKAGE_SIZE

允许应用查找出任何程序包使用的空间

GET_TASKS

允许应用找到关于当前或最近运行的任务和在哪些acitivities里运行

GLOBAL_SEARCH

这个权限可以被内容提供者用来允许使用全程搜索他们的数据

HARDWARE_TEST

允许访问硬件及周边设备.

INJECT_EVENTS

允许应用注入用户事件(键盘、触摸)到事件中然后提供给任意的窗口  

INSTALL_LOCATION_PROVIDER

允许应用安装一个位置提供商到位置管理器中

INSTALL_PACKAGES

允许应用安装程序包.

INTERNAL_SYSTEM_WINDOW

允许应用打开被部分系统用户接口使用的窗口

INTERNET

允许应用打开网络套接口

KILL_BACKGROUND_PROCESSES

允许应用去呼叫killBackgroundProcesses(String).方法

MANAGE_ACCOUNTS

允许应用去管理帐户管理者中的重要清单

MANAGE_APP_TOKENS

允许应用去管理(创建、销毁、顺序)在窗口管理者中的应用

MASTER_CLEAR

 

MODIFY_AUDIO_SETTINGS

允许应用修改全局音频设定

MODIFY_PHONE_STATE

允许改变拨打电话的状态-电源等

MOUNT_FORMAT_FILESYSTEMS

允许格式化可移除的存储仓库的文件系统

MOUNT_UNMOUNT_FILESYSTEMS

允许装备或解除可移除的存储仓库的文件系统

PERSISTENT_ACTIVITY

允许应用使它的activities更持久稳固

PROCESS_OUTGOING_CALLS

允许应用监督、限定或终止呼出的电话

READ_CALENDAR

允许应用读取用户的日历数据

READ_CONTACTS

允许应用读取用户的联系人数据

READ_FRAME_BUFFER

允许应用抓取屏幕和更多可获得的缓冲数据

READ_HISTORY_BOOKMARKS

允许应用去读取(非写)用户浏览历史和书签

READ_INPUT_STATE

允许应用去的当前键盘和控制的状态

READ_LOGS

允许应用读取低级别的系统日志文件

READ_OWNER_DATA

允许应用读取所有者的数据

READ_PHONE_STATE

允许读取电话的状态

READ_SMS

允许应用读取短信息.

READ_SYNC_SETTINGS

允许应用读取同步的设置

READ_SYNC_STATS

允许应用读取同步的统计数据

REBOOT

重新启动设备的请求

RECEIVE_BOOT_COMPLETED

允许应用接收在系统完成启动后发出的ACTION_BOOT_COMPLETED广播信息

RECEIVE_MMS

允许应用去监听多媒体信息并记录和对起进行处理

RECEIVE_SMS

允许应用去监听短消息并记录和对起进行处理

RECEIVE_WAP_PUSH

允许应用监听WAP push信息

RECORD_AUDIO

允许应用记录音频信息

REORDER_TASKS

允许应用改变任务的关系位置

RESTART_PACKAGES

已废弃使用

SEND_SMS

允许应用发送短消息.



阅读全文 »

Android杂项 判断内存卡是否存在,获取内存卡根目录地址

发表日期:2015-02-21 21:31:35 | 来源: | 分类:Android杂项

      示例1
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
    //判断sd卡是否存在
    System.out.println(Environment.getExternalStorageDirectory());
    //获取sd根目录/mnt/sdcard
}

阅读全文 »

Android杂项 控件所有属性

发表日期:2015-02-16 12:12:19 | 来源: | 分类:Android杂项

android:layout_toLeftOf=""

android:layout_toRightOf=""

android:layout_above=""

android:layout_below=""

android:layout_alignBaseline=""

android:layout_alignLeft=""

android:layout_alignTop=""

android:layout_alignRight=""

android:layout_alignBottom=""

android:layout_alignParentLeft=""

android:layout_alignParentTop=""

android:layout_alignParentRight=""

android:layout_alignParentBottom=""

android:layout_centerInParent=""

android:layout_centerHorizontal=""

android:layout_centerVertical=""

android:layout_alignWithParentIfMissing=""

android:layout_toStartOf=""

android:layout_toEndOf=""

android:layout_alignStart=""

android:layout_alignEnd=""

android:layout_alignParentStart=""

android:layout_alignParentEnd=""

android:layout_width=""

android:layout_height=""

android:layout_margin=""

android:layout_marginLeft=""

android:layout_marginTop=""

android:layout_marginRight=""

android:layout_marginBottom=""

android:layout_marginStart=""

android:layout_marginStart=""

android:layout_marginEnd=""

android:includeFontPadding=""

android:maxLength=""

android:shadowColor=""

android:shadowDx=""

android:shadowDy=""

android:shadowRadius=""

android:autoLink=""

android:linksClickable=""

android:numeric=""

android:digits=""

android:phoneNumber=""

android:inputMethod=""

android:capitalize=""

android:autoText=""

android:editable=""

android:freezesText=""

android:ellipsize=""

android:drawableTop=""

android:drawableBottom=""

android:drawableLeft=""

android:drawableRight=""

android:drawableStart=""

android:drawableEnd=""

android:drawablePadding=""

android:lineSpacingExtra=""

android:lineSpacingMultiplier=""

android:marqueeRepeatLimit=""

android:inputType=""

android:imeOptions=""

android:privateImeOptions=""

android:imeActionLabel=""

android:imeActionId=""

android:editorExtras=""

android:textSelectHandleLeft=""

android:textSelectHandleRight=""

android:textSelectHandle=""

android:textEditPasteWindowLayout=""

android:textEditNoPasteWindowLayout=""

android:textEditSidePasteWindowLayout=""

android:textEditSideNoPasteWindowLayout=""

android:textEditSuggestionItemLayout=""

android:textCursorDrawable=""

android:textIsSelectable=""

android:textAllCaps=""

android:id=""

android:tag=""

android:scrollX=""

android:scrollY=""

android:background=""

android:padding=""

android:paddingLeft=""

android:paddingRight=""

android:paddingTop=""

android:paddingBottom=""

android:paddingStart=""

android:paddingEnd=""

android:focusable=""

android:focusableInTouchMode=""

android:visibility=""

android:fitsSystemWindows=""

android:scrollbars=""

android:scrollbarFadeDuration=""

android:scrollbarDefaultDelayBeforeFade=""

android:scrollbarSize=""

android:scrollbarThumbHorizontal=""

android:scrollbarThumbVertical=""

android:scrollbarTrackHorizontal=""

android:scrollbarTrackVertical=""

android:scrollbarAlwaysDrawHorizontalTrack=""

android:scrollbarAlwaysDrawVerticalTrack=""

android:fadingEdge=""

android:requiresFadingEdge=""

android:fadingEdgeLength=""

android:nextFocusLeft=""

android:nextFocusRight=""

android:nextFocusUp=""

android:nextFocusDown=""

android:nextFocusForward=""

android:clickable=""

android:longClickable=""

android:saveEnabled=""

android:filterTouchesWhenObscured=""

android:drawingCacheQuality=""

android:keepScreenOn=""

android:duplicateParentState=""

android:minHeight=""

android:minWidth=""

android:soundEffectsEnabled=""

android:hapticFeedbackEnabled=""

android:contentDescription=""

android:onClick=""

android:overScrollMode=""

android:alpha=""

android:translationX=""

android:translationY=""

android:transformPivotX=""

android:transformPivotY=""

android:rotation=""

android:rotationX=""

android:rotationY=""

android:scaleX=""

android:scaleY=""

android:verticalScrollbarPosition=""

android:layerType=""

android:layoutDirection=""

android:textDirection=""

android:textAlignment=""

android:importantForAccessibility=""

android:labelFor=""

android:bufferType=""

android:text=""

android:hint=""

android:textColor=""

android:textColorHighlight=""

android:textColorHint=""

android:textAppearance=""

android:textSize=""

android:textScaleX=""

android:typeface=""

android:textStyle=""

android:fontFamily=""

android:textColorLink=""

android:cursorVisible=""

android:maxLines=""

android:maxHeight=""

android:lines=""

android:height=""

android:minLines=""

android:minHeight=""

android:maxEms=""

android:maxWidth=""

android:ems=""

android:width=""

android:minEms=""

android:minWidth=""

android:gravity=""

android:scrollHorizontally=""

android:password=""

android:singleLine=""

android:enabled=""

android:selectAllOnFocus=""


阅读全文 »

Android杂项 字符串滚动

发表日期:2015-02-15 23:00:28 | 来源: | 分类:Android杂项

      示例1
TextView tv1 = (TextView)findViewById(R.id.tv1);
SpannableStringBuilder ssb = new SpannableStringBuilder(tv1.getText());//让字符串从右向左滚动
tv1.setText(ssb);

阅读全文 »

页面相关 浏览器缓存详解:expires,cache-control,last-modif

发表日期:2015-01-04 10:03:24 | 来源: | 分类:页面相关

1、Last-Modified

在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse Header)此文件在服务期端最后被修改的时间,格


式类似这样:

Last-Modified:Tue, 24 Feb 2009 08:01:04 GMT

客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头(HttpRequest Header),询问该时间之后文件是否有被修改过:

If-Modified-Since:Tue, 24 Feb 2009 08:01:04 GMT

如果服务器端的资源没有变化,则自动返回HTTP304(NotChanged.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一


次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

注:如果If-Modified-Since的时间比服务器当前时间(当前的请求时间request_time)还晚,会认为是个非法请求


2、Etag工作原理

HTTP协议规格说明定义ETag为“被请求变量的实体标记”(参见14.19)。简单点即服务器响应时给请求URL标记,并在HTTP响应头中将其传送到客户端,类似服务器端返回的格式:

Etag:“5d8c72a5edda8d6a:3239″

客户端的查询更新格式是这样的:

If-None-Match:“5d8c72a5edda8d6a:3239″

如果ETag没改变,则返回状态304。

即:在客户端发出请求后,HttpReponse Header中包含Etag:“5d8c72a5edda8d6a:3239″

标识,等于告诉Client端,你拿到的这个的资源有表示ID:5d8c72a5edda8d6a:3239。当下次需要发Request索要同一个URI的时候,浏览器同时发出一个If-None-Match报头(Http 


RequestHeader)此时包头中信息包含上次访问得到的Etag:“5d8c72a5edda8d6a:3239″标识。

If-None-Match:“5d8c72a5edda8d6a:3239“

,这样,Client端等于Cache了两份,服务器端就会比对2者的etag。如果If-None-Match为False,不返回200,返回304(Not Modified) Response。


3、Expires

给出的日期/时间后,被响应认为是过时。如Expires:Thu, 02 Apr 2009 05:14:08 GMT

需和Last-Modified结合使用。用于控制请求文件的有效时间,当请求数据在有效期内时客户端浏览器从缓存请求数据而不是服务器端.当缓存中数据失效或过期,才决定从服务器更新数据。


4、Last-Modified和Expires

Last-Modified标识能够节省一点带宽,但是还是逃不掉发一个HTTP请求出去,而且要和Expires一起用。而Expires标识却使得浏览器干脆连HTTP请求都不用发,比如当用户F5或者点击Refresh


按钮的时候就算对于有Expires的URI,一样也会发一个HTTP请求出去,所以,Last-Modified还是要用的,而且要和Expires一起用。



5、Etag和Expires

如果服务器端同时设置了Etag和Expires时,Etag原理同样,即与Last-Modified/Etag对应的HttpRequestHeader:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和


WebServer发出的Last-Modified,Etag值完全一样;在完全匹配If-Modified-Since和If-None-Match即检查完修改时间和Etag之后,服务器才能返回304.



6、Last-Modified和Etag

分布式系统里多台机器间文件的last-modified必须保持一致,以免负载均衡到不同机器导致比对失败

分布式系统尽量关闭掉Etag(每台机器生成的etag都会不一样)

Last-Modified和ETags请求的http报头一起使用,服务器首先产生Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改,来决定文件是否继续缓存

过程如下:

1.客户端请求一个页面(A)。

2.服务器返回页面A,并在给A加上一个Last-Modified/ETag。

3.客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。

4.客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。

5.服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

注:

1、Last-Modified和Etag头都是由WebServer发出的HttpReponse Header,WebServer应该同时支持这两种头。

2、WebServer发送完Last-Modified/Etag头给客户端后,客户端会缓存这些头;

3、客户端再次发起相同页面的请求时,将分别发送与Last-Modified/Etag对应的HttpRequestHeader:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和WebServer发出的


Last-Modified,Etag值完全一样;

4、通过上述值到服务器端检查,判断文件是否继续缓存;


7、关于 Cache-Control: max-age=秒 和 Expires

Expires = 时间,HTTP 1.0 版本,缓存的载止时间,允许客户端在这个时间之前不去检查(发请求)

max-age = 秒,HTTP 1.1版本,资源在本地缓存多少秒。

如果max-age和Expires同时存在,则被Cache-Control的max-age覆盖。

Expires 的一个缺点就是,返回的到期时间是服务器端的时间,这样存在一个问题,如果客户端的时间与服务器的时间相差很大,那么误差就很大,所以在HTTP 1.1版开始,使用Cache-


Control: max-age=秒替代。

Expires =max-age +   “每次下载时的当前的request时间”

所以一旦重新下载的页面后,expires就重新计算一次,但last-modified不会变化 


阅读全文 »

页面相关 禁止百度或其他搜索引擎/工具对页面转码

发表日期:2014-12-26 16:08:39 | 来源: | 分类:页面相关

<meta http-equiv="Cache-Control" content="no-siteapp" />

<meta http-equiv="Cache-Control" content="no-transform" />

阅读全文 »

页面相关 js 获取url各种属性

发表日期:2014-12-02 10:11:30 | 来源: | 分类:页面相关

设置或获取对象指定的文件名或路径。alert(window.location.pathname)

设置或获取整个 URL 为字符串。alert(window.location.href);

设置或获取与 URL 关联的端口号码。alert(window.location.port)

设置或获取 URL 的协议部分。alert(window.location.protocol)

设置或获取 href 属性中在井号“#”后面的分段。alert(window.location.hash)

设置或获取 location 或 URL 的 hostname 和 port 号码。alert(window.location.host)

设置或获取 href 属性中跟在问号后面的部分。alert(window.location.search)

获取变量的值(截取等号后面的部分)

    var url = window.location.search;

//    alert(url.length);

//    alert(url.lastIndexOf('='));

    var loc = url.substring(url.lastIndexOf('=')+1, url.length);

阅读全文 »

全部博文(409)
集速网 copyRight © 2015-2025 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。