private void FBcheckin(String placeID,String Get_message) {
try {
Bundle params = new Bundle();
params.putString("access_token",FB_access_token);
params.putString("place", placeID);
params.putString("message",Get_message);
params.putString("application","打卡");
JSONObject coordinates = new JSONObject();
coordinates.put("latitude", LocationConsts.mMyLocationLat);
coordinates.put("longitude", LocationConsts.mMyLocationLon);
params.putString("coordinates",coordinates.toString());
JSONArray frnd_data=new JSONArray();
params.putString("tags", "");
String response1 = FacebookRequire.request("me/checkins", params, "POST");
Log.i("response1",response1);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

虎虎 發表在 痞客邦 留言(0) 人氣()

一、关于AndroidManifest.xml

AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)
二、AndroidManifest.xml结构
<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
    <application>
       <activity>
           <intent-filter>
               <action/>
               <category/>
           </intent-filter>
      </activity>
       <activity-alias>
           <intent-filter></intent-filter>
           <meta-data/>
      </activity-alias>
       <service>
           <intent-filter></intent-filter>
           <meta-data/>
       </service>
       <receiver>
           <intent-filter></intent-filter>
           <meta-data/>
       </receiver>
       <provider>
           <grant-uri-permission/>
           <meta-data/>
       </provider>
       <uses-library/>
    </application>
    <uses-permission/>
    <permission/>
    <permission-tree/>
    <permission-group/>
    <instrumentation/>
    <uses-sdk/>
    <uses-configuration/> 
    <uses-feature/> 
    <supports-screens/>
</manifest>
三、各个节点的详细介绍
 上面就是整个am(androidManifest).xml的结构,下面以外向内开始阐述~~
1、第一层(<Manifest>):(属性)
<manifest  xmlns:android="https://schemas.android.com/apk/res/android"
          package="com.woody.test"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
</manifest>
A、xmlns:android
定义android命名空间,一般为https://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。

B、package
指定本应用内java主程序包的包名,它也是一个应用进程的默认名称

C、sharedUserId
表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。若要共享数据,第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。详见:https://wallage.blog.163.com/blog/static/17389624201011010539408/
D、sharedUserLabel
一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义

E、versionCode
是给设备程序识别版本(升级)用的必须是一个interger值代表app更新过多少次,比如第一版一般为1,之后若要更新版本就设置为2,3等等。。。

F、versionName
这个名称是给用户看的,你可以将你的APP版本号设置为1.1版,后续更新版本设置为1.2、2.0版本等等。。。

G、installLocation
安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:internalOnly、auto、preferExternal
选择preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)
选择auto,系统将会根据存储空间自己去适应
选择internalOnly是指必须安装到内部才能运行
(注:需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP最好安装在SD卡上。现默认为安装在内部,如果把APP安装在SD卡上,首先得设置你的level为8,并且要配置android:installLocation这个参数的属性为preferExternal)

2、第二层(<Application>):属性
一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属性(如icon,label,permission等)
<application  android:allowClearUserData=["true" | "false"]
             android:allowTaskReparenting=["true" | "false"]
             android:backupAgent="string"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:enabled=["true" | "false"]
             android:hasCode=["true" | "false"]
             android:icon="drawable resource"
             android:killAfterRestore=["true" | "false"]
             android:label="string resource"
             android:manageSpaceActivity="string"
             android:name="string"
             android:permission="string"
             android:persistent=["true" | "false"]
             android:process="string"
             android:restoreAnyVersion=["true" | "false"]
             android:taskAffinity="string"
             android:theme="resource or theme" >
</application>
A、android:allowClearUserData('true' or 'false')
用户是否能选择自行清除数据,默认为true,程序管理器包含一个选择允许用户清除数据。当为true时,用户可自己清理用户数据,反之亦然

B、android:allowTaskReparenting('true' or 'false')
是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务

C、android:backupAgent
这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)

D、android:debuggable
这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在手机上可以被调试。默认为false,在false的情况下调试该APP,就会报以下错误:
Device XXX requires that applications explicitely declare themselves as debuggable in their manifest.
 Application XXX does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.

E、android:description/android:label
此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生

F、android:enabled
Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被 enabled。如果为false,它覆盖组件指定的值;所有组件都是disabled。

