GVKun编程网logo

android – 利用checkCallingOrSelfPermission()进行权限提升攻击(android权限检查)

27

本文将分享android–利用checkCallingOrSelfPermission()进行权限提升攻击的详细内容,并且还将对android权限检查进行详尽解释,此外,我们还将为大家带来关于Andr

本文将分享android – 利用checkCallingOrSelfPermission()进行权限提升攻击的详细内容,并且还将对android权限检查进行详尽解释,此外,我们还将为大家带来关于Android added new permission model for Android 6.0 (Marshmallow).、Android M权限:checkSelfPermission()始终返回-1、Android permission 访问权限列表、Android permission 访问权限大全的相关知识,希望对你有所帮助。

本文目录一览:

android – 利用checkCallingOrSelfPermission()进行权限提升攻击(android权限检查)

android – 利用checkCallingOrSelfPermission()进行权限提升攻击(android权限检查)

我在Context类中经历了checkCallingOrSelfPermission(),并想知道它是如何被利用的;即,如果某个应用程序触发了被调用者/您的应用程序的方法,该方法又调用checkCallingOrSelfPermission(),最后将该权限授予其他应用程序,或者发布否则需要该权限的敏感信息.

这是我通过Java Doc后所理解的:

此方法只能由处于被调用者应用程序的同一进程中的任何调用应用程序利用.要进入相同的过程,除了同样的证书签名之外,应用程序还需要在清单文件中具有相同的shareuserid和进程.

因此调用应用程序需要执行以下操作.

>必须知道callee应用程序正在运行的进程和共享用户标识. (我不确定这有多可行?)
>必须使用与被调用者应用程序签署的相同证书进行签名(不太可能假设证书保持安全).

这是checkCallingOrSelfPermission()文档警告的利用方法,还是其他(更现实的)方法可以被利用.

我也查了this post,但答案并不理想.

解决方法

在正常情况下Binder.callingPid()== Process.myPid()成立.当处理IPC请求时,系统会修改Binder存储的调用PID值,它会将其分配给调用者应用程序的PID.但是,此更改仅影响执行remotelly调用方法的线程,在其他线程中,相等性仍然存在.因此,如果在这样一个未受影响的线程中调用checkCallingOrSelfPermission(),它将返回PERMISSION_GRANTED(假设服务应用程序持有该权限)并且可能发生泄漏(或其他圣经后果).

或者,如果在checkCallingOrSelfPermission()之前调用clearCallingIdentity(),则会出现同样的问题,尽管我认为它不太可能发生.

在Nexus 6P,Android 6.0.1(MHC19I)上测试.

Android added new permission model for Android 6.0 (Marshmallow).

Android added new permission model for Android 6.0 (Marshmallow).


http://www.captechconsulting.com/blogs/runtime-permissions-best-practices-and-how-to-gracefully-handle-permission-removal


What Are Runtime Permissions?

With Android 6.0 Marshmallow, Google introduced a new permission model that allows users to better understand why an application may be requesting specific permissions. Rather than the user blindly accepting all permissions at install time, the user is now prompted to accept permissions as they become necessary during application use. As you probably already know, such a change requires efforts on the part of the application developer, but what happens if you do not implement this new model? Will your application still run? What changes do you have to make to be sure your application will run smoothly on all the versions you support?

This blog will step you through a sample application that demonstrates implementing the new permissions model all while answering commonly asked questions about the new model and how it affects your application.

When to Implement the New Model

The Good

The big question for many is: will my existing applications still work on Marshmallow devices? The good news is the new model has backwards compatibility- i.e. it doesn’t require full support until you choose to target version 23 in your application. If you are targeting version 22 or below, your application will request all permissions at install time just as it would on any device running an OS below Marshmallow.

The Bad

Just because we can fall back on the old model, it does not mean that we can just avoid the new model by never targeting Marshmallow. A user with a Marshmallow device will now have the ability to revoke dangerous permissions via the application settings (we will get into what a dangerous permission is later). This means that even though the user accepted all your permissions at install time, they can later decide to take some of those permissions away from you.

The Ugly

If you have chosen not to implement the new permissions model, the revocation of permissions can cause unwanted user experiences and in some cases application crashes. The OS attempts to handle these scenarios as gracefully as possibly but developers should not rely on the OS to handle this scenario perfectly. In my experience, most permission revocations will not cause an application crash, but will absolutely degrade user experience. However, the side-effects of permission revocation are specific to an application’s implementation and I highly suggest at the very least running your application on a Marshmallow emulator and testing your application with permission revocation.

How To Implement – Best Practices

Backwards Compatibility

When implementing the new permissions model it is important to do so in such a way that your application supports Marshmallow and pre-Marshmallow devices. For example, devices running a pre-Marshmallow OS do not support asking for permissions at runtime, thus we need to be smart about when we do make these requests. In the example application, I use the method below to determine if the user’s device is a Marshmallow device or not. If the device they are using is not a Marshmallow device, we know the permissions are granted at install time and we do not need to ask to use the feature.

private boolean canMakeSmores(){

     return(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1);

}

Dangerous vs. Non-Dangerous Permissions

Just like the old permission model, the new permission model requires all permissions to be included in the applications manifest. This is required regardless of what OS you are targeting or running. If you forget to register the permission in your applications manifest, the application will not be able to ask for the runtime permission later.



Android defines some permissions as “dangerous” and some permissions as “normal.” Both are required in your application’s manifest but only dangerous permissions require a runtime request. Normal permissions are accepted at install time and cannot be revoked later. An example of a normal permission is android.permission.INTERNET. Dangerous permissions are grouped into categories that make it easier for the user to understand what they are allowing the application to do. If the user accepts one permission in a group/category they accept the entire group. The opposite is true as well, if the user denies one permission in a group, the entire group in denied. The example application demonstrates this with both FINE_LOCATION and COARSE_LOCATION of the group LOCATION. You will notice that once the user has granted permission for one, the application is automatically granted permission for the other without the need to ask. The table below lists all the current dangerous permissions and their respective groups.

How to Ask

To simplify requests for features that may need more than one dangerous permission, you may ask for multiple permissions at a given time. Below you will find a code snippet from the attached example application where I am requesting access to both the CAMERA and RECORD_AUDIO permissions. Such a request might be necessary if you are creating a custom movie recorder, for example. In some cases you might use this when prompting the user with a "warm welcome" where you ask for some permissions at app launch that support the basic functionalities of the application.  

String[] perms = { "android.permission.RECORD_AUDIO""android.permission.CAMERA"};

int permsRequestCode = 200; 

requestPermissions(perms, permsRequestCode);

The method requestPermissions(String[] permissions, int requestCode); is a public method found inside of the Android Activity class. Note that in this scenario above both the audio and camera permissions are of different groups and will prompt the user with two different permission dialogs to accept or decline. This means that the user can choose to accept one but not the other. If these two permissions were of the same group, the user would only see one permission prompt. You will receive the results of your request in the method onRequestPermissionResult as shown below.

@Override

public void onRequestPermissionsResult( int permsRequestCode, String[] permissions,  int[] grantResults){

     switch(permsRequestCode){

         case 200:

             boolean audioAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED;

             boolean cameraAccepted = grantResults[1]==PackageManager.PERMISSION_GRANTED;

             break;

    }

}

After receiving the results, you will need to handle them appropriately. In the case of the request above, the feature about to be used needs both the camera and audio permissions. If the user denied either of the permissions, the feature will be unusable and an appropriate message should be displayed.

Don’t Be Annoying

Once you have made a permission request to the user, you should not do so again unless the user requests you to do so.  In the attached application I use the below method to determine if a specific permission has already been granted.

