该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
我对新的Android Marshmallow版本有疑问:
是否可以通过Intent或类似方式显示特定应用程序的权限屏幕?
可以使用以下代码显示应用程序设置 - 是否有直接打开权限屏幕的模拟解决方案?
startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", getPackageName(), null)));
Run Code Online (Sandbox Code Playgroud)
我已经对此做过一些研究,但我无法找到合适的解决方案 - 我将非常感谢您的帮助!
根据这个:http://developer.android.com/preview/features/runtime-permissions.html#coding应用程序可以检查运行时权限和请求权限(如果尚未授予它).然后将显示以下对话框:
如果用户拒绝重要权限,则应用程序应显示解释为何需要权限以及拒绝具有何种影响的解释.该对话框有两个选项:
Never ask again
但是,如果用户检查,则不应显示带有解释的第二个对话框,尤其是如果用户之前已经拒绝过一次.现在的问题是:我的应用程序如何知道用户是否已检查过Never ask again
?IMO onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
并没有给我这些信息.
第二个问题是:Google是否计划在权限对话框中添加自定义消息,以解释应用程序需要权限的原因?那样就永远不会有第二个对话框,肯定会有更好的ux.
在开发针对4.1以上版本的Android应用时,我发现卸载我的应用并再次安装它并不会清除其数据.
该应用程序旨在存储它在第一个屏幕中询问的详细信息.在OS 4.4.4版中再次卸载并安装后,应用程序会提示用户填写数据,这是正常的.但是在6.0版中,相同的安装/卸载顺序会带回最初输入的数据.
我试图通过访问来确保/data/data/my package folder
卸载后数据库已经消失,并且在卸载期间该文件夹确实被删除了.
我尝试通过访问设置页面,通过Titanium Backup删除应用程序,结果相同.该设备植根于运行v6.0的Nexus 5.
这种奇怪行为的原因是什么?
我目前正在开发一个需要几个"危险"权限的应用程序.因此,我尝试在Android Marshmallow(API级别23)中添加"请求许可",但无法找到如何执行此操作.
如何在我的应用中使用新的权限模型请求权限?
在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)
我清理并重建了项目,但它仍然崩溃.
我知道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
我正在阅读关于Android M中新Permissions模型的官方文档.它讨论了如果应用程序先前已请求此权限并且用户拒绝该请求shouldShowRequestPermissionRationale()
,则返回的函数true
.如果用户过去拒绝了权限请求并选择了"不再询问"选项,则此方法返回false
.
但是我们如何区分以下两种情况呢?
案例1:该应用程序没有权限,之前未向用户询问过该权限.在这种情况下,shouldShowRequestPermissionRationale()将返回false,因为这是我们第一次询问用户.
情况2:用户已拒绝该权限并选择"不再询问",在这种情况下,shouldInShowRequestPermissionRationale()也将返回false.
我想将用户发送到案例2中的应用程序设置页面.我如何区分这两种情况?
我有一个片段,我在其中使用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方法.我怎样才能做到这一点?我在这里做错了什么,如果有人在这里有想法,请帮助我.
使用compileSdkVersion 23,但是尝试支持9到9.
getNetworkInfo(int)在23中已弃用.建议改为使用getAllNetworks和getNetworkInfo(Network).然而,这两者都需要最少的API 21.
我们可以在支持包中使用哪个类可以帮助解决这个问题吗?
我知道之前提出了一个解决方案,但是我对9的最小api要求的挑战造成了问题.
networking android android-6.0-marshmallow android-connectivitymanager
android ×10
permissions ×3
android-connectivitymanager ×1
android-mnc ×1
java ×1
networking ×1