G、android:hasCode('true' or 'false')
表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码
一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象
(在Android2.3可以用标准C来开发应用程序,可在androidManifest.xml中将此属性设置为false,因为这个APP本身已经不含有任何的JAVA代码了)
H、android:icon
这个很简单,就是声明整个APP的图标,图片一般都放在drawable文件夹下
I、android:killAfterRestore
J、android:manageSpaceActivity
K、android:name
为应用程序所实现的Application子类的全名。当应用程序进程开始时,该类在所有应用程序组件之前被实例化。
若该类(比方androidMain类)是在声明的package下,则可以直接声明android:name="androidMain",但此类是在package下面的子包的话,就必须声明为全路径或android:name="package名称.子包名成.androidMain"
L、android:permission
设置许可名,这个属性若在<application>上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的
M、android:presistent
该应用程序是否应该在任何时候都保持运行状态,默认为false。因为应用程序通常不应该设置本标识,持续模式仅仅应该设置给某些系统应用程序才是有意义的。
N、android:process
应用程序运行的进程名,它的默认值为<manifest>元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。如果你想两个应用程序共用一个进程的话,你可以设置他们的android:process相同,但前提条件是他们共享一个用户ID及被赋予了相同证书的时候
O、android:restoreAnyVersion
同样也是android2.2的一个新特性,用来表明应用是否准备尝试恢复所有的备份,甚至该备份是比当前设备上更要新的版本,默认是false
P、android:taskAffinity
拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是<manifest>元素中设定的package名

Q、android:theme
是一个资源的风格,它定义了一个默认的主题风格给所有的activity,当然也可以在自己的theme里面去设置它,有点类似style。
3、第三层(<Activity>):属性
<activity android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "orientation", "screenLayout",
                                 "fontScale", "uiMode"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:permission="string"
          android:process="string"
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]
          android:stateNotNeeded=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
</activity>
(注:有些在application中重复的就不多阐述了)
1、android:alwaysRetainTaskState
 是否保留状态不变, 比如切换回home, 再从新打开,activity处于最后的状态。比如一个浏览器拥有很多状态(当打开了多个TAB的时候),用户并不希望丢失这些状态时,此时可将此属性设置为true
2、android:clearTaskOnLaunch 
比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 重新启动 P,是否显示 Q
3、android:configChanges
当配置list发生修改时, 是否调用 onConfigurationChanged() 方法  比如 "locale|navigation|orientation". 
这个我用过,主要用来看手机方向改变的. android手机在旋转后,layout会重新布局, 如何做到呢?
正常情况下. 如果手机旋转了.当前Activity后杀掉,然后根据方向重新加载这个Activity. 就会从onCreate开始重新加载.
如果你设置了 这个选项, 当手机旋转后,当前Activity之后调用onConfigurationChanged() 方法. 而不跑onCreate方法等.
4、android:excludeFromRecents
是否可被显示在最近打开的activity列表里,默认是false
5、android:finishOnTaskLaunch
当用户重新启动这个任务的时候,是否关闭已打开的activity,默认是false
如果这个属性和allowTaskReparenting都是true,这个属性就是王牌。Activity的亲和力将被忽略。该Activity已经被摧毁并非re-parented

6、android:launchMode(Activity加载模式)
在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式
Activity有四种加载模式:
standard、singleTop、singleTask、singleInstance(其中前两个是一组、后两个是一组),默认为standard 
 
standard:就是intent将发送给新的实例,所以每次跳转都会生成新的activity。
singleTop:也是发送新的实例,但不同standard的一点是,在请求的Activity正好位于栈顶时(配置成singleTop的Activity),不会构造新的实例
singleTask:和后面的singleInstance都只创建一个实例,当intent到来,需要创建设置为singleTask的Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。
singleInstance:
首先说明一下task这个概念,Task可以认为是一个栈,可放入多个Activity。比如启动一个应用,那么Android就创建了一个Task,然后启动这个应用的入口Activity,那在它的界面上调用其他的Activity也只是在这个task里面。那如果在多个task中共享一个Activity的话怎么办呢。举个例来说,如果开启一个导游服务类的应用程序,里面有个Activity是开启GOOGLE地图的,当按下home键退回到主菜单又启动GOOGLE地图的应用时,显示的就是刚才的地图,实际上是同一个Activity,实际上这就引入了singleInstance。singleInstance模式就是将该Activity单独放入一个栈中,这样这个栈中只有这一个Activity,不同应用的intent都由这个Activity接收和展示,这样就做到了共享。当然前提是这些应用都没有被销毁,所以刚才是按下的HOME键,如果按下了返回键,则无效
7、android:multiprocess
是否允许多进程,默认是false
具体可看该篇文章:https://www.bangchui.org/simple/?t3181.html
8、android:noHistory
当用户从Activity上离开并且它在屏幕上不再可见时,Activity是否从Activity stack中清除并结束。默认是false。Activity不会留下历史痕迹
9、android:screenOrientation
activity显示的模式
默认为unspecified:由系统自动判断显示方向
landscape横屏模式,宽度比高度大
portrait竖屏模式, 高度比宽度大
user模式,用户当前首选的方向
behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
sensor模式:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换
nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了
10、android:stateNotNeeded
activity被销毁或者成功重启时是否保存状态
11、android:windowSoftInputMode
activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。
这个属性能影响两件事情:
【A】当有焦点产生时,软键盘是隐藏还是显示
【B】是否减少活动主窗口大小以便腾出空间放软键盘
各值的含义:
【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
【C】stateHidden:用户选择activity时,软键盘总是被隐藏
【D】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
【E】stateVisible:软键盘通常是可见的
【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
【G】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
【H】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
【I】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
 