private boolean hasPermission(String permission){

     if(canMakeSmores()){

         return(checkSelfPermission(permission)==PackageManager.PERMISSION_GRANTED);

    }

     return true;

}

You should use the above method each time your application is about enter a feature that requires the use of a dangerous permission. Even if the permission has been previously granted it is necessary to check again to be sure that the user did not later revoke that permission. The above method leverages the method checkSelfPermission(String perm). This method is located in the Activity class and is used to return an integer value of PERMISSION_GRANTED or PERMISSION_DENIED.

In the event that you have already requested permission to access a specific feature and the permission was either denied or later revoked, you should not prompt the user again. Rather, you should notify the user in some way that you need access to a specific permission in order to continue. In the example application, I use a snackbar to let the user know that the permission was previously denied and should be granted to move forward. From the snackbar, I allow the user to request to be asked again. Remember to try and keep permission prompts to a minimum. If you do choose to allow the user to be prompted more than once, the second time you prompt the user for that same permission they should have the ability to choose not to be asked again in the future.  If the user chooses to not be asked again, the application will not have the ability to ask the user for that permission again. 

Unfortunately, there is nothing out of the box with the new permissions model that stores whether you have previously asked the user for permission or not. You will need to do so on your own by leveraging the SharedPreferences. In the attached example application, I use the methods below to check whether I have previously prompted the user for a permission or not and to record when I do so.

 

private boolean shouldWeAsk(String permission){

     return (sharedPreferences.getBoolean(permission,  true));

}



private void markAsAsked(String permission){

    sharedPreferences.edit().putBoolean(permission,  false).apply;

}

Don’t Double Check

At times, just like the example we have been working with, multiple permissions are needed in order to access one feature. In the example of a movie recorder, both the camera and audio permissions are necessary. However, if the user has previously accepted either the camera or the audio permission, we should only prompt the user for the remaining permission. In the attached example application I use the below method to filter out the permissions already requested in the past to be sure we do not ask the user about a permission they have previously been prompted for. This does not mean that the permission was granted but rather that the permission was previously requested. Again, determining how many times to prompt a user for a permission they have previously denied is specific to your application but it is never necessary to prompt the user for a permission you already have access to.

private ArrayList findUnAskedPermissions(ArrayList wanted){

    ArrayList result =  new ArrayList<~>();

     for(String perm : wanted){

         if(!hasPermission(perm) && shouldWeAsk(perm)){

            result.add(perm);

        }

    }

     return result;

}

Suggested Permissions Flow

The below diagram visually represents the implementation described above and in the attached example application. Note that this is a suggestion based on the Google guideline to keep repeated permission prompts minimal but your implementation may require a slightly different approach.

Closing

The new permissions model is definitely a step in the right direction for both the user and the developer. Users will soon have a better understanding of exactly why you need access to their contacts, which means less Play Store complaints and hopefully a higher download rate. The example application referred to in this blog can be found here. I give you permission to download and use the code!



Android M权限:checkSelfPermission()始终返回-1

Android M权限:checkSelfPermission()始终返回-1

在我的应用程序中,我有一个需要几个权限的后台服务.
由于M OS要求开发人员确保这些权限已在运行时获得批准,因此我尝试使用以下代码检查权限.

getApplicationContext().checkSelfPermission()

对于允许/拒绝,我没有表现出任何恶意.相反,我在“应用程序信息”页面中允许了这些权限(在设置>应用程序>应用程序管理器>我的后台服务中)
但是,尽管我已在“应用程序信息”页面中启用了这些权限,
上面的函数总是返回-1.

如果在应用程序信息页面上更改了权限批准,如何正确检查权限?

解决方法:

 public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99;

