AndroidManifest.xml配置文件的介绍三:权限篇

本文详细介绍了AndroidManifest.xml中关于权限的配置,包括使用系统权限的示例,如访问网络、存储、位置等,并列举了多个关键权限的详细解释,如ACCESS_FINE_LOCATION、SEND_SMS等。此外,还提及了自定义权限的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     清单配置文件说明:

权限篇

1 使用系统权限

<uses-permission>申请权限

声明了哪些是由你定义的权限,而这些权限是应用程序正常执行所必须的。在安装程序的时候,你设定的所有权限,将会告诉给用户,由他们来决定同意与否,对很多本地Android服务来说,权限都是必须的。特别是哪些需要付费或者有安全问题的服务(eg:使用基于位置的服务)

权限的添加除了在清单配置文件中添加外,还可以在Permissions


中添加,下面为相关界面:




下面列举出部分权限相关说明:

 添加WiFi以及访问网络的权限:
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" ></uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission>
    <uses-permission android:name="android.permission.INTERNET" ></uses-permission>
    <uses-permission android:name="android.permission.WAKE_LOCK" ></uses-permission>


操作外部存储设备文件:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


录音时需要的权限:
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


录制视频时需要的权限:
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


发送短信:
<uses-permission android:name="android.permission.SEND_SMS" ></uses-permission>


收短信:
<uses-permission android:name="android.permission.RECEIVE_SMS" />


收彩信:
<uses-permission android:name="android.permission.READ_SMS" />


GPS:
<!-- 权限 : 上网连线   -->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!-- 权限 : GPS定位      -->
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

具体权限:
1. android.permission.ACCESS_CHECKIN_PROPERTIES
    允许读写访问”properties”表在 checkin数据库中,可以修改值上传

2. android.permission.ACCESS_COARSE_LOCATION
    允许一个程序访问CellID或WiFi热点来获取粗略的位置

3. android.permission.ACCESS_FINE_LOCATION
    允许一个程序访问精良位置(如GPS)

4. android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
    允许应用程序访问额外的位置提供命令

5. android.permission.ACCESS_MOCK_LOCATION
    允许程序创建模拟位置提供用于测试

6. android.permission.ACCESS_NETWORK_STATE
    允许程序访问有关GSM网络信息

7. android.permission.ACCESS_SURFACE_FLINGER
    允许程序使用SurfaceFlinger底层特性

8. android.permission.ACCESS_WIFI_STATE
    允许程序访问Wi-Fi网络状态信息

9. android.permission.ADD_SYSTEM_SERVICE
    允许程序发布系统级服务

10. android.permission.BATTERY_STATS
    允许程序更新手机电池统计信息

11. android.permission.BLUETOOTH
    允许程序连接到已配对的蓝牙设备

12. android.permission.BLUETOOTH_ADMIN
    允许程序发现和配对蓝牙设备

13. android.permission.BRICK
    请求能够禁用设备

14. android.permission.BROADCAST_PACKAGE_REMOVED
    允许程序广播一个提示消息在一个应用程序包已经移除后

15. android.permission.BROADCAST_STICKY
    允许一个程序广播常用intents

16. android.permission.CALL_PHONE
    允许一个程序初始化一个电话拨号不需通过拨号用户界面需 要用户确认

17. android.permission.CALL_PRIVILEGED
    允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认

18. android.permission.CAMERA
    请求访问使用照相设备

19. android.permission.CHANGE_COMPONENT_ENABLED_STATE
    允许一个程序是否改变一个组件或其他的启用或禁用

20. android.permission.CHANGE_CONFIGURATION
    允许一个程序修改当前设置,如本地化

21. android.permission.CHANGE_NETWORK_STATE
    允许程序改变网络连接状态

22. android.permission.CHANGE_WIFI_STATE
    允许程序改变Wi-Fi连接状态

23. android.permission.CLEAR_APP_CACHE
    允许一个程序清楚缓存从所有安装的程序在设备中