4、第四层(<intent-filter>)
结构图:
<intent-filter  android:icon="drawable resource"
               android:label="string resource"
               android:priority="integer" >
      <action />
      <category />
      <data />
</intent-filter> 
 
intent-filter属性
android:priority(解释:有序广播主要是按照声明的优先级别,如A的级别高于B,那么,广播先传给A,再传给B。优先级别就是用设置priority属性来确定,范围是从-1000~1000,数越大优先级别越高)

Intent filter内会设定的资料包括action,data与category三种。也就是说filter只会与intent里的这三种资料作对比动作

action属性
action很简单,只有android:name这个属性。常见的android:name值为android.intent.action.MAIN,表明此activity是作为应用程序的入口。有关android:name具体有哪些值,可参照这个网址:https://hi.baidu.com/linghtway/blog/item/83713cc1c2d053170ff477a7.html
category属性
category也只有android:name属性。常见的android:name值为android.intent.category.LAUNCHER(决定应用程序是否显示在程序列表里)
有关android:name具体有哪些值,可参照这个网址:https://chroya.javaeye.com/blog/685871
data属性
<data  android:host="string"
      android:mimeType="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:port="string"
      android:scheme="string"/>
【1】每个<data>元素指定一个URI和数据类型(MIME类型)。它有四个属性scheme、host、port、path对应于URI的每个部分: 
scheme://host:port/path
scheme的值一般为"http",host为包名,port为端口号,path为具体地址。如:https://com.test.project:200/folder/etc
其中host和port合起来构成URI的凭据(authority),如果host没有指定,则port也会被忽略
要让authority有意义,scheme也必须要指定。要让path有意义,scheme+authority也必须要指定
【2】mimeType(指定数据类型),若mimeType为'Image',则会从content Provider的指定地址中获取image类型的数据。还有'video'啥的,若设置为video/mp4,则表示在指定地址中获取mp4格式的video文件
【3】而pathPattern和PathPrefix主要是为了格式化path所使用的
5、第四层<meta-data>
<meta-data android:name="string"
           android:resource="resource specification"
           android:value="string"/>
这是该元素的基本结构.可以包含在<activity> <activity-alias> <service> <receiver>四个元素中。
android:name(解释:元数据项的名字,为了保证这个名字是唯一的,采用java风格的命名规范,如com.woody.project.fried)
android:resource(解释:资源的一个引用,指定给这个项的值是该资源的id。该id可以通过方法Bundle.getInt()来从meta-data中找到。)
android:value(解释:指定给这一项的值。可以作为值来指定的数据类型并且组件用来找回那些值的Bundle方法:[getString],[getInt],[getFloat],[getString],[getBoolean])

6、第三层<activity-alias>属性
<activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string">
<intent-filter/> 
<meta-data/>
</activity-alias>
<activity-alias>是为activity创建快捷方式的,如下实例:

<activity android:name=".shortcut">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
</activity>
 <activity-alias android:name=".CreateShortcuts" android:targetActivity=".shortcut" android:label="@string/shortcut">
    <intent-filter>
             <action android:name="android.intent.action.CREATE_SHORTCUT" />
             <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
 </activity-alias>
其中android.targetActivity是指向对应快捷方式的activity,如上述的shortcut(此Activity名)
android:label是指快捷方式的名称,而快捷方式的图标默认是给定的application图标

7、第三层<service>
【1】service与activity同级,与activity不同的是,它不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行。比如听音乐,网络下载数据等,都是由service运行的
 
【2】service生命周期:Service只继承了onCreate(),onStart(),onDestroy()三个方法,第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法
 
【3】service与activity间的通信
Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL),Activity与service间的通信主要用IBinder负责。具体可参照:https://zhangyan1158.blog.51cto.com/2487362/491358
 
【4】
<service android:enabled=["true" | "false"]
         android:exported[="true" | "false"]
         android:icon="drawable resource"
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string">
</service>
service标签内的属性之前已有描述,在此不重复了~
 