public boolean checkLocationPermission() {
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_FINE_LOCATION)) {

            // Show an expanation to the user *asynchronously* -- don't block
            // this thread waiting for the user's response! After the user
            // sees the explanation, try again to request the permission.

            //Prompt the user once explanation has been shown
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSIONS_REQUEST_LOCATION);


        } else {
            // No explanation needed, we can request the permission.
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSIONS_REQUEST_LOCATION);
        }
        return false;
    } else {
        return true;
    }
}

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

                // permission was granted, yay! Do the
                // contacts-related task you need to do.
                buildGoogleapiclient();
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    // Todo: Consider calling
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.
                    return;
                }
                mGoogleMap.setMyLocationEnabled(true);

            } else {

                // permission denied, boo! disable the
                // functionality that depends on this permission.
                Toast.makeText(this, "permission denied", Toast.LENGTH_LONG).show();
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

你应该做这样的事情.

Android permission 访问权限列表

Android permission 访问权限列表

在 androidmanifest.xml 中声明相关权限请求,完整列表如下:


android.permission.ACCESS_CHECKIN_PROPERTIES

允许读写访问”properties” 表在 checkin 数据库中,改值可以修改上传 (Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)


android.permission.ACCESS_COARSE_LOCATION

允许一个程序访问 CellID 或 WiFi 热点来获取粗略的位置 (Allows an application to access coarse (e.g., Cell-ID, WiFi) location)


android.permission.ACCESS_FINE_LOCATION

允许一个程序访问精良位置 (如 GPS) (Allows an application to access fine (e.g., GPS) location)


android.permission.ACCESS_LOCATION_EXTRA_COMMANDS

允许应用程序访问额外的位置提供命令 (Allows an application to access extra location provider commands)


android.permission.ACCESS_MOCK_LOCATION

允许程序创建模拟位置提供用于测试 (Allows an application to create mock location providers for testing)


android.permission.ACCESS_NETWORK_STATE

允许程序访问有关 GSM 网络信息 (Allows applications to access information about networks)


android.permission.ACCESS_SURFACE_FLINGER

允许程序使用 SurfaceFlinger 底层特性 (Allows an application to use SurfaceFlinger’s low level features)


android.permission.ACCESS_WIFI_STATE

允许程序访问 Wi-Fi 网络状态信息 (Allows applications to access information about Wi-Fi networks)


android.permission.ADD_SYSTEM_SERVICE

允许程序发布系统级服务 (Allows an application to publish system-level services).


android.permission.BATTERY_STATS

允许程序更新手机电池统计信息 (Allows an application to update the collected battery statistics)


android.permission.BLUETOOTH

允许程序连接到已配对的蓝牙设备 (Allows applications to connect to paired bluetooth devices)


android.permission.BLUETOOTH_ADMIN

允许程序发现和配对蓝牙设备 (Allows applications to discover and pair bluetooth devices)


android.permission.BRICK

请求能够禁用设备 (非常危险)(Required to be able to disable the device (very *erous!).)


android.permission.BROADCAST_PACKAGE_REMOVED

允许程序广播一个提示消息在一个应用程序包已经移除后 (Allows an application to broadcast a notification that an application package has been removed)


android.permission.BROADCAST_STICKY

允许一个程序广播常用 intents (Allows an application to broadcast sticky intents)


android.permission.CALL_PHONE

允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认 (Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)


android.permission.CALL_PRIVILEGED

允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认 (Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)


android.permission.CAMERA

请求访问使用照相设备 (Required to be able to access the camera device.)


android.permission.CHANGE_COMPONENT_ENABLED_STATE

允许一个程序是否改变一个组件或其他的启用或禁用 (Allows an application to change whether an application component (other than its own) is enabled or not. )


android.permission.CHANGE_CONFIGURATION

允许一个程序修改当前设置,如本地化 (Allows an application to modify the current configuration, such as locale.)


android.permission.CHANGE_NETWORK_STATE

允许程序改变网络连接状态 (Allows applications to change network connectivity state)


android.permission.CHANGE_WIFI_STATE

允许程序改变 Wi-Fi 连接状态 (Allows applications to change Wi-Fi connectivity state)


android.permission.CLEAR_APP_CACHE

允许一个程序清楚缓存从所有安装的程序在设备中 (Allows an application to clear the caches of all installed applications on the device.)


android.permission.CLEAR_APP_USER_DATA

允许一个程序清除用户设置 (Allows an application to clear user data)


android.permission.CONTROL_LOCATION_UPDATES

允许启用禁止位置更新提示从无线模块 (Allows enabling/disabling location update notifications from the radio.)


android.permission.DELETE_CACHE_FILES

允许程序删除缓存文件 (Allows an application to delete cache files)


android.permission.DELETE_PACKAGES

允许一个程序删除包 (Allows an application to delete packages)


android.permission.DEVICE_POWER

允许访问底层电源管理 (Allows low-level access to power management)


android.permission.DIAGNOSTIC

允许程序 RW 诊断资源 (Allows applications to RW to diagnostic resources.)


android.permission.DISABLE_KEYGUARD

允许程序禁用键盘锁 (Allows applications to disable the keyguard)


android.permission.DUMP

允许程序返回状态抓取信息从系统服务 (Allows an application to retrieve state dump information from system services.)


android.permission.EXPAND_STATUS_BAR

允许一个程序扩展收缩在状态栏,android 开发网提示应该是一个类似 Windows Mobile 中的托盘程序 (Allows an application to expand or collapse the status bar.)


android.permission.FACTORY_TEST

作为一个工厂测试程序,运行在 root 用户 (Run as a manufacturer test application, running as the root user.)


android.permission.FLASHLIGHT

访问闪光灯,android 开发网提示 HTC Dream 不包含闪光灯 (Allows access to the flashlight)


android.permission.FORCE_BACK

允许程序强行一个后退操作是否在顶层 activities (Allows an application to force a BACK operation on whatever is the top activity.)


android.permission.FOTA_UPDATE

暂时不了解这是做什么使用的,android 开发网分析可能是一个预留权限.


android.permission.GET_ACCOUNTS

访问一个帐户列表在 Accounts Service 中 (Allows access to the list of accounts in the Accounts Service)


android.permission.GET_PACKAGE_SIZE

允许一个程序获取任何 package 占用空间容量 (Allows an application to find out the space used by any package.)


android.permission.GET_TASKS

允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等 (Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)


android.permission.HARDWARE_TEST

允许访问硬件 (Allows access to hardware peripherals.)


android.permission.INJECT_EVENTS

允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是 hook 技术吧 (Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)


android.permission.INSTALL_PACKAGES

允许一个程序安装 packages (Allows an application to install packages.)


android.permission.INTERNAL_SYSTEM_WINDOW

允许打开窗口使用系统用户界面 (Allows an application to open windows that are for use by parts of the system user interface.)


android.permission.INTERNET

允许程序打开网络套接字 (Allows applications to open network sockets)


android.permission.MANAGE_APP_TOKENS

允许程序管理 (创建、催后、 z- order 默认向 z 轴推移) 程序引用在窗口管理器中 (Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )


android.permission.MASTER_CLEAR 目前还没有明确的解释,android 开发网分析可能是清除一切数据,类似硬格机


android.permission.MODIFY_AUDIO_SETTINGS

允许程序修改全局音频设置 (Allows an application to modify global audio settings)


android.permission.MODIFY_PHONE_STATE

允许修改话机状态,如电源,人机接口等 (Allows modification of the telephony state – power on, mmi, etc.)


android.permission.MOUNT_UNMOUNT_FILESYSTEMS

允许挂载和反挂载文件系统可移动存储 (Allows mounting and unmounting file systems for removable storage.)


android.permission.PERSISTENT_ACTIVITY

允许一个程序设置他的 activities 显示 (Allow an application to make its activities persistent.)


android.permission.PROCESS_OUTGOING_CALLS

允许程序监视、修改有关播出电话 (Allows an application to monitor, modify, or abort outgoing calls)


android.permission.READ_CALENDAR

允许程序读取用户日历数据 (Allows an application to read the user’s calendar data.)


android.permission.READ_CONTACTS

允许程序读取用户联系人数据 (Allows an application to read the user’s contacts data.)


android.permission.READ_FRAME_BUFFER

允许程序屏幕波或和更多常规的访问帧缓冲数据 (Allows an application to take screen shots and more generally get access to the frame buffer data)


android.permission.READ_INPUT_STATE

允许程序返回当前按键状态 (Allows an application to retrieve the current state of keys and switches.)


android.permission.READ_LOGS

允许程序读取底层系统日志文件 (Allows an application to read the low-level system log files.)


android.permission.READ_OWNER_DATA

允许程序读取所有者数据 (Allows an application to read the owner’s data)


android.permission.READ_SMS

允许程序读取短信息 (Allows an application to read SMS messages.)


android.permission.READ_SYNC_SETTINGS

允许程序读取同步设置 (Allows applications to read the sync settings)


android.permission.READ_SYNC_STATS

允许程序读取同步状态 (Allows applications to read the sync stats)


android.permission.REBOOT

请求能够重新启动设备 (Required to be able to reboot the device.)


android.permission.RECEIVE_BOOT_COMPLETED

允许一个程序接收到 ACTION_BOOT_COMPLETED 广播在系统完成启动 (Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting.)


android.permission.RECEIVE_MMS

允许一个程序监控将收到 MMS 彩信,记录或处理 (Allows an application to monitor incoming MMS messages, to record or perform processing on them.)


android.permission.RECEIVE_SMS

允许程序监控一个将收到短信息,记录或处理 (Allows an application to monitor incoming SMS messages, to record or perform processing on them.)


android.permission.RECEIVE_WAP_PUSH

允许程序监控将收到 WAP PUSH 信息 (Allows an application to monitor incoming WAP push messages.)


android.permission.RECORD_AUDIO

允许程序录制音频 (Allows an application to record audio)


android.permission.REORDER_TASKS

允许程序改变 Z 轴排列任务 (Allows an application to change the Z-order of tasks)


android.permission.RESTART_PACKAGES

允许程序重新启动其他程序 (Allows an application to restart other applications)


android.permission.SEND_SMS

允许程序发送 SMS 短信 (Allows an application to send SMS messages)


android.permission.SET_ACTIVITY_WATCHER

允许程序监控或控制 activities 已经启动全局系统中 Allows an application to watch and control how activities are started globally in the system.


android.permission.SET_ALWAYS_FINISH

允许程序控制是否活动间接完成在处于后台时 Allows an application to control whether activities are immediately finished when put in the background.


android.permission.SET_ANIMATION_SCALE

修改全局信息比例 (Modify the global animation scaling factor.)


android.permission.SET_DEBUG_APP

配置一个程序用于调试 (Configure an application for debugging.)


android.permission.SET_ORIENTATION

允许底层访问设置屏幕方向和实际旋转 (Allows low-level access to setting the orientation (actually rotation) of the screen.)


android.permission.SET_PREFERRED_APPLICATIONS

允许一个程序修改列表参数 PackageManager.addPackageToPreferred () 和 PackageManager.removePackageFromPreferred () 方法 (Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred () and PackageManager.removePackageFromPreferred () methods.)


android.permission.SET_PROCESS_FOREGROUND

允许程序当前运行程序强行到前台 (Allows an application to force any currently running process to be in the foreground.)


android.permission.SET_PROCESS_LIMIT

允许设置最大的运行进程数量 (Allows an application to set the maximum number of (not needed) application processes that can be running. )


android.permission.SET_TIME_ZONE

允许程序设置时间区域 (Allows applications to set the system time zone)


android.permission.SET_WALLPAPER

允许程序设置壁纸 (Allows applications to set the wallpaper)


android.permission.SET_WALLPAPER_HINTS

允许程序设置壁纸 hits (Allows applications to set the wallpaper hints)


android.permission.SIGNAL_PERSISTENT_PROCESSES

允许程序请求发送信号到所有显示的进程中 (Allow an application to request that a signal be sent to all persistent processes)


android.permission.STATUS_BAR

允许程序打开、关闭或禁用状态栏及图标 Allows an application to open, close, or disable the status bar and its icons.


android.permission.SUBSCRIBED_FEEDS_READ

允许一个程序访问订阅 RSS Feed 内容提供 (Allows an application to allow access the subscribed feeds ContentProvider.)


android.permission.SUBSCRIBED_FEEDS_WRITE

系统暂时保留改设置,android 开发网认为未来版本会加入该功能。


android.permission.SYSTEM_ALERT_WINDOW

允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层 (Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications.)


android.permission.VIBRATE

允许访问振动设备 (Allows access to the vibrator)


android.permission.WAKE_LOCK

允许使用 PowerManager 的 WakeLocks 保持进程在休眠时从屏幕消失 (Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming)


android.permission.WRITE_APN_SETTINGS

允许程序写入 API 设置 (Allows applications to write the apn settings)


android.permission.WRITE_CALENDAR

允许一个程序写入但不读取用户日历数据 (Allows an application to write (but not read) the user’s calendar data. )


android.permission.WRITE_CONTACTS

允许程序写入但不读取用户联系人数据 (Allows an application to write (but not read) the user’s contacts data. )


android.permission.WRITE_GSERVICES

允许程序修改 Google 服务地图 (Allows an application to modify the Google service map.)


android.permission.WRITE_OWNER_DATA

允许一个程序写入但不读取所有者数据 (Allows an application to write (but not read) the owner’s data.)


android.permission.WRITE_SETTINGS

允许程序读取或写入系统设置 (Allows an application to read or write the system settings.)


android.permission.WRITE_SMS

允许程序写短信 (Allows an application to write SMS messages)


android.permission.WRITE_SYNC_SETTINGS

允许程序写入同步设置 (Allows applications to write the sync settings)


android 平台上的权限许可分得很细,如果软件无法正常执行时看看是不是缺少相关的 permission 声明,最终我们还需要使用 android sign tools 签名生成的 apk 文件。


Android permission 访问权限大全

Android permission 访问权限大全

网络上不乏android权限列表,但是很少有将列表和使用方法放在一起的,所以特此总结一下

需要在AndroidManifest.xml中定义相应的权限(以获取internet访问权限为例),如下:

Xml代码  

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

注意在<application>也可以定义INTERNET权限,如下:

Xml代码  

<application android:permission=”android.permission.INTERNET”>

    android.permission.ACCESS_CHECKIN_PROPERTIES

        允许读写访问"properties"表在checkin数据库中,改值可以修改上传

        ( Allows read/write access to the "properties" table in the checkin database, to change values that 

          get uploaded)

    android.permission.ACCESS_COARSE_LOCATION

        允许一个程序访问CellID或WiFi热点来获取粗略的位置

        (Allows an application to access coarse (e.g., Cell-ID, WiFi) location)

    android.permission.ACCESS_FINE_LOCATION

        允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)

    android.permission.ACCESS_LOCATION_EXTRA_COMMANDS

        允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)

  android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)

  android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications to access information about networks)

  android.permission.ACCESS_SURFACE_FLINGER允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger''s low level features)

  android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)

  android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务(Allows an application to publish system-level services).

  android.permission.BATTERY_STATS允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)

  android.permission.BLUETOOTH允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices)

  android.permission.BLUETOOTH_ADMIN允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices)

  android.permission.BRICK请求能够禁用设备(非常危险)(Required to be able to disable the device (very dangerous!).)

  android.permission.BROADCAST_PACKAGE_REMOVED允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed)

  android.permission.BROADCAST_STICKY.允许一个程序广播常用intents(Allows an application to broadcast sticky intents)

  android.permission.CALL_PHONE允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)

  android.permission.CALL_PRIVILEGED允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)

  android.permission.CAMERA请求访问使用照相设备(Required to be able to access the camera device. )

  android.permission.CHANGE_COMPONENT_ENABLED_STATE允许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether an application component (other than its own) is enabled or not. )

  android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置,如本地化(Allows an application to modify the current configuration, such as locale. )

  android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态(Allows applications to change network connectivity state)

  android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)

  android.permission.CLEAR_APP_CACHE允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches of all installed applications on the device. )

  android.permission.CLEAR_APP_USER_DATA允许一个程序清除用户设置(Allows an application to clear user data)

  android.permission.CONTROL_LOCATION_UPDATES允许启用禁止位置更新提示从无线模块(Allows enabling/disabling location update notifications from the radio. )

  android.permission.DELETE_CACHE_FILES允许程序删除缓存文件(Allows an application to delete cache files)

  android.permission.DELETE_PACKAGES允许一个程序删除包(Allows an application to delete packages)

  android.permission.DEVICE_POWER允许访问底层电源管理(Allows low-level access to power management)

  android.permission.DIAGNOSTIC允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )

  android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁(Allows applications to disable the keyguard )

  android.permission.DUMP允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state dump information from system services.)

  android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序(Allows an application to expand or collapse the status bar. )

  android.permission.FACTORY_TEST作为一个工厂测试程序,运行在root用户(Run as a manufacturer test application, running as the root user. )

  android.permission.FLASHLIGHT访问闪光灯,Android开发网提示HTC Dream不包含闪光灯(Allows access to the flashlight )

  android.permission.FORCE_BACK允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACK operation on whatever is the top activity. )

  android.permission.FOTA_UPDATE暂时不了解这是做什么使用的,Android开发网分析可能是一个预留权限.

  android.permission.GET_ACCOUNTS访问一个帐户列表在Accounts Service中(Allows access to the list of accounts in the Accounts Service)

  android.permission.GET_PACKAGE_SIZE允许一个程序获取任何package占用空间容量(Allows an application to find out the space used by any package. )

  android.permission.GET_TASKS允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)

  android.permission.HARDWARE_TEST允许访问硬件(Allows access to hardware peripherals. )

  android.permission.INJECT_EVENTS允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,Android开发网提醒算是hook技术吧(Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)

  android.permission.INSTALL_PACKAGES允许一个程序安装packages(Allows an application to install packages. )

  android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面(Allows an application to open windows that are for use by parts of the system user interface. )

  android.permission.INTERNET允许程序打开网络套接字(Allows applications to open network sockets)

  android.permission.MANAGE_APP_TOKENS允许程序管理(创建、催后、z-order默认向z轴推移)程序引用在窗口管理器中(Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )

  android.permission.MASTER_CLEAR目前还没有明确的解释,Android开发网分析可能是清除一切数据,类似硬格机

  android.permission.MODIFY_AUDIO_SETTINGS允许程序修改全局音频设置(Allows an application to modify global audio settings)

  android.permission.MODIFY_PHONE_STATE允许修改话机状态,如电源,人机接口等(Allows modification of the telephony state - power on, mmi, etc. )

  android.permission.MOUNT_UNMOUNT_FILESYSTEMS允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting file systems for removable storage. )

  android.permission.PERSISTENT_ACTIVITY允许一个程序设置他的activities显示(Allow an application to make its activities persistent. )

  android.permission.PROCESS_OUTGOING_CALLS允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abort outgoing calls)

  android.permission.READ_CALENDAR允许程序读取用户日历数据(Allows an application to read the user''s calendar data.)

  android.permission.READ_CONTACTS允许程序读取用户联系人数据(Allows an application to read the user''s contacts data.)

  android.permission.READ_FRAME_BUFFER允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shots and more generally get access to the frame buffer data)

  android.permission.READ_INPUT_STATE允许程序返回当前按键状态(Allows an application to retrieve the current state of keys and switches. )

  android.permission.READ_LOGS允许程序读取底层系统日志文件(Allows an application to read the low-android.intent.action.XMPlevel system log files. )

  android.permission.READ_OWNER_DATA允许程序读取所有者数据(Allows an application to read the owner''s data)

  android.permission.READ_SMS允许程序读取短信息(Allows an application to read SMS messages.)

  android.permission.READ_SYNC_SETTINGS允许程序读取同步设置(Allows applications to read the sync settings)

  android.permission.READ_SYNC_STATS允许程序读取同步状态(Allows applications to read the sync stats)

  android.permission.REBOOT请求能够重新启动设备(Required to be able to reboot the device. )

  android.permission.RECEIVE_BOOT_COMPLETED允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )

  android.permission.RECEIVE_MMS允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incoming MMS messages, to record or perform processing on them. )

  android.permission.RECEIVE_SMS允许程序监控一个将收到短信息,记录或处理(Allows an application to monitor incoming SMS messages, to record or perform processing on them.)

  android.permission.RECEIVE_WAP_PUSH允许程序监控将收到WAP PUSH信息(Allows an application to monitor incoming WAP push messages. )

  android.permission.RECORD_AUDIO允许程序录制音频(Allows an application to record audio)

  android.permission.REORDER_TASKS允许程序改变Z轴排列任务(Allows an application to change the Z-order of tasks)

  android.permission.RESTART_PACKAGES允许程序重新启动其他程序(Allows an application to restart other applications)

  android.permission.SEND_SMS允许程序发送SMS短信(Allows an application to send SMS messages)

  android.permission.SET_ACTIVITY_WATCHER允许程序监控或控制activities已经启动全局系统中Allows an application to watch and control how activities are started globally in the system.

  android.permission.SET_ALWAYS_FINISH允许程序控制是否活动间接完成在处于后台时Allows an application to control whether activities are immediately finished when put in the background.

  android.permission.SET_ANIMATION_SCALE修改全局信息比例(Modify the global animation scaling factor.)

  android.permission.SET_DEBUG_APP配置一个程序用于调试(Configure an application for debugging.)

  android.permission.SET_ORIENTATION允许底层访问设置屏幕方向和实际旋转(Allows low-level access to setting the orientation (actually rotation) of the screen.)

  android.permission.SET_PREFERRED_APPLICATIONS允许一个程序修改列表参数PackageManager.addPackageToPreferred() 和PackageManager.removePackageFromPreferred()方法(Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred() and PackageManager.removePackageFromPreferred() methods.)

  android.permission.SET_PROCESS_FOREGROUND允许程序当前运行程序强行到前台(Allows an application to force any currently running process to be in the foreground.)

  android.permission.SET_PROCESS_LIMIT允许设置最大的运行进程数量(Allows an application to set the maximum number of (not needed) application processes that can be running. )

  android.permission.SET_TIME_ZONE允许程序设置时间区域(Allows applications to set the system time zone)

  android.permission.SET_WALLPAPER允许程序设置壁纸(Allows applications to set the wallpaper )

  android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸hits(Allows applications to set the wallpaper hints)

  android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序请求发送信号到所有显示的进程中(Allow an application to request that a signal be sent to all persistent processes)

  android.permission.STATUS_BAR允许程序打开、关闭或禁用状态栏及图标Allows an application to open, close, or disable the status bar and its icons.

  android.permission.SUBSCRIBED_FEEDS_READ允许一个程序访问订阅RSS Feed内容提供(Allows an application to allow access the subscribed feeds ContentProvider. )

  android.permission.SUBSCRIBED_FEEDS_WRITE系统暂时保留改设置,Android开发网认为未来版本会加入该功能。

  android.permission.SYSTEM_ALERT_WINDOW允许一个程序打开窗口使用TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层(Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications. )

  android.permission.VIBRATE允许访问振动设备(Allows access to the vibrator)

  android.permission.WAKE_LOCK允许使用PowerManager的WakeLocks保持进程在休眠时从屏幕消失( Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming)

  android.permission.WRITE_APN_SETTINGS允许程序写入API设置(Allows applications to write the apn settings)

  android.permission.WRITE_CALENDAR允许一个程序写入但不读取用户日历数据(Allows an application to write (but not read) the user''s calendar data. )

  android.permission.WRITE_CONTACTS允许程序写入但不读取用户联系人数据(Allows an application to write (but not read) the user''s contacts data. )

  android.permission.WRITE_GSERVICES允许程序修改Google服务地图(Allows an application to modify the Google service map. )

  android.permission.WRITE_OWNER_DATA允许一个程序写入但不读取所有者数据(Allows an application to write (but not read) the owner''s data.)

  android.permission.WRITE_SETTINGS允许程序读取或写入系统设置(Allows an application to read or write the system settings. )

  android.permission.WRITE_SMS允许程序写短信(Allows an application to write SMS messages)

  android.permission.WRITE_SYNC_SETTINGS允许程序写入同步设置(Allows applications to write the sync settings)

  我们看到Android平台上的权限许可分得还是很细,和Symbian S60 3rd的Capabilities比详细的多,如果软件无法正常执行时看看是不是缺少相关的permission声明,最终我们还需要使用android sign tools签名生成的apk文件。


