标签: android-6.0-marshmallow

在Android 6.0 Marshmallow(API 23)上弃用了getColor(int id)

Resources.getColor(int id)方法已被弃用.

@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
    return getColor(id, null);
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

android android-resources android-mnc android-6.0-marshmallow

686
推荐指数
12
解决办法
27万
查看次数

如何以编程方式在Android Marshmallow上打开特定应用程序的权限屏幕?

我对新的Android Marshmallow版本有疑问:

是否可以通过Intent或类似方式显示特定应用程序的权限屏幕?

Android M权限屏幕

可以使用以下代码显示应用程序设置 - 是否有直接打开权限屏幕的模拟解决方案?

startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", getPackageName(), null)));
Run Code Online (Sandbox Code Playgroud)

我已经对此做过一些研究,但我无法找到合适的解决方案 - 我将非常感谢您的帮助!

android android-permissions android-6.0-marshmallow

306
推荐指数
11
解决办法
13万
查看次数

Android M - 检查运行时权限 - 如何确定用户是否选中"从不再问"?

根据这个:http://developer.android.com/preview/features/runtime-permissions.html#coding应用程序可以检查运行时权限和请求权限(如果尚未授予它).然后将显示以下对话框:

在此输入图像描述

如果用户拒绝重要权限,则应用程序应显示解释为何需要权限以及拒绝具有何种影响的解释.该对话框有两个选项:

  1. 再试一次(再次请求许可)
  2. 拒绝(app将在没有该权限的情况下工作).

Never ask again但是,如果用户检查,则不应显示带有解释的第二个对话框,尤其是如果用户之前已经拒绝过一次.现在的问题是:我的应用程序如何知道用户是否已检查过Never ask again?IMO onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)并没有给我这些信息.

第二个问题是:Google是否计划在权限对话框中添加自定义消息,以解释应用程序需要权限的原因?那样就永远不会有第二个对话框,肯定会有更好的ux.

android android-permissions android-6.0-marshmallow

288
推荐指数
10
解决办法
15万
查看次数

Android应用在卸载并重新安装后会记住其数据

在开发针对4.1以上版本的Android应用时,我发现卸载我的应用并再次安装它并不会清除其数据.

该应用程序旨在存储它在第一个屏幕中询问的详细信息.在OS 4.4.4版中再次卸载并安装后,应用程序会提示用户填写数据,这是正常的.但是在6.0版中,相同的安装/卸载顺序会带回最初输入的数据.

我试图通过访问来确保/data/data/my package folder卸载后数据库已经消失,并且在卸载期间该文件夹确实被删除了.

我尝试通过访问设置页面,通过Titanium Backup删除应用程序,结果相同.该设备植根于运行v6.0的Nexus 5.

这种奇怪行为的原因是什么?

android android-6.0-marshmallow

171
推荐指数
9
解决办法
6万
查看次数

Android marshmallow请求权限?

我目前正在开发一个需要几个"危险"权限的应用程序.因此,我尝试在Android Marshmallow(API级别23)中添加"请求许可",但无法找到如何执行此操作.

如何在我的应用中使用新的权限模型请求权限?

android android-permissions android-6.0-marshmallow

151
推荐指数
8
解决办法
24万
查看次数

Marshmallow中的存储权限错误

在Lollipop中,下载功能在我的应用程序中运行良好,但是当我升级到Marshmallow时,我的应用程序崩溃并在我尝试从互联网下载到SD卡时出现此错误:

Neither user  nor current process has android.permission.WRITE_EXTERNAL_STORAGE
Run Code Online (Sandbox Code Playgroud)

它抱怨这行代码:

DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

我在应用程序外的清单中拥有权限:

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

我清理并重建了项目,但它仍然崩溃.

permissions android android-6.0-marshmallow

147
推荐指数
5
解决办法
23万
查看次数

Android 6.0多重权限

