1.在Mainifest.xml中添加

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:dist="http://schemas.android.com/apk/distribution"
  4. package="com.example.ble">
  5.  
  6. <dist:module dist:instant="true" />
  7.  
  8. <uses-permission android:name="android.permission.BLUETOOTH"/>
  9. <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
  10. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  11. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  12.  
  13. <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
  14.  
  15. <application
  16. android:allowBackup="true"
  17. android:icon="@mipmap/bluetooth"
  18. android:label="@string/app_name"
  19. android:roundIcon="@mipmap/ic_launcher_round"
  20. android:supportsRtl="true"
  21. android:theme="@style/AppTheme">
  22. <activity android:name=".MainActivity">
  23. <intent-filter>
  24. <action android:name="android.intent.action.MAIN" />
  25.  
  26. <category android:name="android.intent.category.LAUNCHER" />
  27. </intent-filter>
  28. </activity>
  29. </application>
  30.  
  31. </manifest>

2.在activity中申请

  1.   private boolean checkPermissions(){
  2. if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
  3.  
  4. String[] permissions = {
  5. Manifest.permission.BLUETOOTH,
  6. Manifest.permission.BLUETOOTH_ADMIN,
  7. Manifest.permission.ACCESS_COARSE_LOCATION,
  8. Manifest.permission.ACCESS_FINE_LOCATION,
  9. };
  10.  
  11. final int BLE_PERMISSION = ;
  12.  
  13. int permissionCheck = ;
  14.  
  15. for (String permission : permissions){
  16. permissionCheck += checkSelfPermission(permission);
  17. }
  18. if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
  19. requestPermissions(permissions,BLE_PERMISSION);//requestPermissions是Activity中的api
  20. return false;
  21. }
  22. }
  23. return true;
  24. }
  25. @RequiresApi(api = Build.VERSION_CODES.M)
  26. @Override
  27. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  28. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  29. final int BLE_PERMISSION = ;
  30.  
  31. if (requestCode == BLE_PERMISSION && grantResults != null) {
  32. boolean ret = true;
  33. for (int result : grantResults){//检查所有权限
  34. if (result != PackageManager.PERMISSION_GRANTED){
  35. ret = false;
  36. break;
  37. }
  38. }
  39. if (ret) { //所有权限申请成功。
  40. setupBLE();
  41. } else {
  42. ret = shouldShowRequestPermissionRationale(permissions[]);
  43. Log.e("MainActivity", "onRequestPermissionsResult: result = " + ret );
  44. }
  45. }
  46. }

3.在Fragment中申请

3.1申请多权限

  1. private fun checkPermissions(): Boolean {
  2.  
  3. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  4. val permissions = arrayOf(
  5. Manifest.permission.WRITE_EXTERNAL_STORAGE
  6. )
  7. val PERMISSION_CODE =
  8.  
  9. var permissionCheck =
  10.  
  11. if (context == null ) return false
  12.  
  13. for (permission in permissions) {
  14. var check : Int? = context?.checkSelfPermission(permission)
  15. if (check != null) {
  16. permissionCheck += check
  17. }else{
  18. return false
  19. }
  20. }
  21. if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
  22. requestPermissions(permissions, PERMISSION_CODE)
  23. return false
  24. }
  25. }
  26. return true
  27. }
  28.  
  29. @RequiresApi(api = Build.VERSION_CODES.M)
  30. override fun onRequestPermissionsResult(
  31. requestCode: Int,
  32. permissions: Array<String>,
  33. grantResults: IntArray
  34. ) {
  35. super.onRequestPermissionsResult(requestCode, permissions, grantResults)
  36. val PERMISSION_CODE =
  37.  
  38. if (requestCode == PERMISSION_CODE && grantResults != null) {
  39. var ret =
  40. for (result in grantResults) {//检查所有权限
  41. ret += result
  42. if (result != PackageManager.PERMISSION_GRANTED) {
  43. break
  44. }
  45. }
  46. if (ret == ) { //所有权限申请成功。
  47. parseJson("test.json")
  48. }
  49. }
  50. }

