android - 关于Android中自定义权限的几个问题

标签 android security android-intent android-activity android-permissions

我正在学习 Android 编程,并且对自定义权限的概念有所了解。

根据我的理解,这是自定义权限的工作原理:

'Base app'可以通过声明自定义权限(即,在 list 文件中使用 <permission> 标记)和 'client app' 来保护它的一些组件(例如, Activity 和服务)调用受自定义权限保护的 Activity 和服务需要获取必要的权限(即,使用 list 文件中的 <uses-permission> 标记)才能调用 base app 中的那些组件。 .

但是,我对自定义权限有以下疑问:

  1. 如果自定义权限被声明为危险(即 android:protectionLevel="dangerous" ),client app在安装期间需要得到用户的批准吗?如果是这样,用户如何知道这些自定义权限,因为自定义权限没有任何文档。
  2. 在安装期间 client app知道base app是否已经安装在用户的手机中?无论如何client app想知道这些信息?
  3. 曾经client app已安装,如果用户决定删除 base app 会发生什么? ?在这种情况下,如果用户尝试使用 client app它会导致任何安全异常吗?

我不知道这些问题是否有意义,但这让我想知道自定义权限在实际场景中是如何工作的。

谢谢。

最佳答案

您的问题的答案如下。但是你可以引用 http://developer.android.com/guide/topics/manifest/permission-element.html以便更好地了解 Android 权限。

1.是的,如果你声明

android:protectionLevel="dangerous"

那么系统可能不会自动将其授予请求的应用程序。应用程序请求的任何危险权限都可能会显示给用户,并且需要在继续之前进行确认。

定义自定义权限的基本应用程序应该通过

提供描述
android:description="string resource"

这是一个示例权限定义。希望它是不言自明的。

<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" | 
 "signature" | "signatureOrSystem"] />

2.据我所知,客户端应用程序在安装时无法看到基础应用程序的存在。但是当客户端App启动时是可能的。无论如何,Android 系统会根据您的 android.xml 文件授予权限。因此客户端应用程序在安装时不必担心基础应用程序。

3.即使仍然安装了客户端应用程序,也可以删除基本应用程序。它不会在任何阶段出现任何错误消息或安全异常。但是,当您再次尝试运行客户端应用程序时,您可能会在尝试从客户端应用程序调用基本应用程序 Activity 时遇到“未找到 Activity ”异常。

关于android - 关于Android中自定义权限的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078369/

相关文章:

android - 使用 gradle 构建 android 应用程序时的新警告

ruby-on-rails - 如何从Nginx/Passenger中删除 "X-Runtime" header ?

iphone - 未启用用户密码锁时,如何使用 iOS 磁盘加密保护数据?

c# - 保护 .NET Core 2.1 与 SQL Azure 数据库通信的应用程序设置中的连接字符串

android - 如何将 URL 发送到 OneNote Android App?

android - 使 ListView 内的 TextView 使用默认的 ListView 行样式

android - 是否可以在 onPostExecute 中启动一个 Activity ?

android - setListAdapter 不适用于 fragment ?任何替代品

java - Intent-Filter 要么允许通过 URL 启动,要么允许应用出现在 Android 启动器中

java - 如何将字符串从 Java 服务器类传递到 Android Activity ?