1、概念说明
1)apk签名
开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的。由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相同名字,但是签名不同的包不被替换。apk如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
2)自定义permission
开发程序时,可以在AndroidManifest.xml中自定义一个permission,权限具有名称、标签、图标、权限组、描述和保护级别,以下表格定义了这些属性:
特性 | 是否必需 | 说明 |
android:name | 权限的名称,通常遵循android命名规范(*.permission.*) | |
android:protectionLevel | 定义与权限相关的"风险级别"。必须是以下值之一: normal,dangerous,signature,signatureOrSystem, 取决于保护级别,在确定是否授予权限时,系统可能采取不同的操作。 normal 表示权限是低风险的,不会对系统、用户或其他应用程序造成危害; dangerous 表示权限是高风险的,系统将可能要求用户输入相关信息,才会授予此权限; signature 表示只有当应用程序所用数字签名与声明引权限的应用程序所用数字签名相同时, 才能将权限授给它;signatureOrSystem 表示将权限授给具有相同数字签名的应用程序或android 包类。 这一保护级别适和于非常特殊的情况,比如多个供应商需要通过系统映像共享功能时 | |
android:permissionGroup | 可以将权限放在一个组中,但对于自定期义权限,应该避免设置此属性。如果确实希望设置此属性, 可能使用以下属性代替:android.permisson-group.SYSTEM_TOOLS | |
android:label | 可使用它对权限进行简短描述 | |
android:description | 使用它提供对权限用途和所保护对象的更有用的描述 | |
android:icon | 权限可以与资源目录以外的图标相关联 ( 比如@drawable/myicon) |
1、定义permission
2、在其他应用中声明该permission
<uses-permission android:name="com.test.permission.USE_SERVICE" />
3、对这些应用使用相同的keystore进行签名
这样就可以保证具有相同签名的应用可以使用该service,而防止其他不同签名的应用去使用该service