Anroid4.4新增/system/priv-app/目录的权限问题
2014-12-24 20:19:00 by suphyAnroid4.4新增/system/priv-app/目录的权限问题
@(Android)[permission]
今天在项目中定义permission时使用了android:protectionLevel="signatureOrSystem"
,
signatureOrSystem
官方解释
A permission that the system grants only to applications that are in the Android system image or that are signed with the same certificate as the application that declared the permission。
该项目设置如下并且在/system/app/
文件中:
//AndroidManifest.xml
android:sharedUserId="android.uid.system"
<permission
android:name="com.android.permission.service.HANDOFF"
android:label="@string/perm_access_service"
android:protectionLevel="signatureOrSystem" >
</permission>
//Android.mk
LOCAL_CERTIFICATE := platform
而Contacts应用需要使用到该权限的接口,存放放在/system/app/
文件中,Contacts配置如下:
//Android.mk
LOCAL_PACKAGE_NAME := Contacts
LOCAL_CERTIFICATE := shared
由于这两个应用签名不一样,一个是platform签名
,另外一个是shared签名
,本以为两个应用都是System
级别可以访问接口,可是Contacts在调用接口时crash了。
最终发现是因为Android4.4添加一个/system/priv-app/
目录,只有存放在该目录下的应用才被看做真正的System特权应用, 才能在签名不一致的情况下使用signatureOrSystem
权限。
加入/system/priv-app/
目录方法:
在Android.mk中增加 LOCAL_PRIVILEGED_MODULE := true
ApplicationInfo.FLAG_SYSTEM
标志表示该应用程序的apk被捆绑在/system分区。
一个新的隐藏的标志FLAG_PRIVILEGED
已经出台,反映了访问这些权限的实际权利.
BluetoothAdapter使用
Android Quick Look: BluetoothAdapter
Android SDK附带强大的蓝牙适配器,蓝牙api能够管理本地扫描附近的蓝牙设备,蓝牙设备之间传输数据,等等。本指导将向您展示最基本的必要步骤开始在Android SDK编程蓝牙应用程序。
Step 1: Import the Bluetooth Package
import android.bluetooth.*;
Step 2: Set Bluetooth Permissions
添加permission:
<uses-permission android:name="android.permission.BLUETOOTH" />
对于更高级的蓝牙任务,如设置本地设备为我们将在本教程的名字,你就需要配置蓝牙管理员权限。添加以下行这样做:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Step 3: Access the Bluetooth Adapter ...
read moreAndroidManifest中属性说明
AndroidManifest 中original-package标签
@(示例笔记本)[AndroidManifest|original-package|package]
AndroidManifest.xml中:
标签中package属性用于设置应用程序的进程名,即在运行时使用ddms查看到的进程名。 标签用以设置应用源码包名,即Java文件所在的源码程序包层次,android工程中真实的源代码层次结构。
中 package
属性若与的 android:name
值相同,配置组建时android:name
属性值 可以使用".ClassName"形式。 使用标签后,在 中的 android:name
属性需要写完整的包名,".ClassName"形式无效。
注意:
需要注意:
<manifest
xmlns:android="http://schemas.android.com ...
如何让Android应用启动的体验更顺畅
如何让Android应用启动的体验更顺畅
Android 中应用启动的时候,首先会加载一个预览窗口(由Activity 的主题决定的)用于对用户操作的即时响应。一旦真正的内容加载完毕,预览窗口将淡出,内容窗口相应淡入。
Android应用window预览效果是打开的,可以通过android:windowDisablePreview = true
来禁止window预览效果。
为了避免出现白色或黑色界面,可以通过修改activity的theme使启动过程更流畅。
The perfect preview window
如果你的Activity没有ActionBar,那就在Activity 的主题里面禁用掉ActionBar,这样在预览窗口中就不会出现ActionBar了。
另外,因为默认的预览窗口是纯黑色的,如果你的Activity 背景是其他颜色,那么为了启动连贯顺畅,可以通过覆写window的背景颜色实现。如下:
-
自定义主题,修改windowBackground
<style name="Theme.Calculator" parent=“@android:style/Theme.Holo.NoActionBar"> <item name="android:windowBackground”>@android ...
ListView焦点问题
android:descendantFocusability 焦点 父控件与子控件焦点
ListView item包含ImageButton、Button、CheckBox等控件时无法获取焦点,造成点击item无响应。
可以使用android:descendantFocusability="blocksDescendants" 来解决
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
- beforeDescendants:viewgroup会优先其子类控件而获取到焦点
- afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
- blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了
read moreView及TextView属性说明
View属性说明
android:alpha
关联方法: setAlpha(float)
属性说明: 视图透明度,值在0-1之间。0为完全透明,1为完全不透明。
android:background
关联方法: setBackgroundResource(int)
属性说明: 视图背景
android:clickable
关联方法: setClickable(boolean)
属性说明: 视图是否可点击
android:contentDescription
关联方法: setContentDescription(CharSequence)
属性说明: 设置View的备注说明,作为一种辅助功能提供,为一些没有文字描述的View提供说明
android:drawingCacheQuality
关联方法: setDrawingCacheQuality(int)
属性说明: "设置绘图时半透明质量。有可以取以下3个值 auto——默认,由框架决定 high——高质量,使用较高的颜色深度,消耗更多的内存 low ...