android:uses-permission 和 uses-permission 有啥区别?

Posted

技术标签:

【中文标题】android:uses-permission 和 uses-permission 有啥区别?【英文标题】:What is the difference between android:uses-permission and uses-permission?android:uses-permission 和 uses-permission 有什么区别? 【发布时间】:2015-04-29 08:33:45 【问题描述】:

这两种语法有什么区别。 android:uses-permissionuses-permission。例如:

<android:uses-permission
  android:name="android.permission.READ_EXTERNAL_STORAGE"
  android:maxSdkVersion="18" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

当我创建一个从存储读取的 Activity 时,Android Studio 自动将第一个添加到清单中。还有为什么当我将项目的targetSdkVersion设置为21时,它添加了android:maxSdkVersion属性并专门将其设置为18。

【问题讨论】:

这个问题的答案取决于您的 XML 清单文件中的命名空间声明。请发布您的完整文件。 “当我创建一个从存储读取的活动时,Android Studio 自动将第一个添加到清单中”——嗯,真的吗?您在 IDE 中具体做了什么触发它将其添加到清单中? AFAIK,android:uses-permission 是一个错误,它肯定不是它通常出现的样子。 android:maxSdkVersion 是因为如果您只使用 getExternalFilesDir()getExternalCacheDir(),则在 Android 4.4+ 设备上不需要该权限。如果您打算使用其他外部存储位置,请从标签中删除 maxSdkVersion 我不确定您是如何获得这两个权限的,但第一个 android:uses-permission 意味着从 API 级别 19 开始,系统将不再授予您的应用 READ_EXTERNAL_STORAGE 权限。更多详情:developer.android.com/guide/topics/manifest/… @CommonsWare 这很有意义。当我创建一个从存储中读取图像并运行调试的活动时,它会自动添加。我正在使用 Android Studio 1.1.0。 @MounirElfassi 第二个是我添加的,因为应用程序不断崩溃并抱怨没有权限。 【参考方案1】:
<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     android:maxSdkVersion="18" />

实际上,API 级别 18 及更低级别,Android 4.4(API 级别 19)需要此权限,当您的应用想要写入自己的应用程序特定目录时,您的应用不再需要请求 WRITE_EXTERNAL_STORAGE 权限在外部存储上(getExternalFilesDir()提供的目录。

【讨论】:

这种情况在我们使用eclipse的时候是看不到的。此链接中没有讨论任何内容developer.android.com/guide/topics/manifest/…

以上是关于android:uses-permission 和 uses-permission 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理