`
lynen
  • 浏览: 128515 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

转:自定义Android应用的访问权限

 
阅读更多

原文出处:http://www.android123.com.cn/androidkaifa/515.html

 

自定义Android应用的访问权限


  由于Android部分设计原理较为开放,可能通过Intent或 PackageManager就可以解析处理调用其他应用的子类,所以在部分应用中需要做更多的安全处理,保证应用内部的稳定性和安全性。 Android123强烈大家仔细阅读本文,这将会对您在构架Android应用时减少一些隐患的发生。

  稳定性: 部分类可能没有数值的传入将会导致可能初始化失败,造成Force Close等问题。

  安全性: 其他应用调用本程序的SQL数据库等问题,可能会造成一些无法预料到的损失。

 

  一、Android应用内部安全保护 

为了考虑内部部分敏感数据处理的安全性加入类ACL访问控制,当然使用了更加灵活的,比如UID、SID、PID等多种方式:今天Android开发网一起和大家谈论下开发过程中的处理细节。

  1. 部分私有的配置信息,或相对轻量级的内容,可以使用SharedPreferences接口提供的相关方法处理,并设置为安全标志位私有MODE_PRIVATE,不过需要注意的是该方方仅能但进程调用。

  2. SQLite的安全问题,对于Content Provider的处理权限,在Android中可以直接显示的声明,比如在androidmanifest.xml中声明读或写权限,在 Provider节点中,声明android:writePermission或android:readPermission属性,当然其他程序声明了 这些权限也可以访问,这时我们可以通过 android:authorities属性限制一个类的访问,比如 android:authorities="cn.com.android123.cwj" 。最终类似

 

<provider
     android:name="cwjProvider"
     android:authorities="cn.com.android123.cwjProvider"
     android:writePermission="cn.com.android123.cwj.permission.WRITE_DATABASE"
     android:readPermission="cn.com.android123.cwj.permission.READ_DATABASE" />
 

 

  这里Android123提示大家,数据库本身的读写可以处理多线程问题,但是数据的先后可以考虑同步问题,设置android:multiprocess="true"属性来保证数据的正确性,相关问题不在本文讨论范围内,我们可能会在以后的内容中涉及这部分问题。

  3.  Activity、Service和Receiver的权限声明方式,可以直接使用android:permission属性,具体的和上面的SQLite安全一样的处理方式,演示代码如下

 

<activity
      android:name=".cwj"
      android:authorities="cn.com.android123"
      android:permission="cn.com.android123.cwj.permission.ACCESS"/>
 

 

  二、Permission的声明

 

<permission
        android:name="cn.com.android123.cwj.permission.ACCESS"
        android:protectionLevel="normal"
        android:label="@string/permission_aceess"
        android:description="@string/permission_aceess_detail" />
 

 

  当然还有可选的属性比如说android:protectionLevel="normal"设置保护权限,还有必须签名signature,当然这里对 于权限分组我们可以通过类似permission的方法来声明permissionGroup,或直接使用系统的,比如 android:permissionGroup="android.permission-group.SYSTEM_TOOLS"最终其他应用中调 用,可以显示的在自己的manifest.xml中声明即可,类似 <uses-permission android:name="cn.com.android123.cwj.permission.ACCESS" />

 

 三、账户安全声明

  直接在androidmanifest.xml中的Application中直接声明,比如标准用户权限类似

  android:sharedUserId="android.uid.shared"  ,当然处理一些RIL方面的可以声明类似 android.uid.phone 的权限,处理一些更敏感的数据。

 

  四、对于Service而言除了限制访问的package外,我们还可以通过直接绑定并参数判断的访问来处理尽量不使用 android:exported="true"的导出方法,当然通过broadcast方式通讯可以通过intent的extra方式可以做一些简单的 验证。

 

  五、PID的安全问题,通过限制processID的方式限制访问,仅允许在同一个进程空间访问。

分享到:
评论

相关推荐

    Android自定义权限的使用

    在应用需要使用自定义权限的地方,也需要在`AndroidManifest.xml`中声明这个权限: ```xml &lt;uses-permission android:name="com.example.MY_CUSTOM_PERMISSION"/&gt; ``` 3. **请求权限**: 对于API级别23及以上...

    android 理解和使用自定义权限

    3. 请求权限:如果未获得权限,可以使用`requestPermissions()`方法向用户请求,同时需要实现`ActivityCompat.OnRequestPermissionsResultCallback`接口处理结果。 四、权限动态请求 对于Android 6.0(API 23)及...

    Android 使用记录访问权限

    总结来说,Android的记录访问权限和`UsageStatsManager`是强大的工具,它们可以帮助开发者深入了解用户如何与他们的应用互动,同时也有助于提高用户体验和设备的安全性。然而,正确使用这些工具需要对Android权限...

    Android 串口通信权限问题

    2. **硬件访问权限**:Android 6.0(API级别23)及更高版本引入了动态权限模型,意味着在运行时,应用需要获取敏感权限。对于串口访问,需要在代码中请求`android.permission.WRITE_EXTERNAL_STORAGE`和`android....

    android 自定义Permission

    总之,自定义权限是Android系统权限体系的扩展,它让开发者能够更精细地控制应用的访问权限,以适应特定的安全需求。正确理解和使用自定义权限,可以增强应用的安全性,并提供更好的用户体验。在实际开发中,务必...

    Android访问权限大全

    在Android应用开发过程中,访问权限管理是一项至关重要的工作。合理的权限配置不仅可以保障用户数据的安全,还能确保应用的正常运行。本文将详细介绍Android中的多种访问权限及其功能,帮助开发者更好地理解并使用...

    Android构建一个通用的WebView(二):自定义的错误页面、缓存数据,离线浏览

    首先,在`AndroidManifest.xml`中为应用添加读写外部存储的权限: ```xml &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; &lt;uses-permission android:name="android.permission....

    Android 中“自定义权限”源代码

    同时,在其他应用或同一应用的其他组件中,如果想要访问这个受自定义权限保护的组件,必须在自身的`AndroidManifest.xml`文件中请求该权限: ```xml &lt;uses-permission android:name="com.permission.my"/&gt; ``` ###...

    Android自定义权限permission

    1. 检查权限:在运行时,通过`ContextCompat.checkSelfPermission()`方法检查应用是否已经获得了所需的自定义权限。 ```java int permissionCheck = ContextCompat.checkSelfPermission(this, ...

    Android项目实战--手机卫士30--读取应用的权限以及自定义Toast

    本项目实战将重点讲解如何读取应用的权限以及实现自定义的Toast提示功能,这些都是Android应用开发中不可或缺的部分。 首先,我们来探讨**读取应用权限**这一主题。在Android系统中,应用程序需要获取特定的权限...

    免费分享:Android的安全与权限

    2. **应用程序签名**:所有Android应用都需要经过数字签名才能发布。这不仅是对开发者身份的一种认证,也是保证应用来源可信的重要手段。 3. **权限机制**:Android系统通过权限机制来限制应用的某些敏感行为,如...

    自定义照相机Android

    以上就是自定义Android相机应用开发的主要知识点,通过理解并实践这些内容,开发者可以创建出满足特定需求的个性化相机应用。RXCamera这个文件很可能是项目的核心代码库,里面可能包含了上述功能的实现,对学习和...

    Android修改系统文件访问权限

    在Android系统中,修改系统文件访问权限涉及到对操作系统底层的深度理解,这通常需要root权限。以下是关于这个主题的详细知识点: 1. **init.rc**:这是Android系统启动时执行的第一个脚本,位于系统的system/core/...

    android桌面应用程序

    2. Android SDK:Android 桌面应用程序需要使用 Android SDK 来访问 Android 操作系统的功能。 3. XML 布局:Android 桌面应用程序使用 XML 布局来描述用户界面。 Android 桌面应用程序的实现流程包括: 1. 创建...

    自定义权限学习(Perssion)

    自定义权限学习(Perssion)是指开发者根据应用需求创建并管理自己的权限,这通常涉及到系统层面的权限定义和应用间的权限交互。本教程将深入探讨如何在Android中实现自定义权限,并通过两个项目实例——...

    Android 自定义相机拍照和录像

    在Android开发中,自定义相机拍照和录像是一项常见的需求,特别是在构建个性化应用或者需要特定功能时。本项目针对这一主题提供了完整的解决方案,并已转化为Android Studio项目,方便开发者直接导入和使用。 首先...

    Android访问权限列表大全.doc

    Android访问权限列表大全详细列出了应用程序在执行特定功能时需要请求的权限。这些权限分为不同的类别,包括位置、网络、硬件访问等,以确保用户明确知道哪些功能可能会访问他们的敏感数据或系统资源。以下是一些...

    Android自定义权限

    2. **使用权限**:在需要使用此自定义权限的组件(Activity、Service等)中,通过`&lt;uses-permission&gt;`标签声明该权限: ```xml &lt;uses-permission android:name="com.example.myapp.CUSTOM_PERMISSION"/&gt; ``` 3. ...

    高教类课件:Android应用程序设计

    《高教类课件:Android应用程序设计》是针对高等教育阶段设计的一套教学资源,旨在深入讲解如何开发Android平台上的应用程序。这一课程涵盖了Android应用开发的基础到高级知识,为学生和有兴趣的开发者提供了全面的...

Global site tag (gtag.js) - Google Analytics