标签: android-6.0-marshmallow

展开/折叠棒棒糖工具栏动画(电报应用程序)

我正在试图弄清楚工具栏的展开/折叠动画是如何完成的.如果您查看Telegram应用程序设置,您将看到列表视图和工具栏.向下滚动时,工具栏会折叠,向上滚动时会展开.还有配置文件pic和FAB的动画.有人有任何线索吗?你认为他们建立了所有的动画吗?也许我错过了新API或支持库中的一些东西.

我注意到Google日历应用程序中的相同行为,当您打开Spinner时(我不认为它是一个微调器,但它看起来像):工具栏展开,当您向上滚动时,它会崩溃.

只是为了澄清:我不需要QuickReturn方法.我知道可能Telegram应用程序正在使用类似的东西.我需要的确切方法是Google日历应用效果.我试过了

android:animateLayoutChanges="true"
Run Code Online (Sandbox Code Playgroud)

并且expand方法运行良好.但显然,如果我向上滚动ListView,工具栏不会崩溃.

我也想过添加一个,GestureListener但我想知道是否有任何API或更简单的方法来实现这一点.

如果没有,我想我会跟着GestureListener.希望能有一个平滑的动画效果.

谢谢!

android android-animation android-toolbar android-6.0-marshmallow android-7.0-nougat

72
推荐指数
3
解决办法
8万
查看次数

Android M权限对话框未显示

我目前正在尝试将我的应用程序调整为Android M的新权限模型.

我正在收集我需要的所有权限,然后运行

Log.i("Permissions", "Requesting permissions: " + permissions);
requestPermissions(requiredPermissions.toArray(new String[requiredPermissions.size()]), requestCodeForPermissions);
Run Code Online (Sandbox Code Playgroud)

requiredPermissions拥有我需要的权限android.permission.WRITE_EXTERNAL_STORAGE.

该例程肯定是执行的,因为我在logcat中有Log行:

08-07 12:52:46.469: I/Permissions(1674): Requesting permissions: android.permission.RECEIVE_BOOT_COMPLETED; android.permission.WRITE_EXTERNAL_STORAGE
Run Code Online (Sandbox Code Playgroud)

但是权限对话框从不显示,更不用说调用onRequestPermissionsResult()了.

我究竟做错了什么?基于一些教程,我发现我没有遗漏任何东西.我只有用于测试的模拟器,没有物理设备.这是关于设置的屏幕: 图像

可能值得一提的是:如果我尝试从主屏幕打开已安装应用程序的概述,我只会得到launcher3 has exited.我不确定这可能是相关的.

有没有人知道它为什么没有显示?

permissions android android-6.0-marshmallow

68
推荐指数
6
解决办法
4万
查看次数

清单中的权限在Android 6中不起作用

它完全忽略了:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
Run Code Online (Sandbox Code Playgroud)

所以我得到了例外:

引起:android.view.WindowManager $ BadTokenException:无法添加窗口android.view.ViewRootImpl$W@86fb55b - 此窗口类型的权限被拒绝

它甚至没有列出:

在此输入图像描述

我该如何解决?谢谢.

编辑:

它列在配置应用程序/高级/绘制其他应用程序中.所以我打开它现在它工作正常,但为什么在我运行我的应用程序时没有任何对话框询问权限?所有的perrmissions被deafult关闭,我需要去设置并mannualy打开它?

android android-6.0-marshmallow

67
推荐指数
1
解决办法
3万
查看次数

有没有办法链接到我的应用程序的Android通知设置?

有什么方法可以启动我的应用程序的Android通知设置屏幕的意图(如下图所示)?或者一个简单的方法我可以制作一个PreferenceScreen项目,只需点击一下即可到达此处?

在此输入图像描述

android android-notifications android-6.0-marshmallow

66
推荐指数
6
解决办法
3万
查看次数

Android M Camera Intent +权限错误?

我正在尝试让我的应用程序为新的Android M权限更改做好准备,并发现了一些奇怪的行为.我的应用程序使用相机意图机制允许用户从相机获取图片.但是在另一个活动中需要使用具有Camera权限的摄像头本身(因为需要这个的库依赖card.io).

但是,当我尝试启动Camera意图时,只需要相机意图的活动中的M我看到以下崩溃(如果我从Manifest中删除了Camera权限,则不会发生这种情况),

> 09-25 21:57:55.260 774-8053/? I/ActivityManager: START u0
> {act=android.media.action.IMAGE_CAPTURE flg=0x3000003
> pkg=com.google.android.GoogleCamera
> cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity
> (has clip) (has extras)} from uid 10098 on display 0 09-25
> 21:57:55.261 774-8053/? W/ActivityManager: Permission Denial: starting
> Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3000003
> pkg=com.google.android.GoogleCamera
> cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity
> (has clip) (has extras) } from null (pid=-1, uid=10098) with revoked
> permission android.permission.CAMERA 09-25 21:57:55.263 32657-32657/?
> E/ResolverActivity: Unable to launch as uid 10098 package
> com.example.me.mycamerselectapp, while running in android:ui 09-25
> …
Run Code Online (Sandbox Code Playgroud)

android android-camera android-camera-intent android-permissions android-6.0-marshmallow

