Tag: android 6.0 marshmallow

用户10102和当前进程都没有android.permission.READ_PHONE_STATE

我正在尝试调用android.telecom.TelecomManager类的getCallCapablePhoneAccounts()方法。 虽然我已经添加了所需的用户权限,但我正在获取安全性exception 。 这里是我得到例外的代码行 List<PhoneAccountHandle> list = getTelecomManager().getCallCapablePhoneAccounts(); 清单中添加了用户权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> exceptionstacktrace导致:java.lang.SecurityException:getDefaultOutgoingPhoneAccount:用户10102或当前进程都没有android.permission.READ_PHONE_STATE。 在android.os.Parcel.readException(Parcel.java:1599)at android.os.Parcel.readException(Parcel.java:1552)at com.android.internal.telecom.ITelecomService $ Stub $ Proxy.getDefaultOutgoingPhoneAccount(ITelecomService.java :615)at android.telecom.TelecomManager.getDefaultOutgoingPhoneAccount(TelecomManager.java:439)

从onRequestPermissionsResult()中调用DialogFragment的show()会导致Marshmallow中的IllegalStateException

脚步: 从Fragment或Activity请求许可 在onRequestPermissionsResult()显示DialogFragment 抛出java.lang.IllegalStateException : onSaveInstanceState后无法执行此操作 这是不会发生,当我显示对话后,延迟(使用postDelayed)。 根据http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html )我们可以在onPause()和onStop()之间commit() onStop()没有任何状态丢失或EXCEPTION。 这里是一个示例项目源,日志文件和logging问题的链接。 https://drive.google.com/folderview?id=0BwvvuYbQTUl6STVSZF9TX2VUeHM&usp=sharing 另外我已经打开了一个问题https://code.google.com/p/android/issues/detail?id=190966,但它被标记为WorkingAsIntended,他们build议只是捕捉exception。 但是这并不能解决问题。 我知道解决它的其他方法,但不是这个android的bug? 更新 bug的状态再次被“分配”。 希望很快就能解决。 我的临时解决scheme是 new Handler().postDelayed(new Runnable() { @Override public void run() { // do your fragment transaction here } }, 200);

崩溃将AndroidKeyStoreRSAPrivateKey转换为RSAPrivateKey

我正在学习本教程: 如何使用Android密钥存储密码和其他敏感信息 。 它(松散地)与Google示例应用程序: BasicAndroidKeyStore绑定 。 我可以使用公钥encryption我的数据,并且可以在运行棒棒糖的设备上解密。 不过,我有一个Nexus 6运行棉花糖,这崩溃给错误: java.lang.RuntimeException: Unable to create application com.android.test: java.lang.ClassCastException: android.security.keystore.AndroidKeyStoreRSAPrivateKey cannot be cast to java.security.interfaces.RSAPrivateKey 这是它崩溃的代码: KeyStore.Entry entry; //Get Android KeyStore ks = KeyStore.getInstance(KeystoreHelper.KEYSTORE_PROVIDER_ANDROID_KEYSTORE); // Weird artifact of Java API. If you don't have an InputStream to load, you still need to call "load", or it'll crash. ks.load(null); […]

如何在Android M的单个请求中检查多个权限?

我想用这个 android.permission.CAMERA android.permission.WRITE_EXTERNAL_STORAGE 在单个请求中使用 ActivityCompat.requestPermissions(Activity activity,new String permisionList[],int permissionRequestcode); 但我的问题是我只要求一个权限,我读了关于组的权限,但是它只为开发人员决定的相同的组,像CONTACT_GROUP : read_contact,write_contact等。 我想创build自定义组的权限,只要求我一个请求,只给我一个响应。 谢谢

状态栏变成白色,并且不显示它后面的内容

我正在尝试AppCompat的棉花糖。 而我想有一个透明的状态栏,但它变成白色。 我已经尝试了几个解决scheme,但他们并没有为我工作( 透明状态栏不能用windowTranslucentNavigation =“false” , 棒棒 堂 :绘制在颜色设置为透明的statusBar后面 )。 这里是相关的代码。 我的styles.xml <style name="Bacon" parent="Theme.Bacon"/> <style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent</item> <item name="windowActionBar">false</item> <item name="windowActionBarOverlay">true</item> <item name="windowNoTitle">true</item> <item name="android:windowBackground">@color/background_material_light</item> </style> <style name="Theme.Bacon.Detail" parent="Bacon"/> V21 <style name="Bacon" parent="Theme.Bacon"> <item name="android:windowDrawsSystemBarBackgrounds">true</item> </style> <style name="Theme.Bacon.Detail" parent="Bacon"> <item name="android:statusBarColor">@android:color/transparent</item> </style> 活动 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> […]

Android Marshmallow:用Espressotesting权限?

Android Marshmallow引入的新权限scheme需要在运行时检查特定权限,这意味着需要根据用户拒绝还是允许访问来提供不同的stream程。 当我们使用Espresso在我们的应用程序上运行自动UItesting时,我们如何模拟或更新权限的状态以testing不同的场景?

