标签: android-permissions

Android Permissions:他们在哪里描述?

在每个应用程序的Google Play网页上都有一个权限部分.几乎所有这些应用程序都使用一些标准术语来描述他们的权限,例如" READ PHONE STATUS AND IDENTITY"," SEND SMS"," FULL INTERNET ACCESS"等.但是在Android Developer的页面上,权限被列为常量及其描述,但不是Google Play网页上的标准术语.申请.

例如,有一个String Internet描述,Allows applications to open network sockets但没有FULL INTERNET ACCESS通常用于本说明的许可.

是否有一些链接提供了权限常量到这些标准权限表示法的映射?

android android-permissions

2
推荐指数
1
解决办法
1573
查看次数

检索运行中的应用程序权限

我正在尝试将Flurry集成到我的应用程序中。安装时,我的应用程序要求的权限之一是“检索正在运行的应用程序权限”。据我了解,这是访问设备上其他应用程序的权限。我对此有两个问题:

  1. 我的应用程序正在使用设备的位置服务,是否需要此权限?

  2. 如果不是第一个,那么Flurry是否有可能需要此许可?

也是这种许可通常会引起关注和怀疑吗?

android flurry android-permissions

2
推荐指数
1
解决办法
7481
查看次数

即使在获得平台签名后也无法读取系统文件

我已经构建了一个自定义的Android ROM.我已经使用平台签名签署了我的应用程序,并已添加android:sharedUserId="android.uid.system"到清单文件中.我的应用程序被授予所有"签名"和"系统"级别权限,但未授予对系统文件的访问权限.

    Log.w("PC", String.valueOf(checkCallingOrSelfPermission("android.permission.ACCESS_SURFACE_FLINGER")== PackageManager.PERMISSION_GRANTED)); // true
    Log.w("PC", String.valueOf(checkCallingOrSelfPermission("android.permission.READ_FRAME_BUFFER")== PackageManager.PERMISSION_GRANTED));      // true
    Log.w("PC", String.valueOf(checkCallingOrSelfPermission("android.permission.INJECT_EVENTS")== PackageManager.PERMISSION_GRANTED));          // true

    Log.w("PC", String.valueOf(new File("/dev/graphics/fb0").canRead()));                      // false
    Log.w("PC", String.valueOf(new File("/data/misc/wifi/wpa_supplicant.conf").canRead()));   // false
Run Code Online (Sandbox Code Playgroud)

文件的权限是:

ls -l /dev/graphics/fb0
crw-rw---- root     graphics  29,   0 2014-02-12 09:43 fb0

ls -l /data/misc/wifi/wpa_supplicant.conf
-rwxrwx--- wifi     wifi          282 2014-02-11 19:04 wpa_supplicant.conf
Run Code Online (Sandbox Code Playgroud)

有没有办法获得这些文件的访问权限?

android android-permissions

2
推荐指数
1
解决办法
2704
查看次数

我可以删除此权限吗?(它导致Android 5.0设备中的INSTALL_FAILED_DUPLICATE_PERMISSION)

我的测试人员表示他无法将Play应用程序中的应用安装到他的Nexus 5(Lollipop).他说他得到了这个错误

Unknown error code during application install “-505”
Run Code Online (Sandbox Code Playgroud)

我拿起手机试着通过adb安装应用程序,我收到了这个错误

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION 
        perm=com.example.gcm.permission.C2D_MESSAGE 
        pkg=com.mailchimp.alterego]
Run Code Online (Sandbox Code Playgroud)

经过一番阅读,我从@Commonsware看到了这篇文章

http://commonsware.com/blog/2014/08/04/custom-permission-vulnerability-l-developer-preview.html

很明显,我的应用程序和Mailchimp应用程序(安装在我的测试人员手机上)都有重复的权限,com.example.gcm.permission.C2D_MESSAGE.然后我检查我的git日志,看看我什么时候将该行添加到我的AndroidManifest,发现它是在我实现GCM的时候.那时,我遵循了本教程

https://developer.android.com/google/gcm/client.html

在此输入图像描述

我想,我和Mailchimp开发人员都遵循相同的教程,添加了相同的权限,现在我们的应用程序都有重复的权限.

所以,我从AndroidManifest中删除了该权限,现在我可以在我的测试人员的手机上安装我的应用程序了.我通过从我的PHP脚本发送到包到GCM服务器的测试GCM消息,应用程序仍然得到GCM消息.

那么,是否会因为缺少许可而提出其他问题,无论如何获得该许可的重点是什么?(因为没有它,我的应用程序仍然收到GCM消息)

我担心的是,如果我们的应用程序使用的是需要权限的插件/库.如果有另一个安装的应用程序使用相同的库,我们将无法在Lollipop设备上安装我们的应用程序,不是吗?

- 注意 -

我已经读过这个问题了,很少有人对我所做的事情提出同样的建议,取消许可.但没有人谈论我们做之后会发生什么,或者为什么我们必须添加它.

INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE

- 编辑1 -

我回到教程,教程是对的,这是我错误的实现

在此输入图像描述

我(和Mailchimp开发人员)应该使用我们的应用程序包+ .permission.C2D_MESSAGE的名称添加权限,而不是仅复制并粘贴com.example.gcm.permission.C2D_MESSAGE

<permission android:name="com.mycompany.myappname.permission.C2D_MESSAGE" 
            android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)