public static final String BROADCAST_PACKAGE_REMOVED

  允许应用程序发出一个应用程序被删除的通知。

  常量值: "android.permission.BROADCAST_PACKAGE_REMOVED"

  public static final String CALL_PHONE

  允许应用程序发起一个电话呼叫而不需要经拨号器用户界面确认。

  常量值: "android.permission.CALL_PHONE"

  public static final String DUMP

  允许应用程序从系统服务获取状态存储信息。

  常量值: "android.permission.DUMP"

  public static final String FOTA_UPDATE

  常量值: "android.permission.FOTA_UPDATE"

  public static final String GET_TASKS

  允许应用程序获得当前运行任务的信息:任务的简短描述,运行着什么 activity等。

  常量值: "android.permission.GET_TASKS"

  public static final String INSTALL_PACKAGES

  允许应用程序安装包。

  常量值: "android.permission.INSTALL_PACKAGES"

  public static final String INTERNAL_SYSTEM_WINDOW

  允许应用程序打开作为系统用户界面的一部分的窗口。

  常量值: "android.permission.INTERNAL_SYSTEM_WINDOW"

  public static final String RAISED_THREAD_PRIORITY

  允许应用程序获取提升的线程优先级,例如实时音频重放。

  常量值: "android.permission.RAISED_THREAD_PRIORITY"

  public static final String READ_CONTACTS

  允许应用程序当前用户的通讯录数据。

  常量值: "android.permission.READ_CONTACTS"

  public static final String RECEIVE_SMS

  允许应用程序监听收到的短信,并对短信进行记录或执行操作。

  常量值: "android.permission.RECEIVE_SMS"

  public static final String RECEIVE_WAP_PUSH

  允许应用程序监听提过WAP push进来的信息。

  常量值: "android.permission.RECEIVE_WAP_PUSH"

  public static final String RUN_INSTRUMENTATION

  允许应用程序开始运行某个包。

  常量值: "android.permission.RUN_INSTRUMENTATION"

  public static final String SET_ACTIVITY_WATCHER