24. android.permission.CLEAR_APP_USER_DATA
    允许一个程序清除用户设置

25. android.permission.CONTROL_LOCATION_UPDATES
    允许启用禁止位置更新提示从无线模块

26. android.permission.DELETE_CACHE_FILES
    允许程序删除缓存文件

27. android.permission.DELETE_PACKAGES
    允许一个程序删除包

28. android.permission.DEVICE_POWER
    允许访问底层电源管理

29. android.permission.DIAGNOSTIC
    允许程序RW诊断资源

30. android.permission.DISABLE_KEYGUARD
    允许程序禁用键盘锁

31. android.permission.DUMP
    允许程序返回状态抓取信息从系统服务

32. android.permission.EXPAND_STATUS_BAR
    允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序

33. android.permission.FACTORY_TEST
    作为一个工厂测试程序,运行在root用户

34. android.permission.FLASHLIGHT
    访问闪光灯,android开发网提示HTC Dream不包含闪光灯
35. android.permission.FORCE_BACK
    允许程序强行一个后退操作是否在顶层activities

36. android.permission.FOTA_UPDATE
    暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.

37. android.permission.GET_ACCOUNTS
    访问一个帐户列表在Accounts Service中

38. android.permission.GET_PACKAGE_SIZE
    允许一个程序获取任何package占用空间容量
39. android.permission.GET_TASKS
    允许一个程序获取信息有关当前或最近运行的任务, 一个缩略的任务状态,是否活动等等

40. android.permission.HARDWARE_TEST
    允许访问硬件

41. android.permission.INJECT_EVENTS
    允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是hook技术吧

42. android.permission.INSTALL_PACKAGES
    允许一个程序安装packages

43. android.permission.INTERNAL_SYSTEM_WINDOW
    允许打开窗口使用系统用户界面

44. android.permission.INTERNET
    允许程序打开网络套接字

45. android.permission.MANAGE_APP_TOKENS
    允许程序管理(创建、催后、 z- order默认向z轴推移)程序引用在窗口管理器中

46. android.permission.MASTER_CLEAR目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机

47. android.permission.MODIFY_AUDIO_SETTINGS
    允许程序修改全局音频设置

48. android.permission.MODIFY_PHONE_STATE
    允许修改话机状态,如电源,人机接口等

49. android.permission.MOUNT_UNMOUNT_FILESYSTEMS
    允许挂载和反挂载文件系统可移动存储

50. android.permission.PERSISTENT_ACTIVITY
    允许一个程序设置他的activities显示

51. android.permission.PROCESS_OUTGOING_CALLS
    允许程序监视、修改有关播出电话

52. android.permission.READ_CALENDAR
    允许程序读取用户日历数据

53. android.permission.READ_CONTACTS
    允许程序读取用户联系人数据
54. android.permission.READ_FRAME_BUFFER
    允许程序屏幕波或和更多常规的访问帧缓冲数据

55. android.permission.READ_INPUT_STATE
    允许程序返回当前按键状态

56. android.permission.READ_LOGS
    允许程序读取底层系统日志文件

57. android.permission.READ_OWNER_DATA
    允许程序读取所有者数据

58. android.permission.READ_SMS
    允许程序读取短信息

59. android.permission.READ_SYNC_SETTINGS
    允许程序读取同步设置

60. android.permission.READ_SYNC_STATS
    允许程序读取同步状态

61. android.permission.REBOOT
    请求能够重新启动设备

62. android.permission.RECEIVE_BOOT_COMPLETED
    允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动

63. android.permission.RECEIVE_MMS
    允许一个程序监控将收到MMS彩信,记录或处理

64. android.permission.RECEIVE_SMS
    允许程序监控一个将收到短信息,记录或处理

65. android.permission.RECEIVE_WAP_PUSH
    允许程序监控将收到WAP PUSH信息

66. android.permission.RECORD_AUDIO
    允许程序录制音频

