标签: permissions

位掩码(标志)枚举变得太大时该怎么办

我在我的应用程序中拥有一组非常大的权限,我使用Flags枚举表示.它正在快速接近长数据类型的实际上限.我不得不提出一个战略,很快就会转变为一个不同的结构.现在,我可以将此列表分解为更小的部分,但是,根据我们的应用程序布局,这已经只是我们应用程序的总体权限的一部分.在管理权限时,我们广泛使用这种区别用于显示目的,如果我可以避免,我宁愿不再重新访问该代码.

还有其他人遇到过这个问题吗?你是怎么过去的?一般的例子很好,但我最感兴趣的是ac#specific example,如果有任何语言特定的技巧可以用来完成工作.

可能不是必需的,但这里是当前为我正在处理的应用程序部分定义的权限列表.

//Subgroup WebAgent
[Flags]
public enum WebAgentPermission : long
{
    [DescriptionAttribute("View Rule Group")]
    ViewRuleGroup = 1,
    [DescriptionAttribute("Add Rule Group")]
    AddRuleGroup = 2,
    [DescriptionAttribute("Edit Rule Group")]
    EditRuleGroup = 4,
    [DescriptionAttribute("Delete Rule Group")]
    DeleteRuleGroup = 8,
    [DescriptionAttribute("View Rule")]
    ViewRule = 16,
    [DescriptionAttribute("Add Rule")]
    AddRule = 32,
    [DescriptionAttribute("Edit Rule")]
    EditRule = 64,
    [DescriptionAttribute("Delete Rule")]
    DeleteRule = 128,
    [DescriptionAttribute("View Location")]
    ViewLocation = 256,
    [DescriptionAttribute("Add Location")]
    AddLocation = 512,
    [DescriptionAttribute("Edit Location")]
    EditLocation = 1024,
    [DescriptionAttribute("Delete Location")]
    DeleteLocation = 2048,
    [DescriptionAttribute("View Volume Statistics")] …
Run Code Online (Sandbox Code Playgroud)

c# permissions enums types bitmask

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

警告您的Apk正在使用需要隐私策略的权限:(android.permission.READ_PHONE_STATE)

在清单中没有添加android.permission.READ_PHONE_STATE.允许.

当我上传新的apk版本错误时,为什么会出现错误.

您的应用有一个版本号为1的apk,它请求以下权限:android.permission.READ_PHONE_STATE.在APK中使用这些权限的应用程序需要设置隐私策略.

我附加了屏幕截图我的谷歌游戏商店帐户. 在此输入图像描述

我的清单文件.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.package.name">

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

    <application
        android:name=".utils.PreferenceManager"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".SplashScreen"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CategoryListActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name=".ImagesActivity"
            android:screenOrientation="portrait" />

    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

permissions android android-manifest android-studio google-console-developer

69
推荐指数
9
解决办法
11万
查看次数

Bash Scripting - 如何设置将使用新文件创建的组?

我正在做一个bash shell脚本,我想更改创建新文件的默认组.我知道你umask用来改变权限.这群人有什么东西吗?

unix linux permissions bash shell

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

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万
查看次数

68
推荐指数
1
解决办法
7万
查看次数

单个方法的管理员权限

是否可以为单个方法要求管理员权限?

像这样的东西:

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}
Run Code Online (Sandbox Code Playgroud)

c# permissions administrator

64
推荐指数
2
解决办法
6万
查看次数

使用没有访问令牌的Facebook Graph API获取公共页面状态

我正在尝试使用Facebook Graph API从公共页面获取最新状态,让我们说http://www.facebook.com/microsoft

根据http://developers.facebook.com/tools/explorer/?method=GET&path=microsoft%2Fstatuses - 我需要一个访问令牌.由于微软的页面是"公开的",这种情况肯定是这样吗?没有访问令牌,我无法访问这些公共状态吗?

如果是这种情况,为我的网站创建访问令牌的正确方法如何?我有一个App ID,但http://developers.facebook.com/docs/authentication/上的所有示例都描述了处理用户登录.我只想在Microsoft页面上获取最新状态更新并将其显示在我的网站上.

authentication permissions facebook facebook-graph-api

64
推荐指数
2
解决办法
4万
查看次数

了解docker中的用户文件所有权:如何避免更改链接卷的权限

考虑以下简单的Dockerfile:

FROM debian:testing
RUN  adduser --disabled-password --gecos '' docker
RUN  adduser --disabled-password --gecos '' bob 
Run Code Online (Sandbox Code Playgroud)

在一个没有别的工作目录.构建docker镜像:

docker build -t test .
Run Code Online (Sandbox Code Playgroud)

然后在容器上运行bash脚本,将工作目录链接到bob主目录中的新子目录:

docker run --rm -it -v $(pwd):/home/bob/subdir test 
Run Code Online (Sandbox Code Playgroud)

谁拥有subdir容器上的内容?在容器上,运行:

cd /home/bob/subdir
ls -l
Run Code Online (Sandbox Code Playgroud)

广告我们看到:

-rw-rw-r-- 1 docker docker 120 Oct 22 03:47 Dockerfile
Run Code Online (Sandbox Code Playgroud)

圣烟!docker拥有内容!回到容器外的主机上,我们看到我们的原始用户仍然拥有Dockerfile.让我们尝试修复bob主目录的所有权.在容器上,运行:

chown -R bob:bob /home/bob
ls -l 
Run Code Online (Sandbox Code Playgroud)

我们看到:

-rw-rw-r-- 1 bob bob 120 Oct 22 03:47 Dockerfile
Run Code Online (Sandbox Code Playgroud)

可是等等!在容器外面,我们现在运行ls -l

-rw-rw-r-- 1 1001 1001 120 Oct 21 20:47 …
Run Code Online (Sandbox Code Playgroud)

linux permissions rstudio docker

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

Android Marshmallow:使用Espresso测试权限?

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

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

permissions android android-espresso android-6.0-marshmallow

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

ActivityCompat.requestPermissions未显示对话框

if (ContextCompat.checkSelfPermission(RegisterActivity.this,      Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_DENIED){
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE_PERMISSION);
Run Code Online (Sandbox Code Playgroud)

我正试图在nexus 5 api 23上使用这个功能,它只是没有向我显示它应该做的对话框,它只是没有做任何事情.什么可能导致问题?(此代码在java活动中)我尝试将最小api更改为23并使用requestPermissions()而不使用ActivityCompat但仍无效.

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.example.idanayzen.photomap"
    minSdkVersion 23
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:design:23.1.1'
}
Run Code Online (Sandbox Code Playgroud)

和清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.idanayzen.photomap">

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />

<application …
Run Code Online (Sandbox Code Playgroud)

java permissions android

60
推荐指数
6
解决办法
8万
查看次数