Symbian OS上的Capability介绍

在调试程序是遇到了这样的错误“由于安全问题,无法执行此文件”。由于使用了串口,所以怀疑是没有权限操作系统资源。于是接触到了Capability,它也和开发过程中使用的签名证书相关。

 

本文转至:http://wiki.forum.nokia.com/index.php/Capability%E4%BB%8B%E7%BB%8D 

 

能力是访问敏感API权限的令牌。如果需要保护Symbian OS中的特定功能(API),则使用该功能的代码必须具有与之相关的能力。需要访问能力受保护功能的代码必须通过授权过程才能获得使用能力的权限。

能力分类:

无限制:60%的API。


用户可以授权(在安装期间): ReadUserData,WriteUserData,NetworkServices,LocalServices, UserEnvironment。


Symbian Signed:用户可以授权的能力+Location,ReadDeviceData,WriteDeviceData, PowerMgmt,SurroundingsDD,ProtServ,TrustedUI,SwEvent。


许可获得者/平台批准: Symbian Signed的能力+[DRM,TCB]厂商,[AllFiles,CommDD,DiskAdmin,MultiMediaDD,NetworkControl]能力请求。


[DRM,TCB]需要通过向厂商申请获得。 [AllFiles,CommDD,DiskAdmin,MultiMediaDD,NetworkControl]需要在www.symbiansigned.com上填写“能力请求表单”申请获得。


能力:

NetworkServices:用于使用移动网络,例如:拨打电话或发送文本消息。

LocalServices:用于通过USB、红外和蓝牙发送或接收消息。

ReadUserData:准许读取用户数据。系统服务器和应用引擎可以自由地对他们的数据施加这一限制。

WriteUserData:准许写入用户数据。系统服务器和应用引擎可以自由地对他们的数据施加这一限制。

Location:准许访问手机的位置信息。

UserEnvironment:准许访问用户及其附近环境的实时保密信息。

PowerMgmt:准许在系统中中断任何进程或者转换机器状态(关掉设备)。

SwEvent:准许生成或者捕获键盘以及笔输入事件。

ReadDeviceData:准许读取系统设备驱动数据。

WriteDeviceData:准许写入系统设备驱动数据。

SurroundingsDD:准许访问提供外围设备输入信息的逻辑设备驱动。

TustedUI:区分”normal”应用和”trusted”应用的UI。当一个”trusted”应用在屏幕上显示内容时,一个”normal”的应用不能伪造它。

ProtServ:准许服务器应用可以用一个受保护的名字进行注册。受保护的名字以”!”开头。 NetworkControl:准许修改或者访问网络协议控制。

MultimediaDD:准许对所有多媒体设备驱动(声音、摄像头等)的访问。

DRM:准许访问DRM保护的内容。

TCB:准许在终端中访问/sys以及/resource目录。

CommDD:准许访问通信设备驱动。

DiskAdmin:准许进行硬盘管理操作,例如格式化驱动器。

AllFiles:准许系统中的所有文件可见,而且还可对在/private下的文件进行写操作。

如果你想要使用`PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALL`来拨打紧急电话,可以使用以下代码: ```java String emergencyNumber = "911"; // 紧急电话号码 // 获取TelecomManager实例 TelecomManager telecomManager = (TelecomManager) getSystemService(Context.TELECOM_SERVICE); // 获取当前默认的电话账号 PhoneAccountHandle defaultPhoneAccount = telecomManager.getDefaultOutgoingPhoneAccount("tel"); if (defaultPhoneAccount != null) { Bundle extras = new Bundle(); extras.putBoolean(TelecomManager.EXTRA_PLACE_EMERGENCY_CALL, true); // 创建一个拨打紧急电话的Intent Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + emergencyNumber), this, MyConnectionService.class); intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, defaultPhoneAccount); intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras); // 开始拨打紧急电话 telecomManager.placeCall(intent.getData(), intent.getExtras()); } ``` 上述代码中,我们首先获取了`TelecomManager`实例,并使用`getDefaultOutgoingPhoneAccount("tel")`方法获取当前默认的电话账号。然后,我们创建一个拨打紧急电话的`Intent`,并将紧急电话号码作为Uri的一部分。我们还通过`putExtra()`方法将`PhoneAccountHandle`和一个具有`TelecomManager.EXTRA_PLACE_EMERGENCY_CALL`标志的`Bundle`传递给`Intent`。 最后,我们使用`telecomManager.placeCall()`方法来拨打紧急电话。这个方法会将拨打紧急电话的请求发送给系统的电话服务,并由电话服务处理拨打紧急电话的过程。 请注意,为了使用`PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALL`,你需要在AndroidManifest.xml文件中声明一个电话服务,并将其与`MyConnectionService.class`(示例中的类名)关联起来。还要确保你的应用程序具有相应的权限,例如`CALL_PHONE`和`READ_PHONE_STATE`。 这是一个复杂的操作,需要谨慎处理。在实际应用中,请确保你对涉及紧急电话的操作进行适当的测试和安全性考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值