允许应用程序监视和控制Activity如何在系统中启动。尽在调试状态(通常是 monkey命令)下可用。

  常量值: "android.permission.SET_ACTIVITY_WATCHER"

  public static final String SIGNAL_PERSISTENT_PROCESSES

  允许应用程序请求一个发给所有固有进程的信号。

  常量值: "android.permission.SIGNAL_PERSISTENT_PROCESSES"

  public static final String SYSTEM_ALERT_WINDOW

  允许应用程序使用SYSTEM_ALERT_TYPE类型在所有其他应用程序之上显示窗口很少有程序用到这个许可;这些窗口与用户进行系统级的交互。

  常量值: "android.permission.SYSTEM_ALERT_WINDOW"

  public static final String WRITE_CONTACTS

  允许应用程序写入(不能读取)用户的通讯录数据。

  常量值: "android.permission.WRITE_CONTACTS"

  public static final String WRITE_SETTINGS

  允许应用程序读写用户的通讯录数据。

  常量值: "android.permission.WRITE_SETTINGS"

  构造函数

  public Manifest.permission()

  String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。. "android.intent.action.ADD_SHORTCUT"

  String ALL_APPS_ACTION 动作:列举所有可用的应用。

  输入:无。 "android.intent.action.ALL_APPS"

  String ALTERNATIVE_CATEGORY 类别:说明 activity 是用户正在浏览的数据的一个可选操作。 "android.intent.category.ALTERNATIVE"

  String ANSWER_ACTION 动作:处理拨入的电话。 "android.intent.action.ANSWER"

  String BATTERY_CHANGED_ACTION 广播:充电状态,或者电池的电量发生变化。 "android.intent.action.BATTERY_CHANGED"

  String BOOT_COMPLETED_ACTION 广播:在系统启动后,这个动作被广播一次(只有一次)。 "android.intent.action.BOOT_COMPLETED"

  String BROWSABLE_CATEGORY 类别:能够被浏览器安全使用的 activities 必须支持这个类别。 "android.intent.category.BROWSABLE"

  String BUG_REPORT_ACTION 动作:显示 activity 报告错误。 "android.intent.action.BUG_REPORT"

  String CALL_ACTION 动作:拨打电话,被呼叫的联系人在数据中指定。 "android.intent.action.CALL"