8、第三层<receiver>
receiver的属性与service一样,这里就不显示了
BroadcastReceiver:用于发送广播,broadcast是在应用程序之间传输信息的一种机制,而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件,具体参照https://kevin2562.javaeye.com/blog/686787
 
9、第三层<provider>属性
<provider android:authorities="list"
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string">
           <grant-uri-permission/>
           <meta-data/>
</provider>
contentProvider(数据存储)
【1】android:authorities:
标识这个ContentProvider,调用者可以根据这个标识来找到它
【2】android:grantUriPermission:
对某个URI授予的权限
【3】android:initOrder
 
10、第三层<uses-library>
用户库,可自定义。所有android的包都可以引用
 
11、第一层<supports-screens>
<supports-screens  android:smallScreens=["true" | "false"] 
                  android:normalScreens=["true" | "false"] 
                  android:largeScreens=["true" | "false"] 
                  android:anyDensity=["true" | "false"] />
这是在android1.6以后的新特性,支持多屏幕机制
各属性含义:这四个属性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多种不同密度
 
12、第二层<uses-configuration />与<uses-feature>性能都差不多
<uses-configuration  android:reqFiveWayNav=["true" | "false"] 
                    android:reqHardKeyboard=["true" | "false"]
                    android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" |   "twelvekey"]
                    android:reqNavigation=["undefined" | "nonav" | "dpad" |  "trackball" | "wheel"]
                    android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
<uses-feature android:glEsVersion="integer"
              android:name="string"
              android:required=["true" | "false"] />
这两者都是在描述应用所需要的硬件和软件特性,以便防止应用在没有这些特性的设备上安装。

13、第二层<uses-sdk />
<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer"/>
描述应用所需的api level,就是版本,目前是android 2.2 = 8,android2.1 = 7,android1.6 = 4,android1.5=3
在此属性中可以指定支持的最小版本,目标版本以及最大版本
 
14、第二层<instrumentation />
<instrumentation android:functionalTest=["true" | "false"]
                 android:handleProfiling=["true" | "false"]
                 android:icon="drawable resource"
                 android:label="string resource"
                 android:name="string"
                 android:targetPackage="string"/>
 定义一些用于探测和分析应用性能等等相关的类,可以监控程序。在各个应用程序的组件之前instrumentation类被实例化
android:functionalTest(解释:instrumentation类是否能运行一个功能测试,默认为false)
 
15、<permission>、<uses-permission>、<permission-tree />、<permission-group />区别~
最常用的当属<uses-permission>,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明,此<uses-permission>与<application>同级,具体权限列表请看此处
通常情况下我们不需要为自己的应用程序声明某个权限,除非你提供了供其他应用程序调用的代码或者数据。这个时候你才需要使用<permission> 这个标签。很显然这个标签可以让我们声明自己的权限。比如:
<permission android:name="com.teleca.project.MY_SECURITY" . . . />
那么在activity中就可以声明该自定义权限了,如:

<application . . .>
        <activity android:name="XXX" . . . >
                  android:permission="com.teleca.project.MY_SECURITY"> </activity>
 </application>
当然自己声明的permission也不能随意的使用,还是需要使用<uses-permission>来声明你需要该权限
<permission-group> 就是声明一个标签,该标签代表了一组permissions,而<permission-tree>是为一组permissions声明了一个namespace。这两个标签可以看之前的系列文章。

虎虎 發表在 痞客邦 留言(0) 人氣()

android 1.5以后添加了软件虚拟键盘的功能,所以在输入提示中将会有对应的软键盘模式
android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用。这也大大的方便的操作。有时需要虚拟键盘只为字符或只为数字。所以inputType尤为重要。
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="phone" />
 //文本类型,多为大写、小写和数字符号。
    android:inputType="none"
    android:inputType="text"
    android:inputType="textCapCharacters"
    android:inputType="textCapWords"
    android:inputType="textCapSentences"
    android:inputType="textAutoCorrect"
    android:inputType="textAutoComplete"
    android:inputType="textMultiLine"
    android:inputType="textImeMultiLine"
    android:inputType="textNoSuggestions"
    android:inputType="textUri"
    android:inputType="textEmailAddress"
    android:inputType="textEmailSubject"
    android:inputType="textShortMessage"
    android:inputType="textLongMessage"
    android:inputType="textPersonName"
    android:inputType="textPostalAddress"
    android:inputType="textPassword"
    android:inputType="textVisiblePassword"
    android:inputType="textWebEditText"
    android:inputType="textFilter"
    android:inputType="textPhonetic"