65
推荐指数
4
解决办法
5万
查看次数

用户10102和当前进程都没有android.permission.READ_PHONE_STATE

我试图调用android.telecom.TelecomManager类的getCallCapablePhoneAccounts()方法.虽然我已经添加了所需的用户权限,但我收到了安全性异常.

这是我得到例外的代码行

List<PhoneAccountHandle> list = getTelecomManager().getCallCapablePhoneAccounts();
Run Code Online (Sandbox Code Playgroud)

清单中添加的用户权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)

异常堆栈跟踪引起:java.lang.SecurityException:getDefaultOutgoingPhoneAccount:用户10102和当前进程都没有android.permission.READ_PHONE_STATE.在android.os.Parcel.readException(Parcel.java:1599)的android.os.Parcel.readException(Parcel.java:1552)com.android.internal.telecom.ITelecomService $ Stub $ Proxy.getDefaultOutgoingPhoneAccount(ITelecomService.java) :615)在android.telecom.TelecomManager.getDefaultOutgoingPhoneAccount(TelecomManager.java:439)

android android-6.0-marshmallow

63
推荐指数
3
解决办法
13万
查看次数

在Android M的运行时权限中,我们如何区分永不问及停止请求?

根据Google的说法,当谈到M Developer Preview运行时权限时:

  1. 如果您之前从未要求过某种许可,那就请求它

  2. 如果您之前询问过,并且用户说"不",然后用户尝试执行需要被拒绝权限的操作,则应该在再次请求权限之前提示用户解释您需要权限的原因

  3. 如果您之前曾多次询问,并且用户已经说"不,并且停止询问"(通过运行时权限对话框上的复选框),您应该停止打扰(例如,禁用需要权限的UI)

但是,我们只有一个方法,shouldShowRequestPermissionRationale()返回a boolean,我们有三个状态.我们需要一种方法来区分从未问过的状态和停止询问状态,就像我们falseshouldShowRequestPermissionRationale()两者中得到的那样.

对于首次运行应用程序时请求的权限,这不是一个大问题.有很多方法可以确定这可能是您的应用程序的第一次运行(例如,booleanSharedPreferences),因此您假设如果它是您的应用程序的第一次运行,那么您处于从未问过的状态.

但是,运行时权限的一部分愿景是您可能不会事先要求所有这些权限.当用户点击需要该权限的内容时,您可能仅在稍后要求的边缘功能上绑定权限.在这里,应用程序可能已运行多次,持续数月,之后我们突然需要再次请求权限.

在这些情况下,我们是否应该跟踪我们是否自己要求获得许可?或者Android M API中是否有我遗漏的东西告诉我们之前是否询问过?

android android-permissions android-6.0-marshmallow

62
推荐指数
3
解决办法
2万
查看次数

Android Marshmallow:使用Espresso测试权限?

Android Marshmallow引入的新权限方案要求在运行时检查特定权限,这意味着需要根据用户是否拒绝或允许访问来提供不同的流.

当我们使用Espresso在我们的应用程序上运行自动UI测试时,我们如何模拟或更新权限状态以测试不同的场景?

permissions android android-espresso android-6.0-marshmallow

62
推荐指数
6
解决办法
3万
查看次数

如何在Android M中检查单个请求的多个权限?

我想用

  1. android.permission.CAMERA
  2. android.permission.WRITE_EXTERNAL_STORAGE

在单个请求中使用

ActivityCompat.requestPermissions(Activity activity,new String permisionList[],int permissionRequestcode);
Run Code Online (Sandbox Code Playgroud)

但我的问题是,我只是请求一个权限,我读了关于组权限,但它只适用于由开发人员,喜欢CONTACT_GROUP : read_contact,write_contact等决定的相同组.

我想创建自定义组权限,只向我询问一个请求并仅向我提供一个响应.

谢谢

android android-6.0-marshmallow runtime-permissions

58
推荐指数
4
解决办法
9万
查看次数

从v4.Fragment请求运行时权限并将回调转到Fragment?

我有一个引起冲突的奇怪问题.我不得不切换到原Fragments生来修复它,但有一些错误.

我原来的问题:我有一个导航抽屉设置v4 Fragments.要在我的一个片段中请求许可我打电话ActivityCompat.requestPermissions(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION, 1);提示显示正常,但是当我接受或拒绝许可时,没有任何反应.onRequestPermissionsResult()永远不会调用回调.相反,它会在我的片段附加到的Activity中调用.对我来说没用,我需要回调才能在Fragment中工作.

考虑到这一点,我被告知我需要使用FragmentCompat,但这只能使用native Fragments (v13+),所以我改变了导航抽屉,使用原生Fragments而不是v4支持库Fragments.但是,因为我正在使用AppCompatActivity,所以某些东西不起作用,比如addToBackStack()回到之前的片段.

长话短说,有谁知道我怎么可以使用v4.Fragment并仍然要求获得许可Fragment并获得回调Fragment?我觉得这是Android中的一个错误,但尚未解决,但我不是100%.

让我知道如果你需要查看我的代码,它只是运行时权限所需的标准方法,我想使用v4 Fragments,虽然这不符合我的理解.

java android android-fragments android-6.0-marshmallow

57
推荐指数
5
解决办法
4万
查看次数