3.2 申请单个权限

  1. @OnClick(R.id.btn_analy_import)
  2. public void onImportClicked(View view){
  3. if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
  4. final int permissionID = ;
  5. int write = getActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
  6. if (write != PackageManager.PERMISSION_GRANTED) {
  7. String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
  8. requestPermissions(permissions, permissionID);//fragment基类中的函数
  9. }else{
  10. //业务函数
  11. }
  12. }
  13. }
  14.  
  15. @Override
  16. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  17. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  18. Log.e("CompareFrgmt", "onRequestPermissionsResult: requestCode = " + requestCode );
  19. final int permissionID = ;
  20. if (requestCode == permissionID && grantResults != null) {
  21. if (grantResults[] == PackageManager.PERMISSION_GRANTED) {
  22. //业务函数
  23. } else {
  24. Snackbar.make(operatorPager, R.string.err_permission_denied,Snackbar.LENGTH_LONG).show();
  25. }
  26. }
  27. }

Android 权限查寻表的更多相关文章

  1. android 权限大全

    教程 博客 淘帖     论坛›eoe·Android开发资源区›Android开发实例教程 191507 12 / 2 页下一页 android 权限大全 『癲瘋霸気』 于 2013-4-3 10: ...

  2. Android权限列表permission说明

    网络上不乏android权限列表,但是很少有将列表和使用方法放在一起的,所以特此总结一下 需要在AndroidManifest.xml中定义相应的权限(以获取internet访问权限为例),如下: & ...

  3. android权限列表

    原文:[转]android权限列表 访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略 ...

  4. Android Permission denied 错误 ( 附Android权限大全 )

    Android Permission denied 错误(附Android权限大全) java.net.SocketException: Permission denied (maybe missin ...

  5. Android权限操作之uses-permission详解

    本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...

  6. Android权限说明 system权限 root权限

    原文链接:http://blog.csdn.net/rockwupj/article/details/8618655 Android权限说明 Android系统是运行在Linux内核上的,Androi ...

  7. android权限大全转http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html

    android权限大全转http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html 访问登记属性 android.permission ...

  8. Android笔记(七十三) Android权限问题整理 非常全面

    Android权限系统非常庞大,我们在Android系统中做任何操作都需要首先获取Android系统权限,本文记录了所有的Android权限问题,整理一下分享给大家. 访问登记属性 android.p ...

  9. MTK Android 权限大全

    Android权限大全 1.android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SY ...

随机推荐

  1. Android 布局 中实现适应屏幕大小及组件滚动

    要实现如图的布局: 这是在eclipse可视化窗口中的截图,但实际运行在Android设备上可能出现的问题有: (1):当编辑图1中的最后一个EditText时,输入法的编辑界面会把底部的Button ...

  2. c# 两个数组比较,将重复部分去掉,返回不重复部分

    List<string> Ashuzu = new List<string>(); Ashuzu.Add("); Ashuzu.Add("); List&l ...

  3. js-shortid:优雅简洁地实现短ID

    短ID在实际运用中很广泛, 其中比较典型的运用就是短地址. 市面上肯定有不少开源的生成短ID库, 基于node.js的估计也不少. 鉴于本人已然是node.js的脑残粉(本职java开发), 很多业余 ...

  4. js替换字符串的所有示例代码

    js如何替换字符串中所有. /** * 替换字符串中所有 * @param obj 原字符串 * @param str1 替换规则 * @param str2 替换成什么 * @return 替换后的 ...

  5. GIS业务逻辑

    三维怎么加载数据文件? OpenFileDialog frm = new OpenFileDialog(); frm.Filter = "文件数据集|*.tile|多时相数据集|*.Temp ...

  6. EXTJS4.2 后台管理菜单栏

    EXTJS 代码: 第一种方法: { title: '汽车信息管理', layout: 'fit', items: [ { xtype: 'treepanel', border: 0, rootVis ...

  7. springside springmvc 的一个SB问题

    <form  id="inputForm" modelAttribute="order" action="${ctx}/myorder/orde ...

  8. Win2003+iis6部署MVC4网站的方法

    1.服务器上安装SP2 和 IIS6 2.安装.Net Framework3.5 SP1(完整安装包,包含2.0 2.0SP1,237MB那个安装包) 3.安装.Net Framework4.0 4. ...

  9. 搭建 Android 开发环境,初试HelloWorld (win7) (下) (转)

    5. 创建AVD 为使Android应用程序可以在模拟器上运行,必须创建AVD. 在Eclipse菜单中,选择  Windows -> Android Virtual Device Manage ...

  10. 用IDEA调试Play工程

    IDEA的版本是14.0.1,运行在MAC OS X Yosemite上. IDEA已经装了Scala插件,但是在新建工程中,Scala的选项中并没有Play框架,不知道什么原因. 导入Play工程 ...