//数值类型
    android:inputType="number"
    android:inputType="numberSigned"
    android:inputType="numberDecimal"
    android:inputType="phone"//拨号键盘
    android:inputType="datetime"
    android:inputType="date"//日期键盘
    android:inputType="time"//时间键盘

虎虎 發表在 痞客邦 留言(0) 人氣()

MVC是当前比较流行的框架,随便Google下,就可以发现几乎所有的应用程序开发中都采用了MVC框架,例如:.NET,Java Spring,Java Struts,PHP 。那么MVC到底是什么,为什么被广泛使用?
简要说明下,什么是MVC。MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图、饼图来表示。一种视图模型也可以对于多种逻辑模型。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与《设计模式》中的观察者模式是完全一样。具体详细的解析,可以去阅读百度知道中介绍的什么是MVC?
采用MVC到底有什么好处?从用户的角度出发,用户可以根据自己的需求,选择自己合适的浏览数据的方式。比如说,对于一篇在线文档,用户可以选择以HTML网页的方式阅读,也可以选择以pdf的方式阅读。从开发者的角度,MVC把应用程序的逻辑层与界面是完全分开的,最大的好处是:界面设计人员可以直接参与到界面开发,程序员就可以把精力放在逻辑层上。而不是像以前那样,设计人员把所有的材料交给开发人员,由开发人员来实现界面。在VS 2008开发工具中设计人员就可以直接通过Silverlight来开发界面,在Eclipes工具中开发Android采用了更加简单的方法,设计人员在DroidDraw中设计界面,以XML方式保存,在Eclipes中直接打开就可以看到设计人员设计的界面。

虎虎 發表在 痞客邦 留言(0) 人氣()

 











  1. public class ConnectionChangeReceiver extends BroadcastReceiver 


  2.   public void onReceive( Context context, Intent intent ) 

  3.   { 

  4.     ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE ); 

  5.     NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); //WIFI

  6.     NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(     ConnectivityManager.TYPE_MOBILE ); //3G

  7.     if ( activeNetInfo != null ) 

  8.     { 

  9.       Toast.makeText( context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show(); 

  10.     } 

  11.     if( mobNetInfo != null ) 

  12.     { 

  13.       Toast.makeText( context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show(); 

  14.     } 

  15.   } 

  16. }





虎虎 發表在 痞客邦 留言(0) 人氣()

3gp video/3gpp 
  aab application/x-authoware-bin 
  aam application/x-authoware-map 
  aas application/x-authoware-seg 
  ai application/postscript 
  aif audio/x-aiff 
  aifc audio/x-aiff 
  aiff audio/x-aiff 
  als audio/X-Alpha5 
  amc application/x-mpeg 
  ani application/octet-stream 
apk application/vnd.Android.package-archive 
  asc text/plain 
  asd application/astound 
  asf video/x-ms-asf 
  asn application/astound 
  asp application/x-asap 
  asx video/x-ms-asf 
  au audio/basic 
  avb application/octet-stream 
  avi video/x-msvideo 
  awb audio/amr-wb 
  bcpio application/x-bcpio 
  bin application/octet-stream 
  bld application/bld 
  bld2 application/bld2 