String CALL_FORWARDING_STATE_CHANGED_ACTION 广播:语音电话的呼叫转移状态已经改变。 "android.intent.action.CFF"

  String CLEAR_CREDENTIALS_ACTION 动作:清除登陆凭证 (credential)。 "android.intent.action.CLEAR_CREDENTIALS"

  String CONFIGURATION_CHANGED_ACTION 广播:设备的配置信息已经改变,参见 Resources.Configuration. "android.intent.action.CONFIGURATION_CHANGED"

  Creator CREATOR 无 无

  String DATA_ACTIVITY_STATE_CHANGED_ACTION 广播:电话的数据活动(data activity)状态(即收发数据的状态)已经改变。 "android.intent.action.DATA_ACTIVITY"

  String DATA_CONNECTION_STATE_CHANGED_ACTION 广播:电话的数据连接状态已经改变。 "android.intent.action.DATA_STATE"

  String DATE_CHANGED_ACTION 广播:日期被改变。 "android.intent.action.DATE_CHANGED"

  String DEFAULT_ACTION 动作:和 VIEW_ACTION 相同,是在数据上执行的标准动作。 "android.intent.action.VIEW"

  String DEFAULT_CATEGORY 类别:如果 activity 是对数据执行确省动作(点击, center press)的一个选项,需要设置这个类别。 "android.intent.category.DEFAULT"

  String DELETE_ACTION 动作:从容器中删除给定的数据。 "android.intent.action.DELETE"

  String DEVELOPMENT_PREFERENCE_CATEGORY 类别:说明 activity 是一个设置面板 (development preference panel). "android.intent.category.DEVELOPMENT_PREFERENCE"

  String DIAL_ACTION 动作:拨打数据中指定的电话号码。 "android.intent.action.DIAL"

  String EDIT_ACTION 动作:为制定的数据显示可编辑界面。 "android.intent.action.EDIT"

  String EMBED_CATEGORY 类别:能够在上级(父)activity 中运行。 "android.intent.category.EMBED"

  String EMERGENCY_DIAL_ACTION 动作:拨打紧急电话号码。 "android.intent.action.EMERGENCY_DIAL"

  int FORWARD_RESULT_LAUNCH 启动标记:如果这个标记被设置,而且被一个已经存在的 activity 用来启动新的 activity,已有 activity 的回复目标 (reply target) 会被转移给新的 activity。 16 0x00000010

  String FOTA_CANCEL_ACTION 广播:取消所有被挂起的 (pending) 更新下载。

"android.server.checkin.FOTA_CANCEL"

  String FOTA_INSTALL_ACTION 广播:更新已经被确认,马上就要开始安装。 "android.server.checkin.FOTA_INSTALL"

  String FOTA_READY_ACTION 广播:更新已经被下载,可以开始安装。 "android.server.checkin.FOTA_READY"

  String FOTA_RESTART_ACTION 广播:恢复已经停止的更新下载。 "android.server.checkin.FOTA_RESTART"

  String FOTA_UPDATE_ACTION 广播:通过 OTA 下载并安装操作系统更新。 "android.server.checkin.FOTA_UPDATE"

  String FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY 类别:To be used as code under test for framework instrumentation tests. "android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"

  String GADGET_CATEGORY 类别:这个 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。 "android.intent.category.GADGET"

  String GET_CONTENT_ACTION 动作:让用户选择数据并返回。 "android.intent.action.GET_CONTENT"

  String HOME_CATEGORY 类别:主屏幕 (activity),设备启动后显示的第一个 activity。 "android.intent.category.HOME"

  String INSERT_ACTION 动作:在容器中插入一个空项 (item)。 "android.intent.action.INSERT"

  String INTENT_EXTRA 附加数据:和 PICK_ACTIVITY_ACTION 一起使用时,说明用户选择的用来显示的 activity;和 ADD_SHORTCUT_ACTION 一起使用的时候,描述要添加的快捷方式。 "android.intent.extra.INTENT"

  String LABEL_EXTRA 附加数据:大写字母开头的字符标签,和 ADD_SHORTCUT_ACTION 一起使用。 "android.intent.extra.LABEL"

  String LAUNCHER_CATEGORY 类别:Activity 应该被显示在顶级的 launcher 中。 "android.intent.category.LAUNCHER"

  String LOGIN_ACTION 动作:获取登录凭证。 "android.intent.action.LOGIN"

  String MAIN_ACTION 动作:作为主入口点启动,不需要数据。 "android.intent.action.MAIN"

  String MEDIABUTTON_ACTION 广播:用户按下了“Media Button”。 "android.intent.action.MEDIABUTTON"

  String MEDIA_BAD_REMOVAL_ACTION 广播:扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount

