Android 系统设置的权限(背光设置)

在ANDROID中,系统设置的权限一大堆,让我一直很头痛,今天我以背光调节为例子,来讲解一下相关权限,要调节背光设置,先把设置前光的JAVA源码写上:
初始化:
public void InitBrightness()
{
//相关控件,用SEEKBAR来调节背光
mChangeBtName = (TextView)this.findViewById(R.id.play_bt_change_name);
mChangeBar = (SeekBar)this.findViewById(R.id.bt_set_seekbar);

//mChangeBar.setOnFocusChangeListener(this);
//获取当前背光亮度并在SEEKBAR上呈现
try {
mOldBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
} catch (SettingNotFoundException snfe) {
mOldBrightness = MAXIMUM_BACKLIGHT;
}
Log.v("Brightness", "number" + mOldBrightness);
mChangeBar.setMax(MAXIMUM_BACKLIGHT - MINIMUM_BACKLIGHT);
Log.v("Brightness max", "setmax:" + (MAXIMUM_BACKLIGHT - MINIMUM_BACKLIGHT));
mChangeBar.setProgress(mOldBrightness - MINIMUM_BACKLIGHT);
mChangeBtName.setText(String.valueOf((mOldBrightness - MINIMUM_BACKLIGHT)/25));

//进度条控制
mChangeBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onStartTrackingTouch(SeekBar bar) {
}

public void onProgressChanged(SeekBar bar, int progress,boolean fromtouch) {
Log.v("Progress", "num:" + progress);
int step = 25;
Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, progress + MINIMUM_BACKLIGHT);
Log.v("Progress", "putINTOK");
setBrightness(progress + MINIMUM_BACKLIGHT);
mChangeBtName.setText(String.valueOf(progress/step));
}

public void onStopTrackingTouch(SeekBar bar) {
}
});

}
设置背光函数:
private void setBrightness(int brightness) {
try {
Log.v("Progress", "set brightness");
IHardwareService hardware = IHardwareService.Stub
.asInterface(ServiceManager.getService("hardware"));
if (hardware != null) {
hardware.setBacklights(brightness);
}
Log.v("set brightness", "OK");
} catch (RemoteException doe) {Log.v("set brightness", "ERROR");
}
}

代码很少,这样就实现了背光调节了,可以用吗,不可以,这样是会报错的,必需在AndroidManifest.xml中加上相关权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.HARDWARE_TEST" />
开始我以为这样就可以了,但还是一调节还是报错,查了半天资料才发现,还需要签名才能有这个权限,在manifest中加上android:sharedUserId="android.uid.system"
然后在Android.mk
中通过证书来声明权限。
LOCAL_CERTIFICATE := platform
需要和manifest中的android:sharedUserId="android.uid.system" 对应起来。
platform 权限问题,最好运行在自己编译的系统上,才可以有次特权。

OK完成了,用MM编译这个APP,生成的APK就可以用了。注意:这个在SDK上使用ECLIPSE IDE是不能编译过只。只能在ANDROID系统中的编译环境下,配置好MK文件,用MAKE来编译。

原文:http://blog.sina.com.cn/s/blog_5be1061c0100gqvd.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值