67. android.permission.REORDER_TASKS
    允许程序改变Z轴排列任务

68. android.permission.RESTART_PACKAGES
    允许程序重新启动其他程序

69. android.permission.SEND_SMS
    允许程序发送SMS短信

70. android.permission.SET_ACTIVITY_WATCHER
    允许程序监控或控制activities已经启动全局系统中

71. android.permission.SET_ALWAYS_FINISH
    允许程序控制是否活动间接完成在处于后台时

72. android.permission.SET_ANIMATION_SCALE
    修改全局信息比例

73. android.permission.SET_DEBUG_APP
    配置一个程序用于调试

74. android.permission.SET_ORIENTATION
    允许底层访问设置屏幕方向和实际旋转

75. android.permission.SET_PREFERRED_APPLICATIONS
    允许一个程序修改列表参数 PackageManager.addPackageToPreferred() 和PackageManager.removePackageFromPreferred()方法

76. android.permission.SET_PROCESS_FOREGROUND
    允许程序当前运行程序强行到前台

77. android.permission.SET_PROCESS_LIMIT
    允许设置最大的运行进程数量

78. android.permission.SET_TIME_ZONE
    允许程序设置时间区域

79. android.permission.SET_WALLPAPER
    允许程序设置壁纸

80. android.permission.SET_WALLPAPER_HINTS
    允许程序设置壁纸hits

81. android.permission.SIGNAL_PERSISTENT_PROCESSES
    允许程序请求发送信号到所有显示的进程中

82. android.permission.STATUS_BAR
    允许程序打开、关闭或禁用状态栏及图标

83. android.permission.SUBSCRIBED_FEEDS_READ
    允许一个程序访问订阅RSS Feed内容提供

84. android.permission.SUBSCRIBED_FEEDS_WRITE
    系统暂时保留改设置,android开发网认为未来版本会加入该功能。

85. android.permission.SYSTEM_ALERT_WINDOW
    允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层

86. android.permission.VIBRATE
    允许访问振动设备

87. android.permission.WAKE_LOCK
    允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失

88. android.permission.WRITE_APN_SETTINGS
    允许程序写入API设置

89. android.permission.WRITE_CALENDAR
    允许一个程序写入但不读取用户日历数据

90. android.permission.WRITE_CONTACTS
    允许程序写入但不读取用户联系人数据

91. android.permission.WRITE_GSERVICES
    允许程序修改Google服务地图

92. android.permission.WRITE_OWNER_DATA
    允许一个程序写入但不读取所有者数据

93. android.permission.WRITE_SETTINGS
    允许程序读取或写入系统设置

94. android.permission.WRITE_SMS
    允许程序写短信

95. android.permission.WRITE_SYNC_SETTINGS
      允许程序写入同步设置


2 自定义权限

保护安卓的某些重要组件。

例如:接收广播的对象就需要注册一些自定义的权限并使用。



  总结:四大组件中,除了BroadcastReceiver可以使用代码声明注册外,其他组件必须在Manifest文件中进行声明配置,否则会报错。

      权限篇介绍到此结束,清单配置文件的相关说明也就到这了。只是一些浅显的介绍,希望对伙伴们有些用。清单配置文件中还有好多需要我们学习,深入挖掘的东西。学无止境,作为IT人员来说,要不就不断学习进步,要不就淘汰转行了......