point) 还没解除 (unmount)。 "android.intent.action.MEDIA_BAD_REMOVAL"

  String MEDIA_EJECT_ACTION 广播:用户想要移除扩展介质(拔掉扩展卡)。 "android.intent.action.MEDIA_EJECT"

  String MEDIA_MOUNTED_ACTION 广播:扩展介质被插入,而且已经被挂载。 "android.intent.action.MEDIA_MOUNTED"

  String MEDIA_REMOVED_ACTION 广播:扩展介质被移除。 "android.intent.action.MEDIA_REMOVED"

  String MEDIA_SCANNER_FINISHED_ACTION 广播:已经扫描完介质的一个目录。 "android.intent.action.MEDIA_SCANNER_FINISHED"

  String MEDIA_SCANNER_STARTED_ACTION 广播:开始扫描介质的一个目录。 "android.intent.action.MEDIA_SCANNER_STARTED"

  String MEDIA_SHARED_ACTION 广播:扩展介质的挂载被解除 (unmount),因为它已经作为 USB 大容量存储被共享。 "android.intent.action.MEDIA_SHARED"

  String MEDIA_UNMOUNTED_ACTION 广播:扩展介质存在,但是还没有被挂载 (mount)。 "android.intent.action.MEDIA_UNMOUNTED"

  String MESSAGE_WAITING_STATE_CHANGED_ACTION 广播:电话的消息等待(语音邮件)状态已经改变。 "android.intent.action.MWI"

  int MULTIPLE_TASK_LAUNCH 启动标记:和 NEW_TASK_LAUNCH 联合使用,禁止将已有的任务改变为前景任务 (foreground)。 8 0x00000008

  String NETWORK_TICKLE_RECEIVED_ACTION 广播:设备收到了新的网络 "tickle" 通知。 "android.intent.action.NETWORK_TICKLE_RECEIVED"

  int NEW_TASK_LAUNCH 启动标记:设置以后,activity 将成为历史堆栈中的第一个新任务(栈顶)。 4 0x00000004

  int NO_HISTORY_LAUNCH 启动标记:设置以后,新的 activity 不会被保存在历史堆栈中。 1 0x00000001

  String PACKAGE_ADDED_ACTION 广播:设备上新安装了一个应用程序包。 "android.intent.action.PACKAGE_ADDED"

  String PACKAGE_REMOVED_ACTION 广播:设备上删除了一个应用程序包。 "android.intent.action.PACKAGE_REMOVED"

  String PHONE_STATE_CHANGED_ACTION 广播:电话状态已经改变。 "android.intent.action.PHONE_STATE"

  String PICK_ACTION 动作:从数据中选择一个项目 (item),将被选中的项目返回。

"android.intent.action.PICK"

  String PICK_ACTIVITY_ACTION 动作:选择一个 activity,返回被选择的 activity 的类(名)。 "android.intent.action.PICK_ACTIVITY"

  String PREFERENCE_CATEGORY 类别:activity是一个设置面板 (preference panel)。 "android.intent.category.PREFERENCE"

  String PROVIDER_CHANGED_ACTION 广播:更新将要(真正)被安装。 "android.intent.action.PROVIDER_CHANGED"

  String PROVISIONING_CHECK_ACTION 广播:要求 polling of provisioning service 下载最新的设置。 "android.intent.action.PROVISIONING_CHECK"

  String RUN_ACTION 动作:运行数据(指定的应用),无论它(应用)是什么。 "android.intent.action.RUN"

  String SAMPLE_CODE_CATEGORY 类别:To be used as an sample code example (not part of the normal user experience). "android.intent.category.SAMPLE_CODE"

  String SCREEN_OFF_ACTION 广播:屏幕被关闭。 "android.intent.action.SCREEN_OFF"

  String SCREEN_ON_ACTION 广播:屏幕已经被打开。 "android.intent.action.SCREEN_ON"

  String SELECTED_ALTERNATIVE_CATEGORY 类别:对于被用户选中的数据,activity 是它的一个可选操作。 "android.intent.category.SELECTED_ALTERNATIVE"

  String SENDTO_ACTION 动作:向 data 指定的接收者发送一个消息。 "android.intent.action.SENDTO"

  String SERVICE_STATE_CHANGED_ACTION 广播:电话服务的状态已经改变。 "android.intent.action.SERVICE_STATE"

  String SETTINGS_ACTION 动作:显示系统设置。输入:无。 "android.intent.action.SETTINGS"

  String SIGNAL_STRENGTH_CHANGED_ACTION 广播:电话的信号强度已经改变。 "android.intent.action.SIG_STR"

  int SINGLE_TOP_LAUNCH 启动标记:设置以后,如果 activity 已经启动,而且位于历史堆栈的顶端,将不再启动(不重新启动) activity。 2 0x00000002

  String STATISTICS_REPORT_ACTION 广播:要求 receivers 报告自己的统计信息。 "android.intent.action.STATISTICS_REPORT"

  String STATISTICS_STATE_CHANGED_ACTION 广播:统计信息服务的状态已经改变。 "android.intent.action.STATISTICS_STATE_CHANGED"

 String SYNC_ACTION 动作:执行数据同步。 "android.intent.action.SYNC"

  String TAB_CATEGORY 类别:这个 activity 应该在 TabActivity 中作为一个 tab 使用。 "android.intent.category.TAB"

  String TEMPLATE_EXTRA 附加数据:新记录的初始化模板。 "android.intent.extra.TEMPLATE"

  String TEST_CATEGORY 类别:作为测试目的使用,不是正常的用户体验的一部分。 "android.intent.category.TEST"

  String TIMEZONE_CHANGED_ACTION 广播:时区已经改变。 "android.intent.action.TIMEZONE_CHANGED"

  String TIME_CHANGED_ACTION 广播:时间已经改变(重新设置)。 "android.intent.action.TIME_SET"

  String TIME_TICK_ACTION 广播:当前时间已经变化(正常的时间流逝)。 "android.intent.action.TIME_TICK"

  String UMS_CONNECTED_ACTION 广播:设备进入 USB 大容量存储模式。 "android.intent.action.UMS_CONNECTED"

  String UMS_DISCONNECTED_ACTION 广播:设备从 USB 大容量存储模式退出。 "android.intent.action.UMS_DISCONNECTED"

  String UNIT_TEST_CATEGORY 类别:应该被用作单元测试(通过 test harness 运行)。 "android.intent.category.UNIT_TEST"

  String VIEW_ACTION 动作:向用户显示数据。 "android.intent.action.VIEW"

  String WALLPAPER_CATEGORY 类别:这个 activity 能过为设备设置墙纸。 "android.intent.category.WALLPAPER"

  String WALLPAPER_CHANGED_ACTION 广播:系统的墙纸已经改变。 "android.intent.action.WALLPAPER_CHANGED"

  String WALLPAPER_SETTINGS_ACTION 动作:显示选择墙纸的设置界面。输入:无。 "android.intent.action.WALLPAPER_SETTINGS"

  String WEB_SEARCH_ACTION 动作:执行 web 搜索。 "android.intent.action.WEB_SEARCH"

  String XMPP_CONNECTED_ACTION 广播:XMPP 连接已经被建立。 "android.intent.action.XMPP_CONNECTED"

  String XMPP_DISCONNECTED_ACTION 广播:XMPP 连接已经被断开。 "android.intent.action.XMPP_DISCONNECTED_ACTION“

ACCESS_FINE_LOCATION、ACCESS_LOCATION_EXTRA_COMMANDS、ACCESS_MOCK_LOCATION是有关GPS定位获取的信息使用GPS LocationProvider类的相关定位信息必需声明android.permission.ACCESS_FINE_LOCATION、android.permission.ACCESS_LOCATION_EXTRA_COMMANDS和android.permission.ACCESS_MOCK_LOCATION

ACCESS_NETWORK_STATE是获取网络状态的权限控制,如果获取当前GSM网络相关信息必需在androidmanifest.xml中声明android.permission.ACCESS_NETWORK_STATE这句。

ACCESS_SURFACE_FLINGER是使用SurfaceFlinger底层API的令牌,必需声明android.permission.ACCESS_SURFACE_FLINGER


ACCESS_WIFI_STATE权限可以获取使用Wi-Fi等WLAN无线网络,加入android.permission.ACCESS_WIFI_STATE这句


ADD_SYSTEM_SERVICE是系统服务数据库的管理权限,比如添加一个系统服务必需声明android.permission.ADD_SYSTEM_SERVICE


BATTERY_STATS是获取Android平台上电池设备的权限令牌,必需声明android.permission.BATTERY_STATS才可以获得电池信息