但是,这给我提出了另一个问题,教程说,如果我们不添加此权限或名称与模式不匹配,应用程序将无法获取消息.但是当我测试时,即使我删除时,我收到了消息这个漏洞......很奇怪.

android google-cloud-messaging android-permissions android-5.0-lollipop

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

为什么ActivityCompat.requestPermissions()只接受0-255之间的整数请求代码?

我最近将应用程序更新为23的targetSdkVersion,并实现了对各种权限的请求.我最初尝试使用ActivityCompat.requestPermissions()导致从FragmentActivity的内部抛出IllegalArgumentException:

int REQUEST_CODE_A = 9001;
ActivityCompat.requestPermissions(new String[ {Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_A); // crashes
Run Code Online (Sandbox Code Playgroud)

java.lang.IllegalArgumentException:对于requestCode只能使用低8位

但是,如果请求代码在0到255之间,则一切正常,并且权限请求按预期工作.

int REQUEST_CODE_B = 101;
ActivityCompat.requestPermissions(new String[ {Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_B); // works correctly
Run Code Online (Sandbox Code Playgroud)

所以问题是,在这样的API中限制整数的可能值的原因是什么?可以使用一个字节提供相同的信息,但是(显然)有意识地决定使用整数.这只是一个允许未来可扩展性的案例吗?

java android android-permissions android-support-library

2
推荐指数
1
解决办法
2272
查看次数

无法在checkSelfPermission方法中解析符号'CAMERA'

I need to ask for runtime permission to use camera in my fragment class.my code is like this..


int currentapiVersion = android.os.Build.VERSION.SDK_INT;

if (currentapiVersion >= Build.VERSION_CODES.M) {

                if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {

                    requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, REQUEST_CODE_ASK_PERMISSIONS);........
Run Code Online (Sandbox Code Playgroud)

但是,它显示 - 无法解析符号'CAMERA'

android android-camera android-permissions android-6.0-marshmallow runtime-permissions

2
推荐指数
1
解决办法
5789
查看次数

调试模式下的自动授予运行时权限

如果我处于调试模式,有没有办法自动授予运行时权限?

因为如果我清除数据,我必须再次授予所有权限.它在调试中很无聊.

谢谢.

android android-permissions android-debug runtime-permissions

2
推荐指数
1
解决办法
1371
查看次数

请求运行时权限时检查Android版本

我最近更新了Android应用的代码,以请求Android 6.0+的权限.但是,我现在面临着如何检查权限的困境.

我看到人们在检查权限之前在线查看操作系统版本,因为23之前的版本,由于在安装时授予权限,因此无需检查权限.

现在我的支票看起来像这样,

if(checkPermissions()){
    doThings();
} else {
    requestPermissions();
}
Run Code Online (Sandbox Code Playgroud)

但是我应该努力添加这个吗?

if (Build.VERSION.SDK_INT >= 23) {
    if(checkPermissions()){
        doThings();
    } else {
        requestPermissions();
    }
} else {
    doThings();
}
Run Code Online (Sandbox Code Playgroud)

从我的理解中我没有看到将后者添加到代码中的重点,旧版本的android可能会遇到第一个示例代码就好了.

这一切让我想问,在这种情况下检查Android版本有什么好处?

android android-permissions runtime-permissions

2
推荐指数
1
解决办法
2487
查看次数

我是否需要在Android 4.1及更早版本上明确声明WRITE_EXTERNAL_STORAGE权限?

关于WRITE_EXTERNAL_STORAGE,Android文档说明了这一点

从API级别19开始,读取/写入getExternalFilesDir(String)和getExternalCacheDir()返回的特定于应用程序的目录中的文件不需要此权限.

我的应用程序只读取和写入Android/data //文件目录.这是否意味着,为了在我的应用程序在早于19的Android版本上运行时读取和写入此特定目录,我仍然需要在清单中声明此权限?

android android-version android-permissions android-storage

2
推荐指数
1
解决办法
331
查看次数

无法以编程方式从小米手机中读取消息

EasyPermission习惯于permissions从用户那里获取。

@AfterPermissionGranted(PERMISSIONS_REQUEST_READ_SMS)
private void readSMS() {
    String[] perms = {Manifest.permission.READ_SMS};
    if (EasyPermissions.hasPermissions(this, Manifest.permission.READ_SMS)) {
        initSMS();
    } else {
        // Do not have permissions, request them now
        EasyPermissions.requestPermissions(this, getString(R.string.send_sms_rationale),
                PERMISSIONS_REQUEST_READ_SMS, Manifest.permission.READ_SMS);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的initSMS() 我曾试图从Android设备阅读的邮件。它适用于除设备之外的所有Xiaomi设备。我使用TelephonyProvider课堂阅读消息。

private void initSMS() {
    TelephonyProvider provider = new TelephonyProvider(this);
    List<Sms> sms = provider.getSms(TelephonyProvider.Filter.INBOX).getList();
    for(int i = 0; i <= sms.size() - 1; i++) {
        Log.d("Address",sms.get(i).address);
        Log.d("Sms",sms.get(i).body);
        Log.d("ReceivedDate",""+sms.get(i).receivedDate));
        Log.d("State",""+sms.get(i).status);
        Log.d("person",""+sms.get(i).person);
    }
}
Run Code Online (Sandbox Code Playgroud)

他们有什么办法读取Xiaomi设备中的所有消息吗?

sms android telephonymanager android-permissions xiaomi

2
推荐指数
1
解决办法
782
查看次数