<think>好的,用户遇到了Unity在构建Android应用时的错误,主要是关于AndroidManifest.xml中的几个问题。我需要仔细分析错误信息,找出原因并提供解决方案。 首先,错误信息显示有多个问题:找不到networkSecurityConfig和requestLegacyExternalStorage这两个属性,以及几个主题样式未找到。用户可能在使用较旧的SDK版本,而这些属性是在较新的SDK中引入的。此外,主题样式可能没有正确配置或引用。 接下来,我需要检查每个错误的具体原因。对于networkSecurityConfig和requestLegacyExternalStorage,这些属性需要Android 7.0(API 24)及以上版本的支持,而用户可能使用了较低的build-tools版本23.0.3,这会导致无法识别这些属性。解决方案是升级build-tools和targetSdkVersion到24以上。 关于主题样式找不到的问题,用户可能在manifest中引用了不存在的样式名称,或者没有正确导入相关的资源文件。需要确保在项目的res/values/styles.xml中定义了UnityTheme、FanweiDialogActivityTheme等样式,或者确认使用的库是否包含这些主题。 此外,用户可能使用了旧版本的Unity,导致某些兼容性问题。需要建议用户检查Unity版本,并考虑升级到支持更高Android版本的版本,如2020.3 LTS以上。 最后,用户可能在项目中混合使用了不同的支持库版本,导致兼容性问题。需要统一支持库版本,并确保所有依赖库的兼容性。 总结解决方案:升级build-tools和targetSdkVersion到24以上,更新Unity版本,确保主题样式存在,清理冗余配置,并验证所有依赖库的兼容性。</think>以下是针对构建错误的详细分析及解决方案: --- ### 🔍 **错误原因分析** 1. **`networkSecurityConfig` 和 `requestLegacyExternalStorage` 错误** - 这两个属性需要 **Android 7.0+ (API 24)** 及以上版本支持 - 当前使用 `build-tools 23.0.3` 和 `android-23`,不兼容新特性 2. **主题样式资源找不到** - `@style/UnityTheme` 和 `@style/FanweiDialogActivityTheme` 未在项目中定义 --- ### 🛠️ **解决方案** #### ✅ 1. **升级 Build Tools 和 Target SDK** ```xml <!-- AndroidManifest.xml 中修改 --> <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" /> <!-- 至少 24 以上 --> ``` ```gradle // 在 Unity 导出的 build.gradle 中修改 android { compileSdkVersion 28 // 必须 >= targetSdkVersion buildToolsVersion "28.0.3" // 升级到 28.x defaultConfig { minSdkVersion 19 targetSdkVersion 28 } } ``` #### ✅ 2. **移除不兼容的属性** ```xml <!-- AndroidManifest.xml --> <application android:hardwareAccelerated="true" android:icon="@drawable/app_icon" android:isGame="true" android:label="@string/app_name" android:name="com.dw.Dating.wxapi.App"> ``` > **移除** `android:requestLegacyExternalStorage` 和 `android:networkSecurityConfig` 属性 #### ✅ 3. **定义缺失的主题样式** 在 `Assets/Plugins/Android/res/values/styles.xml` 中添加: ```xml <resources> <!-- Unity 主题 --> <style name="UnityTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> </style> <!-- 支付SDK主题 --> <style name="FanweiDialogActivityTheme" parent="Theme.AppCompat.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:backgroundDimEnabled">true</item> </style> <style name="FanweiActivityTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> </style> </resources> ``` #### ✅ 4. **清理冗余权限** ```xml <!-- AndroidManifest.xml --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" android:maxSdkVersion="23" /> <!-- 仅保留到 API 23 --> ``` #### ✅ 5. **更新 Unity 版本** - 升级到 **Unity 2020.3 LTS** 或更高版本 - 修复兼容性问题:`FileProvider` 使用 AndroidX ```xml <!-- 修改 provider 的 name --> <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths_fanwei" /> </provider> ``` --- ### 🧪 **最终验证步骤** 1. 清理 Unity 导出目录 2. 重新生成 AndroidManifest.xml 3. 使用 `aapt` 验证资源: ```bash aapt dump badging AndroidManifest.xml ``` 4. 构建 APK 并安装测试 --- ### 📌 **注意事项** 1. **支持库统一**:确保所有模块使用相同版本的 `androidx.appcompat:appcompat` 2. **ProGuard 规则**:避免混淆微信支付类 ```proguard -keep class com.tencent.mm.sdk.** { *; } -keep class com.fanwei.jubaosdk.** { *; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值