bmp image/bmp 
  bpk application/octet-stream 
  bz2 application/x-bzip2 
  cal image/x-cals 
  ccn application/x-cnc 
  cco application/x-cocoa 
  cdf application/x-netcdf 
  cgi magnus-internal/cgi 
  chat application/x-chat 
  class application/octet-stream 
  clp application/x-msclip 
  cmx application/x-cmx 
  co application/x-cult3d-object 
  cod image/cis-cod 
  cpio application/x-cpio 
  cpt application/mac-compactpro 
  crd application/x-mscardfile 
  csh application/x-csh 
  csm chemical/x-csml 
  csml chemical/x-csml 
  css text/css 
  cur application/octet-stream 
  dcm x-lml/x-evm 
  dcr application/x-director 
  dcx image/x-dcx 
  dhtml text/html 
  dir application/x-director 
  dll application/octet-stream 
  dmg application/octet-stream 
  dms application/octet-stream 
  doc application/msword 
  dot application/x-dot 
  dvi application/x-dvi 
  dwf drawing/x-dwf 
  dwg application/x-autocad 
  dxf application/x-autocad 
  dxr application/x-director 
  ebk application/x-expandedbook 
  emb chemical/x-embl-dl-nucleotide 
  embl chemical/x-embl-dl-nucleotide 
  eps application/postscript 
  eri image/x-eri 
  es audio/echospeech 
  esl audio/echospeech 
  etc application/x-earthtime 
  etx text/x-setext 
  evm x-lml/x-evm 
  evy application/x-envoy 
  exe application/octet-stream 
  fh4 image/x-freehand 
  fh5 image/x-freehand 
  fhc image/x-freehand 
  fif image/fif 
  fm application/x-maker 
  fpx image/x-fpx 
  fvi video/isivideo 
  gau chemical/x-gaussian-input 
  gca application/x-gca-compressed 
  gdb x-lml/x-gdb 
  gif image/gif 
  gps application/x-gps 
  gtar application/x-gtar 
  gz application/x-gzip 
  hdf application/x-hdf 
  hdm text/x-hdml 
  hdml text/x-hdml 
  hlp application/winhlp 
  hqx application/mac-binhex40 
  htm text/html 
  html text/html 
  hts text/html 
  ice x-conference/x-cooltalk 
  ico application/octet-stream 
  ief image/ief 
  ifm image/gif 
  ifs image/ifs 
  imy audio/melody 
  ins application/x-NET-Install 
  ips application/x-ipscript 
  ipx application/x-ipix 
  it audio/x-mod 
  itz audio/x-mod 
  ivr i-world/i-vrml 
  j2k image/j2k 
  jad text/vnd.sun.j2me.app-descriptor 
  jam application/x-jam 
  jar application/java-archive 
  jnlp application/x-java-jnlp-file 
  jpe image/jpeg 
  jpeg image/jpeg 
  jpg image/jpeg 
  jpz image/jpeg 
  js application/x-javascript 
  jwc application/jwc 
  kjx application/x-kjx 
  lak x-lml/x-lak 
  latex application/x-latex 
  lcc application/fastman 
  lcl application/x-digitalloca 
  lcr application/x-digitalloca 
  lgh application/lgh 
  lha application/octet-stream 
  lml x-lml/x-lml 
  lmlpack x-lml/x-lmlpack 
  lsf video/x-ms-asf 
  lsx video/x-ms-asf 
  lzh application/x-lzh 
  m13 application/x-msmediaview 
  m14 application/x-msmediaview 
  m15 audio/x-mod 
  m3u audio/x-mpegurl 
  m3url audio/x-mpegurl 
  ma1 audio/ma1 
  ma2 audio/ma2 
  ma3 audio/ma3 
  ma5 audio/ma5 
  man application/x-troff-man 
  map magnus-internal/imagemap 
  mbd application/mbedlet 
  mct application/x-mascot 
  mdb application/x-msaccess 
  mdz audio/x-mod 
  me application/x-troff-me 
  mel text/x-vmel 
  mi application/x-mif 
  mid audio/midi 
  midi audio/midi 
  mif application/x-mif 
  mil image/x-cals 
  mio audio/x-mio 
  mmf application/x-skt-lbs 
  mng video/x-mng 
  mny application/x-msmoney 
  moc application/x-mocha 
  mocha application/x-mocha 
  mod audio/x-mod 
  mof application/x-yumekara 
  mol chemical/x-mdl-molfile 
  mop chemical/x-mopac-input 
  mov video/quicktime 
  movie video/x-sgi-movie 
  mp2 audio/x-mpeg 
  MP3 audio/x-mpeg 
  MP4 video/mp4 
  mpc application/vnd.mpohun.certificate 
  mpe video/mpeg 
  mpeg video/mpeg 
  mpg video/mpeg 
  mpg4 video/MP4 
  mpga audio/mpeg 
  mpn application/vnd.mophun.application 
  mpp application/vnd.ms-project 
  mps application/x-mapserver 
  mrl text/x-mrml 
  mrm application/x-mrm 
  ms application/x-troff-ms 
  mts application/metastream 
  mtx application/metastream 
  mtz application/metastream 
  mzv application/metastream 
  nar application/zip 
  nbmp image/nbmp 
  nc application/x-netcdf 
  ndb x-lml/x-ndb 
  ndwn application/ndwn 
  nif application/x-nif 
  nmz application/x-scream 
  nokia-op-logo image/vnd.nok-oplogo-color 
  npx application/x-netfpx 
  nsnd audio/nsnd 
  nva application/x-neva1 
  oda application/oda 
  oom application/x-AtlasMate-Plugin 
  pac audio/x-pac 
  pae audio/x-epac 
  pan application/x-pan 
  pbm image/x-portable-bitmap 
  pcx image/x-pcx 
  pda image/x-pda 
  pdb chemical/x-pdb 
  pdf application/pdf 
  pfr application/font-tdpfr 
  pgm image/x-portable-graymap 
  pict image/x-pict 
  pm application/x-perl 
  pmd application/x-pmd 
  png image/png 
  pnm image/x-portable-anymap 
  pnz image/png 
  pot application/vnd.ms-powerpoint 
  ppm image/x-portable-pixmap 
  pps application/vnd.ms-powerpoint 
  ppt application/vnd.ms-powerpoint 
  pqf application/x-cprplayer 
  pqi application/cprplayer 
  prc application/x-prc 
  proxy application/x-ns-proxy-autoconfig 
  ps application/postscript 
  ptlk application/listenup 
  pub application/x-mspublisher 
  pvx video/x-pv-pvx 
  qcp audio/vnd.qcelp 
  qt video/quicktime 
  qti image/x-quicktime 
  qtif image/x-quicktime 
  r3t text/vnd.rn-realtext3d 
  ra audio/x-pn-realaudio 
  ram audio/x-pn-realaudio 
  rar application/x-rar-compressed 
  ras image/x-cmu-raster 
  rdf application/rdf+xml 
  rf image/vnd.rn-realflash 
  rgb image/x-rgb 
  rlf application/x-richlink 
  rm audio/x-pn-realaudio 
  rmf audio/x-rmf 
  rmm audio/x-pn-realaudio 
  rmvb audio/x-pn-realaudio 
  rnx application/vnd.rn-realplayer 
  roff application/x-troff 
  rp image/vnd.rn-realpix 
  rpm audio/x-pn-realaudio-plugin 
  rt text/vnd.rn-realtext 
  rte x-lml/x-gps 
  rtf application/rtf 
  rtg application/metastream 
  rtx text/richtext 
  rv video/vnd.rn-realvideo 
  rwc application/x-rogerwilco 
  s3m audio/x-mod 
  s3z audio/x-mod 
  sca application/x-supercard 
  scd application/x-msschedule 
  sdf application/e-score 
  sea application/x-stuffit 
  sgm text/x-sgml 
  sgml text/x-sgml 
  sh application/x-sh 
  shar application/x-shar 
  shtml magnus-internal/parsed-html 
  shw application/presentations 
  si6 image/si6 
  si7 image/vnd.stiwap.sis 
  si9 image/vnd.lgtwap.sis 
  sis application/vnd.symbian.install 
  sit application/x-stuffit 
  skd application/x-Koan 
  skm application/x-Koan 
  skp application/x-Koan 
  skt application/x-Koan 
  slc application/x-salsa 
  smd audio/x-smd 
  smi application/smil 
  smil application/smil 
  smp application/studiom 
  smz audio/x-smd 
  snd audio/basic 
  spc text/x-speech 
  spl application/futuresplash 
  spr application/x-sprite 
  sprite application/x-sprite 
  spt application/x-spt 
  src application/x-wais-source 
  stk application/hyperstudio 
  stm audio/x-mod 
  sv4cpio application/x-sv4cpio 
  sv4crc application/x-sv4crc 
  svf image/vnd 
  svg image/svg-xml 
  svh image/svh 
  svr x-world/x-svr 
  swf application/x-shockwave-flash 
  swfl application/x-shockwave-flash 
  t application/x-troff 
  tad application/octet-stream 
  talk text/x-speech 
  tar application/x-tar 
  taz application/x-tar 
  tbp application/x-timbuktu 
  tbt application/x-timbuktu 
  tcl application/x-tcl 
  tex application/x-tex 
  texi application/x-texinfo 
  texinfo application/x-texinfo 
  tgz application/x-tar 
  thm application/vnd.eri.thm 
  tif image/tiff 
  tiff image/tiff 
  tki application/x-tkined 
  tkined application/x-tkined 
  toc application/toc 
  toy image/toy 
  tr application/x-troff 
  trk x-lml/x-gps 
  trm application/x-msterminal 
  tsi audio/tsplayer 
  tsp application/dsptype 
  tsv text/tab-separated-values 
  tsv text/tab-separated-values 
  ttf application/octet-stream 
  ttz application/t-time 
  txt text/plain 
  ult audio/x-mod 
  ustar application/x-ustar 
  uu application/x-uuencode 
  uue application/x-uuencode 
  vcd application/x-cdlink 
  vcf text/x-vcard 
  vdo video/vdo 
  vib audio/vib 
  viv video/vivo 
  vivo video/vivo 
  vmd application/vocaltec-media-desc 
  vmf application/vocaltec-media-file 
  vmi application/x-dreamcast-vms-info 
  vms application/x-dreamcast-vms 
  vox audio/voxware 
  vqe audio/x-twinvq-plugin 
  vqf audio/x-twinvq 
  vql audio/x-twinvq 
  vre x-world/x-vream 
  vrml x-world/x-vrml 
  vrt x-world/x-vrt 
  vrw x-world/x-vream 
  vts workbook/formulaone 
  wav audio/x-wav 
  wax audio/x-ms-wax 
  wbmp image/vnd.wap.wbmp 
  web application/vnd.xara 
  wi image/wavelet 
  wis application/x-InstallShield 
  wm video/x-ms-wm 
  wma audio/x-ms-wma 
  wmd application/x-ms-wmd 
  wmf application/x-msmetafile 
  wml text/vnd.wap.wml 
  wmlc application/vnd.wap.wmlc 
  wmls text/vnd.wap.wmlscript 
  wmlsc application/vnd.wap.wmlscriptc 
  wmlscript text/vnd.wap.wmlscript 
  wmv audio/x-ms-wmv 
  wmx video/x-ms-wmx 
  wmz application/x-ms-wmz 
  wpng image/x-up-wpng 
  wpt x-lml/x-gps 
  wri application/x-mswrite 
  wrl x-world/x-vrml 
  wrz x-world/x-vrml 
  ws text/vnd.wap.wmlscript 
  wsc application/vnd.wap.wmlscriptc 
  wv video/wavelet 
  wvx video/x-ms-wvx 
  wxl application/x-wxl 
  x-gzip application/x-gzip 
  xar application/vnd.xara 
  xbm image/x-xbitmap 
  xdm application/x-xdma 
  xdma application/x-xdma 
  xdw application/vnd.fujixerox.docuworks 
  xht application/xhtml+xml 
  xhtm application/xhtml+xml 
  xhtml application/xhtml+xml 
  xla application/vnd.ms-excel 
  xlc application/vnd.ms-excel 
  xll application/x-excel 
  xlm application/vnd.ms-excel 
  xls application/vnd.ms-excel 
  xlt application/vnd.ms-excel 
  xlw application/vnd.ms-excel 
  xm audio/x-mod 
  xml text/xml 
  xmz audio/x-mod 
  xpi application/x-xpinstall 
  xpm image/x-xpixmap 
  xsit text/xml 
  xsl text/xml 
  xul text/xul 
  xwd image/x-xwindowdump 
  xyz chemical/x-pdb 
  yz1 application/x-yz1 
  z application/x-compress 
  zac application/x-zaurus-zac 
  zip application/zip 

