精华内容
参与话题
问答
  • Android R新特性:针对Android R 的应用

    千次阅读 2020-03-03 22:03:06
    Android 11平台包括可能会影响你的应用程序的行为更改。以下行为更改适用于在Android 11上运行的所有应用,无论targetSdkVersion如何,你应该测试你的应用程序,然后根据需要对其进行修改以适当地支持它们.

    Android 11平台包括可能会影响你的应用程序的行为更改。以下行为更改适用于在Android 11上运行的所有应用,无论targetSdkVersion如何,你应该测试你的应用程序,然后根据需要对其进行修改以适当地支持它们.

    注意:除了此页面上列出的更改外,Android 11还引入了大量更改和限制以增强用户隐私。后面会陆续更新。

     

    Scoped storage


    为了给开发人员更多的测试时间,面向Android 10(API级别29)或更低版本的应用仍可以请求requestLegacyExternalStorage属性。此标志允许应用程序暂时退出与范围存储相关的更改,例如授予对不同目录和不同类型媒体文件的访问权限。但是,当你将应用更新为Android 11时,将无法使用requestLegacyExternalStorage,并且没有其他可用选项提供退出功能。


    Directory access restrictions


    如果你的应用面向Android 11并使用存储访问框架(SAF),则无法再使用ACTION_OPEN_DOCUMENT和ACTION_OPEN_DOCUMENT_TREE 这些action来访问某些目录。


    Storage permissions


    如果你的应用以Android 11为目标,则与存储权限相关的若干行为更改将生效,后面博客会更新详细信息


    MAC randomization


    在针对Android 10(API级别29)及更低版本的应用上,MAC随机化是按SSID进行的,因为Passpoint可以连接到同一配置文件的不同SSID。在针对Android 11(API级别“ R”)及更高版本的应用中,Passpoint网络的MAC随机化已更改为每个完全合格的域名(FQDN)。


    Netlink MAC restrictions


    在以API等级R或更高级别为目标的应用程序上,非特权应用程序将无法访问设备的MAC地址;只有具有IPv4地址的网络接口才可见。这会影响getifaddrs()和NetworkInterface.getHardwareAddress()方法,以及发送RTM_GETLINK网络链接消息。这是“不适用于MAC地址”中提供的指导的强制实施



         从Android 11 Developer Preview 1开始,尚未完全实现所有这些更改。下表描述了所有非系统应用程序的当前功能,无论目标API级别如何:
        所有网络接口都可以通过NetworkInterface和getifaddrs()获得
        对于具有MAC地址的接口,NetworkInterface.getHardwareAddress()返回02-00-00-00-00-00
        应用程序可以在NETLINK_ROUTE套接字上使用bind()函数
        应用程序开发人员可以调用IP命令以获取有关接口的信息

    上面的列表是对当前行为的描述,但是你不应依赖于它来更新应用程序,因为此部分顶部的描述将与稳定版Android 11一起发布。

    请注意,大多数开发人员应使用ConnectivityManager的较高级别的API,而不是较低级别的NetworkInterface / getifaddrs()API。
     

    展开全文
  • Android R新特性:权限更新

    千次阅读 2020-03-04 21:23:01
    Android 11使用户能够为位置,麦克风和摄像头指定更精细的权限。此版本还提供支持,以帮助开发人员审核数据访问并将数据访问与应用程序中的特定功能相关联 One-time permissions 在Android 11中,只要您的应用请求...

    Android 11使用户能够为位置,麦克风和摄像头指定更精细的权限。此版本还提供支持,以帮助开发人员审核数据访问并将数据访问与应用程序中的特定功能相关联

    One-time permissions


    在Android 11中,只要您的应用请求与位置,麦克风或摄像头相关的权限,面向用户的权限对话框都会包含一个名为Only this time的选项,如图1所示。如果用户在对话框中选择此选项,则您的应用被授予了临时的一次性许可。您的应用仅在以下情况之一成立时才能访问相关数据:
        自用户授予一次性权限以来,您的应用程序活动就一直可见。
        当用户授予许可并且此后一直在运行前台服务时,您的应用程序便可见。只要前台服务保持运行,即使用户将您的应用程序移至后台,您的应用程序仍将保留该权限
    如果两个条件都不成立,则无论目标SDK版本如何,都需要再次询问用户权限

     

                                                                            图1.包含“仅此时间”选项的“权限”对话框

    WebView location access


    如果您的应用程序包含WebView实例,则用户可以允许连续访问WebView对象本身中的位置,但将您的应用程序的位置权限限制为仅此一次。在这种情况下,请显示说明Web权限和应用程序级系统权限之间差异的屏幕或对话框。

     

    Permission dialog visibility


    Android 11不鼓励在特定权限组中重复请求权限。如果用户在应用程序在设备上的安装期间内两次点击“拒绝”以获取特定权限,则此操作表示“不再询问”相应的权限组。

    系统还定义了用于响应模仿“拒绝”选项的动作的行为:

    如果用户按下“后退”按钮以退出权限对话框,则这不算作“拒绝”操作。
    如果使用requestPermissions()将用户从您的应用中转到系统设置,然后按返回按钮,则此操作算作“拒绝”操作

    Data access auditing


    注意:本节中显示的方法名称在以后的Developer Preview版本中可能会发生变化。

    为了使您的应用及其依赖项如何访问用户的私有数据更加透明,Android 11引入了数据访问审核。通过从此过程中获得见解,您可以更好地识别和纠正潜在的意外数据访问。您的应用程序可以注册AppOpsManager.AppOpsCollector的实例,该实例可以在每次以下事件之一发生时执行操作:
        您应用的代码可访问私人数据。为了帮助您确定应用程序的哪个逻辑部分调用了事件,您可以按功能审核数据访问。
        依赖库或SDK中的代码访问私有数据。

    在发生数据请求的线程上调用数据访问审核。这意味着,如果您应用中的第三方SDK或库调用了访问私有数据的API,则数据访问审核将允许您的AppOpsCollector检查有关该调用的信息。通常,此收集器对象可以通过查看应用程序的当前状态(例如当前线程的堆栈跟踪)来判断调用是来自您的应用程序还是来自SDK

     

    Log access of data


    若要使用AppOpsManager.AppOpsCollector的实例执行数据访问审核,请在要审核数据访问的组件中实现回调逻辑,例如在活动的onCreate()方法中。

    在特定情况下,将调用onAsyncNoted()和onSelfNoted()方法:

        如果在应用程序的API调用期间未进行数据访问,则会调用onAsyncNoted()。最常见的示例是您的应用程序注册了侦听器,并且每次调用侦听器的回调时都会进行数据访问。传递给onAsyncNoted()的AsyncNotedOp参数包含一个名为getMessage()的方法。此方法提供有关数据访问的更多信息。对于位置回调,该消息包含侦听器的系统标识哈希。
        当应用将自己的UID传递到noteOp()时,在极少数情况下会调用onSelfNoted()。

     

    Audit data access by feature


    您的应用可能有几种主要用例,例如允许用户捕获照片并与他们的联系人共享这些照片。如果您开发了这样的多功能应用程序,则可以在私有数据审核中定义功能上下文。 FeatureId上下文在传递给对onNoted()的调用的对象中返回。这可以帮助您更轻松地将数据访问追溯到代码的逻辑部分。

    要在您的应用程序中定义功能上下文,请完成以下各节中的步骤。


    Create feature contexts
    在访问数据的活动(例如,请求位置或访问用户的联系人列表的活动)的onCreate()方法中,调用createFeatureContext(),并传入功能的逻辑名称。


    Include feature contexts in access logs
    更新您的AppOpsManager.AppOpsCollector回调,以便您的应用程序日志包含您定义的功能的名称

    注意:如果功能ID的返回值为null,则表示当前Context对象与您应用的默认功能相关联。
     

    展开全文
  • android自带图片资源图标一览,android R drawable

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • Android R新特性:存储相关的更新

    千次阅读 2020-03-03 23:47:50
    Android 11进一步增强了平台,为外部存储上的应用程序和用户数据提供了更好的保护。作为这项工作的一部分,该平台引入了进一步的改进,以简化向范围存储的过渡。 该预览版引入了我们去年在Android Dev Summit上提出...

     

    Android 11进一步增强了平台,为外部存储上的应用程序和用户数据提供了更好的保护。作为这项工作的一部分,该平台引入了进一步的改进,以简化向范围存储的过渡。 该预览版引入了我们去年在Android Dev Summit上提出的一些增强功能,例如,对介质的选择加入原始文件路径访问,对介质的批处理编辑操作以及对Storage Access Framework的更新的UI。 在即将发布的Developer Preview中,寻找文件访问的其他增强功能以​​及有关文件管理和照片画廊的更新策略。与往常一样,我们邀请您提供反馈意见,以帮助打造新的Android版本。使用问题追踪器向我们发送您的评论。

     

    Scoped storage enforcement


     为了给开发人员更多的测试时间,面向Android 10(API级别29)或更低版本的应用仍可以请求requestLegacyExternalStorage属性。此标志允许应用程序暂时退出与范围存储相关的更改,例如授予对不同目录和不同类型媒体文件的访问权限。 但是,当您将应用更新为Android 11时,将无法使用requestLegacyExternalStorage,并且没有其他可用选项提供退出功能。

    Media file access


     

    为了在保留用户隐私的同时更轻松地访问媒体,Android 11添加了以下功能。

    Perform batch operations

     

    为了使设备之间保持一致并增加用户的便利性,Android 11向MediaStore API添加了几种方法。这些方法对于希望简化流程以修改特定媒体文件(例如就地编辑照片)的应用程序特别有用。

     

    添加的方法如下:

    createWriteRequest()

    要求用户授予您的应用对指定媒体文件组的写访问权限。

    createFavoriteRequest()

    请求用户在设备上将指定的媒体文件标记为他们的某些“收藏夹”媒体。对此文件具有读取访问权限的任何应用程序都可以看到用户已将该文件标记为“收藏夹”。

    createTrashRequest()

    要求用户将指定的媒体文件放入设备的垃圾箱。在特定时间段后,垃圾桶中的项目将被永久删除;默认值为7天。

    createDeleteRequest()

    要求用户立即将指定的媒体文件永久删除,而无需事先将其放入垃圾箱。

     

    在调用这些方法中的任何一个之后,系统将合并一个PendingIntent对象。您的应用程序调用此后后,用户会见一个链接,要求您同意您的应用程序更新或删除指定的媒体文件。

     

    Access files using raw paths

    要激活此功能进行测试,请执行以下操作:
    
    1.打开系统设置。
    2.导航到系统>开发人员选项>功能标志。
    3.找到settings_fuse并将其打开。现在settings_fuse下的描述应该为true。
    4.重新启动设备。

    File and directory access restrictions


     

    为了使开发人员有时间进行测试,与存储访问框架(SAF)相关的以下更改仅在您的应用面向Android 11时才生效。

     

    访问目录

    您不能再使用ACTION_OPEN_DOCUMENT_TREE意向操作来请求访问以下目录:

    1.根下载目录。

    2.设备制造商认为可靠的每个SD卡卷的根目录,无论该卡是仿真卡还是可移动卡。

     

     

    测试变更

    要测试此行为更改,请在应用的清单文件中将requestLegacyExternalStorage的值设置为false。您可以通过执行以下操作来确认行为更改已对您的应用生效:

    1.通过ACTION_OPEN_DOCUMENT_TREE动作调用意图。检查“下载目录”是否出现并显示为灰色。

     2. 使用ACTION_OPEN_DOCUMENT操作调用意图。检查Android / data /和Android / obb /目录都没有出现

     

    Permissions


     

    Android 11引入了以下与存储权限相关的更改

    无论您应用的目标SDK版本是什么,以下更改都将在Android 11中生效:
    
    1.存储运行时权限已重命名为“文件和媒体”。
    2.如果您的应用未选择退出范围存储并请求READ_EXTERNAL_STORAGE权限,则用户将看到与Android 10不同的对话框。该对话框表明您的应用正在请求访问照片,视频,音频剪辑和文件。在系统设置的“设置”>“隐私”>“权限管理器”>“文件和媒体”页面上,如果授予了权限,您的应用程序将列在“允许所有文件”下

     

    如果您的应用以Android 11为目标,则WRITE_EXTERNAL_STORAGE权限和WRITE_MEDIA_STORAGE特权都不再提供任何其他访问权限。

     

    All Files Access


    有些应用程序具有核心用例,需要广泛的文件访问权限,例如文件管理或备份和还原操作。他们可以通过执行以下操作获得“所有文件访问”权限:
    
    1.声明MANAGE_EXTERNAL_STORAGE权限。
    2.将用户定向到系统设置页面,他们可以在其中启用应用程序的“允许访问以管理所有文件”选项。
    
    此权限授予以下权限:
    1.对共享存储中的所有文件的读访问权和写访问权。
    2.访问MediaStore.Files表的内容。

     

    应用程序可以使用MediaStore API或原始文件路径访问这些文件。如果您的应用程序使用Storage Access Framework,则不能使用它访问“所有文件访问”权限可用的其他文件和目录。

     

    MANAGE_EXTERNAL_STORAGE权限允许应用访问共享存储上的潜在敏感数据。在即将发布的开发人员预览版中,寻找Google Play为需要此权限的应用提供准则。

    展开全文
  • Android R如何访问文件,修改文件,你们对R适配了吗心理分析:新Android特性一直都是面试官重点中的重点接下来,会问你他的原理 你是怎么看。 它的优缺点。为什么比其他的好。从原理层来解析。这才是最难的。 这篇...
  • Android 11根据与Android开发人员的协作以及最新的内部测试,包括受限制的非SDK接口的更新列表。只要有可能,在限制非SDK接口之前,请确保可以使用公共替代方案。 如果您的应用程序未针对Android 11,则其中的某些...
  • android R文件报红原因

    千次阅读 2018-07-27 10:52:55
    1.重启,clean,rebuild,更改gradel里的sdk版本,之后还是不行的话基本可以断定是自己新写的layout.xml文件出错。 我的错误是:  layout.xml用了没有的属性:如 link_height行高...
  • Android R文件介绍

    千次阅读 2017-04-30 19:59:51
    R.Java 文件中默认有attr、drawable、layout、string等色哥静态内部类,每个静态内部类分别对应着一种资源,如layout静态内部类对应着layout中的接界面文件,其中每个静态内部类中的静态常量分别定义为一条资源...
  • Android R.java类的手动生成

    万次阅读 2016-02-25 16:36:10
    Android中的资源和R.java类 在Android项目中的res目录中包含了项目使用的各种资源,这些资源全部都分布在res目录下的各个子目录中。每个资源都有两个属性,一个是资源的名字,一个是资源的类型。此外,res目录下的...
  • R.layout.test文件时,总是找不到您想要的文件,可是它明明就在layout文件下面,而且在R.Java中也已经生成了,那么找不到的原因就是你导入了Android.R的包,这样你永远找不到你想要是,你应该导入自己项目的R文件...
  • import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MainActivity extends Activity { @Override ...
  • android R.id找不到资源的问题

    千次阅读 2017-09-20 16:39:54
    1.R文件未编译,只需sync project同步编译一下; 2.清理工作空间,build>clean project; 3.没有正确导入资源包,import 修改成自己的包名.R,比如 import com.example.myapplication.R; 4.重命名控件,再同步...
  • Android R类详解

    千次阅读 2014-04-12 17:28:18
    在我们编译一个Android应用时,Android会自动生成一个R类,在该类中根据不同的资源类型又生成了相应的内部类,该类包含了系统中使用到的所有资源文件的标示,其内容如下所示。 // 资源类  public final class R...
  • Androidr如何实现后退一个页面并刷新这个页面的数据 比如我在当前的页面点击一个按钮,通过这个按钮的监听事件将指定的数据存储在sharedpreference中,后退的页面如何通过获取sharedpreference的数据并刷新页面。...
  • android R.java文件丢失或被删除

    千次阅读 2016-01-15 17:51:38
    今天正在写代码,xml和java同时进行的时候,...一气之下,我就把R.java那个文件给删了。之后就开始网上疯狂找解决办法。。。。 网上有很多文章告诉我们怎么去解决R.java文件丢失的问题。 1、选择菜单 Project >
  • android R文件不在自动生成资源id

    千次阅读 2015-05-13 08:30:08
    关于android R文件不在自动生成资源id的问题解决: 1、设置eclipse->project->build automatically 2、上述没有解决的话 project->clear
  • 问题是,当你在R.layout.xml文件时,总是找不到您想要的文件,可是它明明就在layout文件下面,而且在R.java中也已经生成了,那么找不到的原因就是你导入了android.R的包,这样你永远找不到你想要是,你应该导入自己...
  • Android_Android R.raw.one的问题

    千次阅读 2012-07-29 14:01:30
    private static int index = 0;//数组元素从0开始  //图片数组  private int[] resIds = new int[] { R.raw.one, R.raw.two, R.raw.three, ... R.raw.four, R.raw.five, R.raw.six, R.raw.seven};   提示R
  • r cannot be resolved to a variable,这个错误几乎每个安卓开发者都会遇到,网上的答案一般都是: ...确保class没有import Android.R;  3,错误class引用的layout的xml文件没有错误  4.检查AndroidManife
  • # 第一,先去import看看有没有 错误导入了import android.R 如果有。删掉。 # 第二,查看xml有没有写错的地方,重要的位置:package <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...
  • 最近总是遇到R.layout. 然后找不到自己已经弄好的布局文件,十分不解! 今天查了下baid
  • Android R 文件消失的解决办法

    千次阅读 2013-01-11 14:41:24
    3.Android Tools——>Fix Project Properties  4.从别的工程中拷贝一份R文件过来 然后string.xml里随便改动一下 即可更新R文件 如果上述方法还不行,好好检查一下resoure资源中的文件 命名 比如需要全部小写
  • android R文件丢失

    千次阅读 2011-03-13 14:37:00
    写完一刷新项目,gen目录下的R文件就不见了。遇到这个情况,一般是xml里有错误,于是,我就一个个去检查我写的xml。实在是没看到什么错误。后来把全部文件都剪出去再一个一个的放进来。放到linearHorizontal.xml这个...
  • android R.java被误删恢复办法

    千次阅读 2013-03-20 23:42:22
    1.先检查你的代码,代码有误,R.java文件是生成不了的 2. 把Project ----> Build Automatically那个选项勾上,让工程每次修改完后都会自动编译,这样R.java会是最新的(这时候程序有误,不会生成) 3. Project...
  • 去import看看有没有 错误导入了import android.R 如果有。删掉。 查看xml有没有写错的地方 还有一种方法是 Project --- > clean 这里要注意下。如果 Project --- > clean 后 R也没有重新生成 。 关掉...
  • Android R.java不能生成

    千次阅读 2012-04-26 10:51:01
    近日开发一个Android项目,为了在新项目中...创建好新项目后,发现Eclipse 中R.java 无法自动生成,R.java 文件不能自动生成的原因在StackOverflow上有较多的探讨,一个常见的原因是layout xml 使用了Android 2.2 新引
  • android R.java文件丢失或无法更新

    万次阅读 热门讨论 2012-04-20 12:12:13
    首先确定你的SDK是新的。 其次接下来检查你的.xml文件,文件名不能大写。 如果xml文件太多 ,那么clean一下你的项目,这时候注意看Console的提示。 Console会提示你xml文件错误在哪里 ...R.java会重新出现或更新

空空如也

1 2 3 4 5 ... 20
收藏数 39,140
精华内容 15,656
关键字:

android r