我知道Android 6.0有新的权限,我知道我可以用这样的东西来调用它们

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
    PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,
        new String[] { 
            Manifest.permission.WRITE_EXTERNAL_STORAGE
        }, PERMISSION_WRITE_STORAGE);
}
Run Code Online (Sandbox Code Playgroud)

今天我看到了一个需要3个权限的Google应用:联系人,短信和相机.它正在制作第1-3页并同时将它们全部调用以激活.

任何人都可以告诉我如何调用4个权限同时激活短信,相机,联系人和存储?

示例(忘记了谷歌应用程序的名称:()
该应用程序需要短信,联系人和相机

应用程序问我(并进行了对话框1-3)激活短信,激活联系人,然后是相机.所以这个谷歌应用程序一起调用所有3个必需的权限,我的问题是我怎么能得到相同的?

java permissions android android-permissions android-6.0-marshmallow

147
推荐指数
10
解决办法
14万
查看次数

Android M Permissions:对shouldShowRequestPermissionRationale()函数的使用感到困惑

我正在阅读关于Android M中新Permissions模型的官方文档.它讨论了如果应用程序先前已请求此权限并且用户拒绝该请求shouldShowRequestPermissionRationale(),则返回的函数true.如果用户过去拒绝了权限请求并选择了"不再询问"选项,则此方法返回false.

但是我们如何区分以下两种情况呢?

案例1:该应用程序没有权限,之前未向用户询问过该权限.在这种情况下,shouldShowRequestPermissionRationale()将返回false,因为这是我们第一次询问用户.

情况2:用户已拒绝该权限并选择"不再询问",在这种情况下,shouldInShowRequestPermissionRationale()也将返回false.

我想将用户发送到案例2中的应用程序设置页面.我如何区分这两种情况?

permissions android android-6.0-marshmallow

137
推荐指数
5
解决办法
6万
查看次数

如果片段和活动中都定义了onRequestPermissionsResult,则不会在片段中调用它

我有一个片段,我在其中使用recyclerview适配器在recyclerview中使用recyclerview和设置数据.

现在,我在适配器的列表项中点击了一个按钮,我需要在android中检查android中的新权限模型的READ_EXTERNAL_STORAGE权限.

我已在此适配器的片段中创建了一个新函数,以检查是否授予了权限,如果尚未授予权限,则请求权限.

我已经通过MyFragment.this作为适配器中的参数,并在按钮单击适配器中调用片段的方法.

我使用下面的代码在片段中调用requestPermission.

if(ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED)){
       requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                ConstantVariables.READ_EXTERNAL_STORAGE);
    }
Run Code Online (Sandbox Code Playgroud)

onRequestPermissionsResult使用下面的代码覆盖了片段中的方法:

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case ConstantVariables.READ_EXTERNAL_STORAGE:
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, proceed to the normal flow.
                startImageUploading();
            } else {}
Run Code Online (Sandbox Code Playgroud)

但它没有被调用,而是调用了这个Activity的onRequestPermissionsResult方法.

我已经在片段的父活动中定义了相同的onRequestPermissionsResult方法,并且它被调用.

我无法删除活动的onRequestPermissionsResult方法,但是当我请求片段的权限时,我想调用片段的onRequestPermissionsResult方法.我怎样才能做到这一点?我在这里做错了什么,如果有人在这里有想法,请帮助我.

android android-6.0-marshmallow

132
推荐指数
7
解决办法
5万
查看次数

不推荐使用ConnectivityManager getNetworkInfo(int)

使用compileSdkVersion 23,但是尝试支持9到9.

getNetworkInfo(int)在23中已弃用.建议改为使用getAllNetworks和getNetworkInfo(Network).然而,这两者都需要最少的API 21.

我们可以在支持包中使用哪个类可以帮助解决这个问题吗?

我知道之前提出了一个解决方案,但是我对9的最小api要求的挑战造成了问题.

networking android android-6.0-marshmallow android-connectivitymanager

122
推荐指数
9
解决办法
7万
查看次数