标签: android-6.0-marshmallow

Android M中的Developer选项中的Audio Source选项

我最近更新到Android Marshmallow.在开发人员选项中,我找到了一个新选项"选择USB配置",其子选项如

  • 仅充电
  • MTP
  • PTP
  • RNDIS(USB以太网)
  • 音频源
  • MIDI

我使用了前三个选项"仅充电",MTP和PTP.但最后3个选项如何运作?

我尝试使用"Audio Source",我认为这个选项旨在将您的手机用作音频采购的USB主机,但我仍然无法弄清楚它是如何工作的?

android android-6.0-marshmallow

5
推荐指数
1
解决办法
1688
查看次数

无法请求READ_EXTERNAL_STORAGE权限

我试图从存储中读取图像路径,我在这里继续获取SecurityException:

Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=31409, uid=10053 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
Run Code Online (Sandbox Code Playgroud)

我正在编译反对api 23并且在我的Manifest中明确说明了我的Manifest的直接子项.我也理解新的运行时权限声明,当您想要访问存储时,您必须在运行时请求权限.当我写这行开始检查权限时,我得到一个无法在IDE中解决的问题:

ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
Run Code Online (Sandbox Code Playgroud)

无法解析符号Manifest.permission.READ_EXTERNAL_STORAGE.我可以在我的代码中明确说明的唯一Manifest.permission是Manifest.permission.C2D_MESSAGE而没有得到无法解决的错误.还有其他我需要编译才能访问代码中的其他权限吗?

要清楚这是给我SecurityException的代码块:

public List<String> getCameraImagesFull(Context context) {
        Cursor cursor = null;
        String[] star = {"*"};
        ArrayList<String> result = new ArrayList<>();
        cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, star, null, null, MediaStore.MediaColumns.DATE_ADDED + " DESC");
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                do {
                    String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
                    result.add(path);
                } while (cursor.moveToNext());
            }
            cursor.close();
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

这是抛出异常的行:

cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, star, …
Run Code Online (Sandbox Code Playgroud)

android mediastore android-permissions android-6.0-marshmallow

5
推荐指数
1
解决办法
4970
查看次数

为什么Android 6上没有授予GCM权限?

背景

我正在尝试调查办公室的应用程序需要更改其权限,以便很好地支持Android 6.

问题

我发现哪个权限需要确认,哪个不是,除了一个:

<uses-permission android:name=".permission.C2D_MESSAGE"/>
Run Code Online (Sandbox Code Playgroud)

看来这个权限在我找不到的任何地方都没有提到,因为它没有被自动授予,但我无法找到用户可以将其作为确认启用的位置.

我尝试了什么

为了找到默认授予的权限,哪些不是,我只是调用了这段代码:

private void checkPermissionsOfApp(String packageName) {
    PackageManager pm = getPackageManager();
    try {
        final ApplicationInfo applicationInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
        Log.d("AppLog", "Listing all permissions of app with PackageName: " + applicationInfo.packageName);
        PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);
        //Get Permissions
        String[] requestedPermissions = packageInfo.requestedPermissions;
        if (requestedPermissions != null) {
            for (String permission : requestedPermissions) {
                boolean permissionGranted = pm.checkPermission(permission, packageName) == PackageManager.PERMISSION_GRANTED;
                Log.d("AppLog", "permission:" + permission + " permissionGranted:" + permissionGranted);
            }
        }
    } catch …
Run Code Online (Sandbox Code Playgroud)

permissions android google-cloud-messaging android-6.0-marshmallow

5
推荐指数
1
解决办法
3242
查看次数

按“重置应用程序首选项”后,我的应用程序的所有权限都被撤消

我开发了一个应用程序并支持Android 6.0。当我在“设置”->“应用程序”->“重置应用程序首选项”中重置应用程序首选项时,我的应用程序的所有权限都被吊销,并且该应用程序未重新启动。撤消其权限后无法重新启动该应用程序可能会导致许多意外崩溃。

我应该如何处理这种情况?

当我手动撤消其权限(设置->应用程序->我的应用程序->权限)时,该应用程序将重新启动。

permissions android android-permissions android-6.0-marshmallow

5
推荐指数
1
解决办法
4049
查看次数

Android Marshmallow ART“未能找到dex的本机偏移”崩溃

自2015年12月以来,我们仅在少数运行Android 6.0和6.0.1的设备上遇到奇怪的崩溃。其中大多数是Nexus 5。

首先,崩溃日志从Play商店中提取。从art_method.cc来看,似乎某种方法到本机代码的映射失败。也许是编译引起的?

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/hammerhead/hammerhead:6.0.1/MMB29Q/2480792:user/release-keys'
Revision: '0'
ABI: 'arm'
pid: 18737, tid: 18737, name: omittedapp  >>> com.omitteddomain.omittedapp <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'art/runtime/art_method.cc:245] Failed to find native offset for dex pc 0x58 in android.view.View com.omitteddomain.omittedapp.PlotWidget.a(android.view.ViewGroup, android.view.LayoutInflater, java.util.List)'
    r0 00000000  r1 00004931  r2 00000006  r3 b6f24b7c
    r4 b6f24b84  r5 b6f24b34  r6 00000001  r7 0000010c
    r8 b4c3f800 …
