针对android.permission.BATTERY_STATSapi这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展(转)安卓6.0系统权限申请android.permission.WR
针对android.permission.BATTERY_STATS api这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展(转)安卓6.0系统权限申请android.permission.WRITE_SETTINGS (亮度调节)、Android 6.0 (API 23, M)以上对permission的变化、android dumpsys batteryinfo vs android dumpsys batterystats、Android Permission 中英对照等相关知识,希望可以帮助到你。
本文目录一览:- android.permission.BATTERY_STATS api
- (转)安卓6.0系统权限申请android.permission.WRITE_SETTINGS (亮度调节)
- Android 6.0 (API 23, M)以上对permission的变化
- android dumpsys batteryinfo vs android dumpsys batterystats
- Android Permission 中英对照
android.permission.BATTERY_STATS api
解决方法
@Override public void onCreate() { broadcastReceiver batteryReceiver = new broadcastReceiver() { int scale = -1; int level = -1; int voltage = -1; int temp = -1; @Override public void onReceive(Context context,Intent intent) { level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1); scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE,-1); temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,-1); voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,-1); Log.e("BatteryManager","level is "+level+"/"+scale+",temp is "+temp+",voltage is "+voltage); } }; IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(batteryReceiver,filter); }
(转)安卓6.0系统权限申请android.permission.WRITE_SETTINGS (亮度调节)
原地址:http://blog.csdn.net/hnkwei1213/article/details/54947339
app用到了调整系统亮度的功能,在清单文件中添加了android.permission.WRITE_SETTINGS权限,但运行在6.0系统一直报错:java.lang.SecurityException: so.wih.android.jjewatch was not granted this permission: android.permission.WRITE_SETTINGS.
解决方法如下:
-
//设置系统亮度
-
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
-
if (!Settings.System.canWrite(context)) {
-
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
-
intent.setData(Uri.parse("package:" + context.getPackageName()));
-
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
context.startActivity(intent);
-
} else {
-
//有了权限,具体的动作
-
Settings.System.putInt(getContentResolver(),
-
Settings.System.SCREEN_BRIGHTNESS, progress);
-
data2 = intToString(progress, 255);
-
tvSunlightValue.setText(data2 + "%");
-
}
-
}
Android 6.0 (API 23, M)以上对permission的变化
背景
刚开始工作,最近在看Android经典入门书籍《第一行代码》。后来才发现看的是第一版,由于Android版本升级,各种feature变了很多,所以书里有些例子已经不能在新一点的版本上正确运行了,我就踩到了一个坑,是关于Android 6.0以后系统对于应用permission的处理的变化。
踩坑过程
在《第一行代码》“8.2.1 接收短信”这一节里,书中给了一个demo项目,主要功能是一旦手机接收到短信的时候,app自动显示出发信人和短信内容。原理很简单:系统在收到短信的时候,会发出值为“android.provider.Telephony.SMS_RECEIVED”的一条广播,所以只需在代码里注册一个BroadcaseReceiver接收这个广播并且读出短信信息然后显示到屏幕上就行了。
高高兴兴的照着书敲完代码,在模拟器上运行程序,打开DDMS编辑模拟短息,send~走你~duang~~短信接收到了,但是应用上什么都没显示,立马傻眼。检查了一遍代码,确认没错,又尝试一次,duang~还是不行。于是开始怀疑是不是DDMS有什么问题,就用自己的手机(Android 5.0)试了一下,结果程序正常了,应用成功的显示了短信发信人和内容。这证明模拟器上确实是有什么地方不对劲,看了一眼Virtual Device Manager,我用的模拟器是Android 7.0,联想到之前Android 7.0上下载和打开文件所遇到的坑,警惕的怀疑是不是由于版本变化所引起的不同。于是在Android 5.0的模拟器上又尝试的一下,duang~成功了。这就证明了确实是版本升级所引起的不同。
填坑过程
确定了问题原因,开始搜索资料,经过一番调查,其实Android官方文档对permission的行为写的很清楚,在这里总结记录一下。
Android把permission分为两种:
normal permission:不会直接威胁用户的隐私
danger permission:可能会访问用户的隐私数据
应用要在Manifest文件中声明自己所需要的permission,然而用户在安装应用的时候,系统版本不同,则会有不同的对permission的处理:
对于Android 5.1 (API 22)或更低版本的系统(以下简称“低版本系统”),在用户安装应用的时候,系统会展示应用所需的所有permission的列表(包括normal permission和danger permission),并询问用户是否同意授予所有权限。如果用户因为不想授予某一或某些权限,应用则不会被安装。
对于Android 6.0 (API 23)或者更高版本(以下简称“高版本系统”),在用户安装应用的时候,系统会自动授予应用所需的所有normal permission并安装程序,但是并不授予应用所需的danger permission。用户有机会在应用运行时选择是否授予所有或部分danger permission,并且可以随时在设置里收回授予给应用的任何danger permission。
看到这里区别就比较明了了,对于低版本系统,如果不想授予某些权限,则应用根本不会被安装。对于高版本系统,如果你不想授予某些danger permission,只要选择不授予就可以了,不会影响应用安装,也不影响应用运行,但是某些feature可能就不能用了(比如你不想授予读取短信功能,那么应用里与短信相关的feature就不能用了,但是与短信无关的feature可以使用)。这样有一个好处就是用户可以控制不授予应用哪些数据,而即使不授予应用某些数据,用户仍然可以使用“残血版”的应用。
请求permission
高版本系统在运行时提供给用户授予permission的机会,所以开发者要在代码中对检查和请求permission做相应的处理,在Android framework里提供了相应的方法,在Support Library里也提供了类似的方法。Android的官方文档推荐使用Support Library里的方法,因为使用更简单。
检查permission
可以使用ContextCompat.checkSelfPermission()来检查是否已经获得了某个permission:
// Assume thisActivity is the current activity
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.WRITE_CALENDAR);
如果应用已经获取了permission,则返回PackageManager.PERMISSION_GRANTED,如果没有获取,则返回PERMISSION_DENIED。
请求permission
如果应用没有获得某个permission,则可以通过调用requestPermissions()来请求权限
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an explanation 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.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
上述代码中在调用requestPermissions()之前先调用了一个方法shouldShowRequestPermissionRationale(),这个方法给应用一个机会向用户解释为什么要请求这个permission。
当requestPermissions()这个方法被调用时,系统会弹出一个样式固定的弹窗,这个弹窗不能定制,供用户选择是否授予permission。requestPermissions()是异步执行的,这个方法会马上返回。在用户做出选择之后,系统会调用onRequestPermissionsResult(),对请求permission的结果是在这个方法中处理的
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// 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.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other ''case'' lines to check for other
// permissions this app might request
}
}
看到这,其实我的问题已经有了解决方法,先检查是否有读取短信权限,如果有的话直接注册广播接收器,如果没有的话请求权限,如果获得权限之后再注册广播接收器,运行,duang~成功~
更多知识
permission group
Android的permission有个权限组(permission group的概念),比如RECEIVE_SMS、READ_SMS、SEND_SMS......都属于SMS组,在应用已经获得了某一组中的某一权限,则下次再请求同组中的其他权限时,系统不会询问用户则直接授予请求的权限。
充分测试
官方文档提醒开发者,由于用户可能不授予请求的permission,所有开发者要充分测试各种情况,确保在有没有权限的时候应用要有合理的表现。
官方链接
对于记录的不是很详细的地方,可以参考官方链接:https://developer.android.com...
android dumpsys batteryinfo vs android dumpsys batterystats
任何人都可以告诉我adb shell dumpsys如何在内部工作?我想这个命令会以某种方式读取/ proc fs,但这只是我的理解.
似乎android sdk 19以后,不支持以下命令 –
adb shell dumpsys batteryinfo
它已被取代
adb shell dumpsys batterystats
我想知道是否有任何文档(链接)可用,其中可以找到有关这方面的详细信息.
解决方法:
如果您查看dumpsys的源代码,您可以看到它只是从默认服务管理器请求服务实例,然后调用服务dump()方法(这是IBinder的接口)传递STDOUT和命令行参数:
sp<IServiceManager> sm = defaultServiceManager();
...
sp<IBinder> service = sm->checkService(services[i]);
...
int err = service->dump(STDOUT_FILENO, args);
在上面的示例中,相关服务似乎已从batteryinfo重命名为batterystats
Android Permission 中英对照
android.permission.ACCESS_CHECKIN_PROPERTIESAllows read/write access to the "properties" table in the checkin database, to change values that get uploaded
允许读写访问 "properties" 表在 checkin 数据库中,改值可以修改上传
android.permission.ACCESS_COARSE_LOCATION
Allows an application to access coarse (e.g., Cell-ID, WiFi) location
允许一个程序访问 CellID 或 WiFi 热点来获取粗略的位置
android.permission.ACCESS_FINE_LOCATION
Allows an application to access fine (e.g., GPS) location
允许一个程序访问精良位置 (如 GPS)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
Allows an application to acces*tra location provider commands
允许应用程序访问额外的位置提供命令
android.permission.ACCESS_MOCK_LOCATION
Allows an application to create mock location providers for testing
允许程序创建模拟位置提供用于测试
android.permission.ACCESS_NETWORK_STATE
Allows applications to access information about networks
允许程序访问有关 GSM 网络信息
android.permission.ACCESS_SURFACE_FLINGER
Allows an application to use SurfaceFlinger''s low level features
允许程序使用 SurfaceFlinger 底层特性
android.permission.ACCESS_WIFI_STATE
Allows applications to access information about Wi-Fi networks
允许程序访问 Wi-Fi 网络状态信息
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
Allows an application to broadcast sticky intents
允许一个程序广播常用 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
Allows applications to change Wi-Fi connectivity state
允许程序改变 Wi-Fi 连接状态
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
Allows applications to RW to diagnostic resources
允许程序 RW 诊断资源
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
Allows an application to expand or collapse the status bar
允许一个程序扩展收缩在状态栏,Android 开发网提示应该是一个类似 Windows Mobile 中的托盘程序
android.permission.FACTORY_TEST
Run as a manufacturer test application, running as the root user
作为一个工厂测试程序,运行在 root 用户
android.permission.FLASHLIGHT
Allows access to the flashlight
访问闪光灯,Android 开发网提示 HTC Dream 不包含闪光灯
android.permission.FORCE_BACK
Allows an application to force a BACK operation on whatever is the top activity
允许程序强行一个后退操作是否在顶层 activities
android.permission.FOTA_UPDATE
暂时不了解这是做什么使用的,Android 开发网分析可能是一个预留权限.
android.permission.GET_ACCOUNTS
Allows access to the list of accounts in the Accounts Service
访问一个帐户列表在 Accounts Service 中
android.permission.GET_PACKAGE_SIZE
Allows an application to find out the space used by any package
允许一个程序获取任何 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
Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window
允许一个程序截获用户事件如按键、触 摸、轨迹球等等到一个时间流
android.permission.INSTALL_PACKAGES
Allows an application to install packages
允许一个程序安装 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
Allows an application to manage (create, destroy, Z-order) application tokens in the window manager
允许程序管理 (创建、催后、z -order 默认向 z 轴推移) 程序引用在窗口管理器中
android.permission.MASTER_CLEAR
目前还没有明确的解释,可能是清除一切数据,类似硬格机
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
Allow an application to make its activities persistent
允许一个程序设置他的 activities 显示
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
Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting
允许一个程序接收到 ACTION_BOOT_COMPLETED 广播在系统完成启动
android.permission.RECEIVE_MMS
Allows an application to monitor incoming MMS messages, to record or perform processing on them
允许一个程序监控将收到 MMS 彩信,记录或处理
android.permission.RECEIVE_SMS
Allows an application to monitor incoming SMS messages, to record or perform processing on them
允许程序监控一个将收到短信息,记录或处理
android.permission.RECEIVE_WAP_PUSH
Allows an application to monitor incoming WAP push messages
允许程序监控将收到 WAP PUSH 信息
android.permission.RECORD_AUDIO
Allows an application to record audio
允许程序录制音频
android.permission.REORDER_TASKS
Allows an application to change the Z-order of tasks
允许程序改变 Z 轴排列任务
android.permission.RESTART_PACKAGES
Allows an application to restart other applications
允许程序重新启动其他程序
android.permission.SEND_SMS
Allows an application to send SMS messages
允许程序发送 SMS 短信
android.permission.SET_ACTIVITY_WATCHER
Allows an application to watch and control how activities are started globally in the system
允许程序监控或控制 activities 已经启动全局系统中
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
Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred() and PackageManager.removePackageFromPreferred() methods
允许一个程 序修改列表参数 PackageManager.addPackageToPreferred () 和 packageManager.removePackageFromPreferred () 方法
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
Allows applications to set the wallpaper hints
允许程序设置壁纸 hits
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
Allows an application to allow access the subscribed feeds ContentProvider
允许一个程序访问订阅 RSS Feed 内容提供
android.permission.SUBSCRIBED_FEEDS_WRITE
系统暂时保留改设置,未来版本可能会加入该功能
android.permission.SYSTEM_ALERT_WINDOW
Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications
允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层
android.permission.VIBRATE
Allows access to the vibrator
允许访问振动设备
android.permission.WAKE_LOCK
Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming
允许使用 PowerManager 的 WakeLocks 保持进程在休眠时从屏幕消失
android.permission.WRITE_APN_SETTINGS
Allows applications to write the apn settings
允许程序写入 API 设置
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
Allows an application to modify the Google service map
允许程序修改 Google 服务地图
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.BATTERY_STATS api的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于(转)安卓6.0系统权限申请android.permission.WRITE_SETTINGS (亮度调节)、Android 6.0 (API 23, M)以上对permission的变化、android dumpsys batteryinfo vs android dumpsys batterystats、Android Permission 中英对照等相关知识的信息别忘了在本站进行查找喔。
本文标签: