Android6.0运行时权限回调不执行的手机
2017-01-10 23:38
162 查看
使用android第一行代码(第二版)7.2节关于运行时权限的代码时,发现在真机魅族PRO6时若第一次在弹出的是否授权对话框中拒绝授权,则下次重新启动则不会再弹出是否授权对话框,并且此后状态为未授权状态!而模拟器三星手机则可正常弹出对话框。
早就了解过6.0加了个运行时权限,拿着我6.0系统的魅族手机测试了一下,发现压根就没任何区别和以前,回调方法都不执行。
检查了没发现哪里写错了,就想到了估计是被魅族自己屏蔽了把然后继续沿用自家的权限管理方法。然后去测试了一下主流的手机,
在我测试的机子中 {魅族,一加,小米,锤子,奇酷,htc}或多或少的改了,有魅族一样回调压根不执行的,也有执行了回调不管你同不同意,
直接返回同意,然后再弹出自家的权限管理窗口再次授权的。 {乐视
三星 lg 摩托罗拉 努比亚 中兴}在我测试中是正常的。
当然相同品牌手机可能型号不同版本不同可能会有不同。
运行时权限并不意味着可以不在AndroidManifest.xml中声明相关权限,若未声明,在下面的代码示例中若点击按钮,则程序将自动退出,
且无Exception提示。运行时权限的作用只是在用户安装时拒绝授权之后安装仍然能进行下去,待安装完成后使用到相关功能时若需此权限,
手动requestPermission(),而不是像android6.0之前那样不能继续安装。
AnroidManifest.xml
MainActivity.java
早就了解过6.0加了个运行时权限,拿着我6.0系统的魅族手机测试了一下,发现压根就没任何区别和以前,回调方法都不执行。
检查了没发现哪里写错了,就想到了估计是被魅族自己屏蔽了把然后继续沿用自家的权限管理方法。然后去测试了一下主流的手机,
在我测试的机子中 {魅族,一加,小米,锤子,奇酷,htc}或多或少的改了,有魅族一样回调压根不执行的,也有执行了回调不管你同不同意,
直接返回同意,然后再弹出自家的权限管理窗口再次授权的。 {乐视
三星 lg 摩托罗拉 努比亚 中兴}在我测试中是正常的。
当然相同品牌手机可能型号不同版本不同可能会有不同。
运行时权限并不意味着可以不在AndroidManifest.xml中声明相关权限,若未声明,在下面的代码示例中若点击按钮,则程序将自动退出,
且无Exception提示。运行时权限的作用只是在用户安装时拒绝授权之后安装仍然能进行下去,待安装完成后使用到相关功能时若需此权限,
手动requestPermission(),而不是像android6.0之前那样不能继续安装。
AnroidManifest.xml
<? 4000 xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.runtimepermissiontest"> <uses-permission android:name="android.permission.CALL_PHONE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
MainActivity.java
//Intent.ACTION_CALL需要声明android.permission.CALL_PHONE,而Intent.ACTION_DIAL不需要!
package com.example.runtimepermissiontest; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button makeCall = (Button) findViewById(R.id.make_call); makeCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(ContextCompat.checkSelfPermission(MainActivity.this , Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.CALL_PHONE} , 1); } else { call(); } } }); } private void call() { try { Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:10010")); startActivity(intent); } catch (SecurityException e) { e.printStackTrace(); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { call(); } else { Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show(); } break; default: } } }
相关文章推荐
- android6.0运行时权限回调没执行
- Android6.0运行是权限在某些手机适配问题(小米手机)
- 通过回调函数 调用parent窗体 关闭子窗体 因为没有运行完需要的函数 回调关闭会出错 需要延时执行
- apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
- android6.0之下apk运行正常,6.0之后突然一直报需要某个权限且apk崩溃
- Android6.0运行时权限解析
- 在Android6.0手机上,已声明却无法获取READ_PHONE_STATE权限
- 关于运行VBS文件提示“没有在该机执行windows脚本宿主的权限。请与系统管理员联系。”错误的解决方法
- 谈谈Android6.0运行时的权限处理
- Android开发学习之路-Android6.0运行时权限
- Android6.0运行时权限处理详解
- Android6.0 新运行时权限
- 批处理命令执行顺序问题与以管理员权限运行命令的手记
- Android6.0之运行时权限
- Android6.0 运行时权限(runtime permission)
- Android6.0 运行时权限
- apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
- Android6.0运行时权限模板
- window IIS6/IIS7取消脚本执行权限,禁止运行脚本木马
- Android6.0运行时权限的便捷解决方案