虎虎 發表在 痞客邦 留言(0) 人氣()


Android平台裡,上層應用程式的service與底層的系統service有很大的區別,只是許多人都將它們混在一起了。例如,在Android裡著名的MediaPlayer範例,許多人都知道其結構為:

虎虎 發表在 痞客邦 留言(0) 人氣()

Content Providers 概略介紹


官方網址:https://code.google.com/android/devel/data/contentproviders.html


 


{概要}


1.它是在應用程式裡,存取物件的方法。
2.若你的資料想成為可公開使用的,你可以製造或呼叫一個content provider。  
3.在android裡是有一些content providers是公開的資料型態 ,例如: audio, video, images, personal contact information(如通訊錄)…. 
4.可以在provider package裡,看到android原本就有提供的content providers。


 


Content Providers 可分兩類:


1.使用Content Providers


2.建立Content Providers


 


********************************************************************


{使用Content Providers}


1.使用 android.provider package裡的class
2.使用URI語法來做以下四種動作:
 (1)Querying for Data  查詢資料
   content://contacts/people/ 這種寫法,會列出所有資料
   content://contacts/people/23 這種寫法,只會回傳ID=23這筆資料
 (2)Modifying Data  修改資料
   呼叫ContentResolver.update() 
 (3)Adding a Record  增加資料
   呼叫ContentResolver.insert() 
   若要儲存檔案,要呼叫ContentResolver().openOutputStream()。 
 (4)Deleting a Record  刪除資料
   呼叫ContentResolver.delete() 
   刪除多筆記錄時,呼叫ContentResolver.delete()裡的android.provider.Contacts.People.CONTENT_URI


 


{建立Content Providers}


1.繼承ContentProvider
2.定義一個public static final Uri 命名為CONTENT_URI。這個字串要以content://為標準,你的content provider才可以運作。
3.使用content providers儲存資料或使用SQLite資料庫儲存資料。
4.Android的Provider,SQLiteOpenHelper的CLASS會幫助你建立和管理資料庫。 
5.如果你要顯示如bitmap檔案,應該使用content:// URI的語法。
  EX:content://media/internal/images 
  EX:content://media/external/images 
6.如果你要管理一個新的資料型態,你必須先定義一個android.ContentProvider.getType(url),新的MIME型態。



虎虎 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。