更新后,允许button不起作用

在已安装Android Marshmallow最新更新的设备上 – 即2016年6月更新,当我要求权限时,ALLOWbutton不起作用。 我已经testing了这两个设备: Nexus 6p(Andoid版本 – 6.0.1,内部版本号 – MTC19V) Nexus 7(Android版本6.0.1,内部版本号 – MOB30M) 两者都有最新的更新,当我请求权限,对话框显示,但我不能够按下ALLOWbutton。 这里是我用来请求权限的代码: public void showPermissionsDialog() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int hasWriteExternalStoragePermission = activity.checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE); int hasWriteGetAccountsPermission = activity.checkSelfPermission(android.Manifest.permission.GET_ACCOUNTS); if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED || hasWriteGetAccountsPermission != PackageManager.PERMISSION_GRANTED) { activity.requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.GET_ACCOUNTS}, MainActivity.REQUEST_CODE_ASK_PERMISSIONS); } else { isAllPermissionsGranted = true; } } […]

Android 6上的存储访问如何更改?

背景 关于如何处理SD卡和存储,Android有了很多变化: API 3 – 您获得所有访问权限,不需要任何权限 API 4-15 – 您需要使用WRITE_EXTERNAL_STORAGE,并获得所有权限。 API 16-18 – 如果您只想阅读,请使用READ_EXTERNAL_STORAGE API 19-20 – 除非您的应用程序是系统应用程序,否则您无法读取或写入辅助外部存储(SD卡),或者您拥有root用户。 API 21-22 – 为了访问SD卡,您需要向用户请求权限,并使用DocumentFile API而不是File API。 这引发了很多问题,正如我在这里和这里写的 。 从API 23开始(Android 6),事情似乎又改变了… 问题 对于API 23,至less有两件新事物是与存储相关的: “ 可采用的存储设备 ” – 用户可以select将SD卡作为主外部存储设备。 作为新的权限机制 (在运行时请求权限)的一部分,似乎存储也是用户需要确认的权限。 这适用于READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE 由于没有安装SD卡的Android 6设备,而且由于模拟器本身并不具备使用SD卡的能力,所以仍然不可能知道发生了什么。 问题 SD卡是否使用File-API而不是DocumentFile访问? 如果我想要访问所有的外部存储path(包括SD卡),这是否意味着我需要两次请求这个权限:一个用于主外部存储,一个用于SD卡? 在手动授予权限之前,SD卡上的文件是否可以以任何方式访问? 假设用户select使用“可采用的存储设备”,这对于检索应用文件path的各种function意味着什么? 例如:getFilesDir,getExternalFilesDir,…? getExternalFilesDirs的oder会因为它而改变吗? 当用户将应用程序从SD卡上移动到SD卡时(使用“可采用的存储设备”),应用程序的文件会发生什么变化? 关于SD卡上的应用程序文件呢? 他们会留下吗? 或者他们会搬到什么地方? 例如,如果应用程序在SD卡上具有“file1.txt”,则path为“/ storage […]

Android M权限对话框不显示

我目前正在尝试使我的应用程序适应Android M的新权限模型。 我正在收集所有我需要的权限,然后运行 Log.i("Permissions", "Requesting permissions: " + permissions); requestPermissions(requiredPermissions.toArray(new String[requiredPermissions.size()]), requestCodeForPermissions); requiredPermissions拥有我需要的权限像android.permission.WRITE_EXTERNAL_STORAGE 。 那个例程是肯定执行的,因为我在logcat中有Log行: 08-07 12:52:46.469: I/Permissions(1674): Requesting permissions: android.permission.RECEIVE_BOOT_COMPLETED; android.permission.WRITE_EXTERNAL_STORAGE 但是权限对话框从不显示,更不用说是调用onRequestPermissionsResult()了。 我究竟做错了什么? 基于一些教程,我发现我不会错过任何东西。 我只有模拟器进行testing,没有物理设备。 这是来自设置的关于屏幕: 图像 这可能是值得一提的别的:如果我尝试从主屏幕打开已安装的应用程序的概述,我只得到launcher3 has exited 。 我不确定这可能是相关的。 有没有人知道为什么它没有显示?

Android应用程序在卸载并重新安装后会记住它的数据

在开发一款面向4.1以上版本的Android应用程序时,我发现卸载我的应用程序并重新安装它并不能清除它的数据。 该应用程序旨在存储它在第一屏中提出的细节。 在操作系统版本4.4.4中再次卸载并安装后,应用程序会提示用户填写数据,这是正常的。 但是,在6.0版本中,相同的安装/卸载序列将带回原始input的数据。 我试图通过访问/data/data/my package folder来确保卸载后数据库已经消失,而且确实在卸载过程中删除了该文件夹。 我尝试通过Titanium Backup访问设置页面来删除应用程序,结果相同。 该设备是根植Nexus 5运行v6.0。 这个奇怪的行为可能是什么原因?