Run Code Online (Sandbox Code Playgroud)

android android-6.0-marshmallow

5
推荐指数
0
解决办法
953
查看次数

在Android M应用链接中处理特定路线

Android M 通过在Web服务器上创建特殊的assetlinks.json来将链接处理委派给移动应用,从而增加了对应用链接的支持。

例如,这是该文件的内容:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.costingtons.app",
    "sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:"
     "A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]
Run Code Online (Sandbox Code Playgroud)

当前,该关系被定义为common.handle_all_urls意味着任何URL将被路由到该应用。

我希望该应用程序打开特定的路线,例如https://costingtons.com/products/a-product将在应用程序中打开,而https://costingtons.com将打开网络版本。

Apple Universal Links类似的配置文件可以定义要在应用中打开的路径,并且语法支持模式匹配等/products/*

有什么办法可以通过Android中的App Link做类似的事情吗?

android applinks android-6.0-marshmallow digital-assets-links

5
推荐指数
2
解决办法
1216
查看次数

读取com.google.android.apps.photos.contentprovider.MediaContentProvider要求导出提供程序,或grantUriPermission()

我收到了来自Android 6.0.1用户的崩溃报告:

STACK_TRACE=java.lang.SecurityException: Permission Denial: reading com.google.android.apps.photos.contentprovider.MediaContentProvider uri content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F19181/ORIGINAL/NONE/443149508 from pid=18891, uid=10128 requires the provider be exported, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1620)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:692)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1104)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942)
at android.content.ContentResolver.openInputStream(ContentResolver.java:662)
at fr.free.nrw.commons.upload.UploadService.uploadContribution(UploadService.java:176)
at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:114)
at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:27)
at fr.free.nrw.commons.HandlerService$ServiceHandler.handleMessage(HandlerService.java:19)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)

从周围看,这似乎与Google相册许可有关com.google.android.apps.photos.permission.GOOGLE_PHOTOS。我的清单中已经具有此权限,但是该用户正在运行API 23,该API需要运行时权限。

问题是,如何为此调用运行时权限?我知道如何针对https://developer.android.com/training/permissions/requesting.html#perm-check所述的标准权限执行此操作,但是当我尝试执行此操作时

ActivityCompat.requestPermissions(thisActivity,
                    new String[]{com.google.android.apps.photos.permission.GOOGLE_PHOTOS},
Run Code Online (Sandbox Code Playgroud)

它不会编译。

我需要在运行时请求才能从Google相册访问图像的权限的名称是什么?

android android-permissions google-photos android-6.0-marshmallow

5
推荐指数
1
解决办法
7782
查看次数

ART中AOT和JIT编译器之间的区别

在棉花糖中,添加了ART的AOT编译器。从Android N起,除了AOT外,还添加了另一个编译器JIT。

什么是AOT编译器特定的作业/功能,什么是JIT编译器的作业/功能?

android jit android-6.0-marshmallow android-7.0-nougat

5
推荐指数
2
解决办法
3134
查看次数

android.content.ActivityNotFoundException“ android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS”

我正在尝试引导用户进行电池优化活动,它似乎对大多数用户都有效,除了一些获得Android 6的三星手机,我可以得到:

Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS }
Run Code Online (Sandbox Code Playgroud)

这是我用来启动它的:

Intent intent = new Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

知道我应该在这些手机上启动什么吗?

谢谢。

android android-6.0-marshmallow

5
推荐指数
1
解决办法
1111
查看次数

Android:通过content:// URI从第三方应用程序(例如WhatsApp)获取图像位图

我正在尝试从第三方应用程序(例如WhatsApp)到我的应用程序(正在棉花糖上测试)的图像。当我从WhatsApp中“共享图像”并与我的应用程序共享时,我得到的URI如下所示:

content://com.whatsapp.provider.media/item/61025
Run Code Online (Sandbox Code Playgroud)

但是在我的应用中,当我调用getContentResolver().openInputStream(uri)getContentResolver().openFileDescriptor(uri, "r")使用上面的URI时,它崩溃并发生以下异常:

java.lang.SecurityException:权限拒绝:从ProcessRecord {a4b804a 30321:com.myapp / u0a145}(pid = 30321,uid = 10145)打开未从uid 10083导出的提供者com.whatsapp.MediaProvider

到目前为止我尝试过的

我在SO上查找此异常,并发现了类似的问题,但要从Google相册导入图像,并需要添加权限,例如:

<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>

但这并不让您感到困惑,因为可能有许多应用程序,并且需要为每个应用程序或其他内容添加权限。

在其他一些答案中,建议立即从内容提供者读取/复制数据。但不确定如何。因为我openInputStream本身就有例外。

我还必须提到,WhatsApp图像可以成功与其他应用程序(例如Google云端硬盘)共享,因此必须有某种方法可以做到这一点。

请有人可以提供共享提示或可行的解决方案吗?

android android-contentresolver android-permissions android-6.0-marshmallow

5
推荐指数
1
解决办法
2万
查看次数