BLUETOOTH蓝牙信息类,获取相关的蓝牙信息必声明android.permission.BLUETOOTH


BLUETOOTH_ADMIN是蓝牙管理权限包含了身份安全认证,必需添加android.permission.BLUETOOTH_ADMIN类

BRICK    "android.permission.BRICK"

BROADCAST_PACKAGE_REMOVED是广播包移除类权限,可以移除指定的系统消息,必需声明android.permission.BROADCAST_PACKAGE_REMOVED这句


BROADCAST_STICKY    "android.permission.BROADCAST_STICKY"


CALL_PHONE是允许Android手机拨打电话时使用的权限    "android.permission.CALL_PHONE"


CALL_PRIVILEGED    "android.permission.CALL_PRIVILEGED"


CAMERA是摄像头权限控制,可以管理照相功能的启用    "android.permission.CAMERA"


CHANGE_COMPONENT_ENABLED_STATE    "android.permission.CHANGE_COMPONENT_ENABLED_STATE"


CHANGE_CONFIGURATION是控制Android系统设置等敏感信息的权限,修改时必需有android.permission.CHANGE_CONFIGURATION声明。


CHANGE_NETWORK_STATE    "android.permission.CHANGE_NETWORK_STATE"


CHANGE_WIFI_STATE是改变WLAN状态的开关,如果打开或关闭Wi-Fi必需加入android.permission.CHANGE_WIFI_STATE的声明。


CLEAR_APP_CACHE清除程序缓存也是需要权限的,不要忘了包含android.permission.CLEAR_APP_CACHE这句


CLEAR_APP_USER_DATA                "android.permission.CLEAR_APP_USER_DATA"

DELETE_CACHE_FILES                    "android.permission.DELETE_CACHE_FILES"

DELETE_PACKAGES                        "android.permission.DELETE_PACKAGES"

DEVICE_POWER                                "android.permission.DEVICE_POWER"

DISABLE_KEYGUARD                        "android.permission.DISABLE_KEYGUARD"

DUMP                                                 "android.permission.DUMP"

EXPAND_STATUS_BAR                     "android.permission.EXPAND_STATUS_BAR"

FACTORY_TEST                               "android.permission.FACTORY_TEST"  
FLASHLIGHT                                      "android.permission.FLASHLIGHT"  
FORCE_BACK                                    "android.permission.FORCE_BACK"  
FOTA_UPDATE                                  "android.permission.FOTA_UPDATE"  
GET_ACCOUNTS                               "android.permission.GET_ACCOUNTS"  
GET_PACKAGE_SIZE                        "android.permission.GET_PACKAGE_SIZE"  
GET_TASKS                                      "android.permission.GET_TASKS"  
HARDWARE_TEST                            "android.permission.HARDWARE_TEST"  
INJECT_EVENTS                                "android.permission.INJECT_EVENTS"  
INSTALL_PACKAGES                        "android.permission.INSTALL_PACKAGES"  
INTERNAL_SYSTEM_WINDOW         "android.permission.INTERNAL_SYSTEM_WINDOW"  
INTERNET                                          "android.permission.INTERNET"  
MANAGE_APP_TOKENS                    "android.permission.MANAGE_APP_TOKENS"  
MASTER_CLEAR                                "android.permission.MASTER_CLEAR"  
MODIFY_AUDIO_SETTINGS               "android.permission.MODIFY_AUDIO_SETTINGS"  
MODIFY_PHONE_STATE                    "android.permission.MODIFY_PHONE_STATE"  
MOUNT_UNMOUNT_FILESYSTEMS    "android.permission.MOUNT_UNMOUNT_FILESYSTEMS"  
PERSISTENT_ACTIVITY                      "android.permission.PERSISTENT_ACTIVITY"  
PROCESS_OUTGOING_CALLS           "android.permission.PROCESS_OUTGOING_CALLS"  
READ_CALENDAR                               "android.permission.READ_CALENDAR"  
READ_CONTACTS                              "android.permission.READ_CONTACTS"  
READ_FRAME_BUFFER                     "android.permission.READ_FRAME_BUFFER"  
READ_INPUT_STATE                          "android.permission.READ_INPUT_STATE"  
READ_LOGS                                       "android.permission.READ_LOGS"  
READ_OWNER_DATA                        "android.permission.READ_OWNER_DATA"  
READ_PHONE_STATE                        "android.permission.READ_PHONE_STATE"  
READ_SMS                                          "android.permission.READ_SMS"  
READ_SYNC_SETTINGS                     "android.permission.READ_SYNC_SETTINGS"  
READ_SYNC_STATS                           "android.permission.READ_SYNC_STATS"


RECEIVE_BOOT_COMPLETED一般用于自启动程序的声明,当Android系统启动时会发送这个广播,所以自启动程序必需声明android.permission.RECEIVE_BOOT_COMPLETED才可以正常运行

RECEIVE_MMS                                     "android.permission.RECEIVE_MMS"  
RECEIVE_SMS                                      "android.permission.RECEIVE_SMS"  
RECEIVE_WAP_PUSH                          "android.permission.RECEIVE_WAP_PUSH"  
RECORD_AUDIO                                  "android.permission.RECORD_AUDIO"  
REORDER_TASKS                               "android.permission.REORDER_TASKS"  
RESTART_PACKAGES                        "android.permission.RESTART_PACKAGES"  
SEND_SMS                                          "android.permission.SEND_SMS"  
SET_ACTIVITY_WATCHER                 "android.permission.SET_ACTIVITY_WATCHER"  
SET_ALWAYS_FINISH                         "android.permission.SET_ALWAYS_FINISH"  
SET_ANIMATION_SCALE                    "android.permission.SET_ANIMATION_SCALE"  
SET_DEBUG_APP                               "android.permission.SET_DEBUG_APP"  
SET_ORIENTATION                             "android.permission.SET_ORIENTATION"  
SET_PREFERRED_APPLICATIONS    "android.permission.SET_PREFERRED_APPLICATIONS"  
SET_PROCESS_FOREGROUND        "android.permission.SET_PROCESS_FOREGROUND"  
SET_PROCESS_LIMIT                        "android.permission.SET_PROCESS_LIMIT"  
SET_TIME_ZONE                                "android.permission.SET_TIME_ZONE"  
SET_WALLPAPER                              "android.permission.SET_WALLPAPER"  
SET_WALLPAPER_HINTS                  "android.permission.SET_WALLPAPER_HINTS"  
SIGNAL_PERSISTENT_PROCESSES "android.permission.SIGNAL_PERSISTENT_PROCESSES"  
STATUS_BAR                                      "android.permission.STATUS_BAR"  
SYSTEM_ALERT_WINDOW                "android.permission.SYSTEM_ALERT_WINDOW"  
VIBRATE                                              "android.permission.VIBRATE"  
WAKE_LOCK                                       "android.permission.WAKE_LOCK"  
WRITE_CALENDAR                             "android.permission.WRITE_CALENDAR"  
WRITE_CONTACTS                            "android.permission.WRITE_CONTACTS"  
WRITE_OWNER_DATA                       "android.permission.WRITE_OWNER_DATA"  
WRITE_SETTINGS                              "android.permission.WRITE_SETTINGS"  
WRITE_SMS                                        "android.permission.WRITE_SMS"  
WRITE_SYNC_SETTINGS                   "android.permission.WRITE_SYNC_SETTINGS"


我们今天的关于android – 利用checkCallingOrSelfPermission()进行权限提升攻击android权限检查的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android added new permission model for Android 6.0 (Marshmallow).、Android M权限:checkSelfPermission()始终返回-1、Android permission 访问权限列表、Android permission 访问权限大全的相关信息,请在本站查询。

本文标签: