Articles of android 6.0 marshmallow

应用程序如何在没有root的情况下访问Android 6.0(API级别23)中的USB OTG存储上的文件?

Android 6.0开发人员预览版(API级别23)可以在没有任何其他应用程序的情况下本机安装外置可移动USB OTG存储空间(有关详细信息,请参阅: https : //goo.gl/0UvsyN )。 当用户连接USB OTG存储时,它会显示在系统存储菜单中,并可通过内置文件管理器访问。 用户可以使用没有root权限的新内置文件管理器访问USB OTG外部存储器上的所有文件。 当我将USB OTG存储连接到我的Android设备时,它安装在/storage/A03E-1DF5以及/mnt/media_rw/A03E-1DF5 ,但是访问此文件夹需要root权限。 我正在研究Android媒体播放器应用。 是否有可能以及如何在我的应用程序中访问Android 6.0上的USB OTG存储上的文件,如没有root权限的内置文件管理器? PS我已在我的应用程序中使用checkSelfPermission和requestPermissions函数,我的应用程序已经有android.permission.READ_EXTERNAL_STORAGE和android.permission.WRITE_EXTERNAL_STORAGE (有关详细信息,请参阅: https : //goo.gl/i83BN2 ),但看起来像这些权限仅影响内部存储(MicroSD),而对于USB OTG,则没有这样的细化权限。

Android M:以编程方式撤消权限

我目前正在玩android m的新权限系统。 我计划的是在我的应用内设置中添加一个屏幕,用户可以在其中授予或撤消权限。 屏幕看起来像常规系统设置屏幕,但会有其他信息,为什么我的应用程序需要特定权限。 此设置屏幕将是文档中建议的常规权限处理的补充。 工作流程将是: 授予权限:打开系统对话框以授予/撤消( 如此处建议的那样 ) 撤消权限:以编程方式撤消它 所以我的问题是,可以以编程方式撤销权限吗? 我搜索了很多,但没有得到一些结果。

在Android M上,如何配置“直接共享”function(图像,文本)以及如何查询项目?

背景 根据Android M上的新function( 此处链接),应用程序外部的应用程序可以提供直接分享其活动之一的意图,例如,允许聊天应用程序将内容分享给确切的联系人,因此您同时选择聊天应用程序和联系人(一步而不是两步)。 这可以在这张图片上显示: 或者,至少这是我从中理解的。 这个问题 关于这个新function,我有两个问题: 在描述中,它们只显示清单中的内容,并提及使用“ChooserTargetService”。 为了提供文本和图像应该做些什么? 我想知道如何做相反的事情:如何查询所有这些“直接共享”项目(图像,文本和意图)并能够在自定义对话框中显示它们? 我想这样做,因为我自己有一个自定义对话框,允许选择分享内容和方式,而不仅仅是通过哪个应用程序。

打盹/待机function如何影响位置更新?

有人知道当设备处于打盹或应用处于待机状态时,持有部分唤醒锁定的白名单应用是否可以接收位置更新? Android文档( http://developer.android.com/training/monitoring-device-state/doze-standby.html )仅声明CPU和网络延迟,并且未提及对位置更新的任何影响(即来自LocationManager) )。 基于此,似乎位置更新不受Doze / Standby的影响,因此如果应用程序持有部分唤醒锁定(以保持CPU运行),则应用程序应该能够接收位置更新。 我已经实现了这个并对其进行了测试,发现应用程序似乎没有在Doze中接收位置更新,即使它具有部分唤醒锁定并列入白名单。 有趣的是,当我一夜之间将设备放在我的办公桌上并使用唤醒锁运行应用程序时,早上电池几乎是空的,但是当重复使用没有唤醒锁定的应用程序时,电池在早上几乎已满。 所以看起来应用程序一直在运行,但没有收到位置更新。 一些额外的背景:该应用程序用于车队跟踪,所以我们试图找出一个应用程序是否有运行的后台服务可靠地接收位置更新时使用电池供电。 谢谢! -Tom B.

checkSelfPermission使用targetSdkVersion <= 22返回PERMISSION_GRANTED以获取已撤销的权限

我正在研究Android Marshmallow的新权限模型,但我遇到了一个我觉得很奇怪的问题。 使用targetSdkVersion 22的应用程序(因此尚未使用Android Marshmallow的新权限模型)在清单中声明READ_CONTACTS权限: 并尝试通过Intent.ACTION_PICK读取联系人的电话号码: Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(intent, PICK_CONTACT_REQUEST); 在使用Marshmallow MRA58K的设备上运行时,在通过ADB安装应用程序后撤销权限后, ContextCompat.checkSelfPermission()方法仍然返回PERMISSION_GRANTED ,但是访问联系人后操作失败,因为返回了没有记录的游标。 据我所知,这是默认的“逆向兼容性”策略,以避免遗留应用程序崩溃。 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PICK_CONTACT_REQUEST && resultCode == Activity.RESULT_OK) { Log.i(“”, “Permission granted: ” + (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED)); Uri contactUri = data.getData(); Cursor c = null; […]

Android API-23:InetAddressUtils替换

切换到Android Marshmallow API,我在代码中使用org.apache.http.conn.util.InetAddressUtils for InetAddressUtils.isIPv4Address(ipAddress)列出设备中的所有IP。 作为API-23更改的一部分 , InetAddressUtils类现已消失。 我现在如何替换以下代码? public static String ipAddress() { try { for (final Enumeration enumerationNetworkInterface = NetworkInterface.getNetworkInterfaces(); enumerationNetworkInterface.hasMoreElements();) { final NetworkInterface networkInterface = enumerationNetworkInterface.nextElement(); for (Enumeration enumerationInetAddress = networkInterface.getInetAddresses(); enumerationInetAddress.hasMoreElements();) { final InetAddress inetAddress = enumerationInetAddress.nextElement(); final String ipAddress = inetAddress.getHostAddress(); if (! inetAddress.isLoopbackAddress() && InetAddressUtils.isIPv4Address(ipAddress)) { return ipAddress; } […]

为Android M权限对话框提供自定义文本

是否可以为系统对话框提供自定义文本,该对话框在要求用户授予权限时显示?

android:相机不会在棉花糖中打开

所以,我有以下代码打开相机,捕获图像并将其保存在SDCard上。 public void getPhotoFromCamera() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File mediaStorageDir = new File( Environment.getExternalStorageDirectory() + File.separator + getString(R.string.directory_name_corp_chat) + File.separator + getString(R.string.directory_name_temp) ); if (!mediaStorageDir.exists()) { mediaStorageDir.mkdirs(); } String timeStamp = new SimpleDateFormat(“yyyyMMdd_HHmmss”, Locale.getDefault()).format(new Date()); try { mediaFile = File.createTempFile( “TEMP_FULL_IMG_” + timeStamp, “.jpg”, mediaStorageDir ); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mediaFile)); startActivityForResult(takePictureIntent, PICK_FROM_CAMERA); } catch (IOException […]

模拟器未在Android Studio上运行

我试图在Android Studio上运行模拟器,但它没有启动。 我有Android工作室(版本23 marshmallow),配置 minSdkVersion 21 targetSdkVersion 23 当我在模拟中运行我的应用程序(nexus 5x api 23 android 6.0)时,我收到以下错误: 等待设备时出错:AVD Nexus_5X_API_23的仿真程序进程被终止。 请问有人可以帮我吗?

在Marshmallow中获取蓝牙本地mac地址

Pre Marshmallow我的应用程序将通过BluetoothAdapter.getDefaultAdapter().getAddress().获取它的设备MAC地址BluetoothAdapter.getDefaultAdapter().getAddress(). 现在使用Marshmallow Android将在02:00:00:00:00:00 。 我看到一些链接(抱歉不知道现在在哪里)说你需要添加额外的权限 能够得到它。 但它不适合我。 获取mac地址需要一些额外的权限吗? 我不确定这是否相关,但清单还包括 那么有没有办法获得本地蓝牙mac地址?