我最近更新到Android Marshmallow.在开发人员选项中,我找到了一个新选项"选择USB配置",其子选项如
我使用了前三个选项"仅充电",MTP和PTP.但最后3个选项如何运作?
我尝试使用"Audio Source",我认为这个选项旨在将您的手机用作音频采购的USB主机,但我仍然无法弄清楚它是如何工作的?
我试图从存储中读取图像路径,我在这里继续获取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
我正在尝试调查办公室的应用程序需要更改其权限,以便很好地支持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
我开发了一个应用程序并支持Android 6.0。当我在“设置”->“应用程序”->“重置应用程序首选项”中重置应用程序首选项时,我的应用程序的所有权限都被吊销,并且该应用程序未重新启动。撤消其权限后无法重新启动该应用程序可能会导致许多意外崩溃。
我应该如何处理这种情况?
当我手动撤消其权限(设置->应用程序->我的应用程序->权限)时,该应用程序将重新启动。
permissions android android-permissions android-6.0-marshmallow
自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 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
我收到了来自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
在棉花糖中,添加了ART的AOT编译器。从Android N起,除了AOT外,还添加了另一个编译器JIT。
什么是AOT编译器特定的作业/功能,什么是JIT编译器的作业/功能?
我正在尝试引导用户进行电池优化活动,它似乎对大多数用户都有效,除了一些获得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)
知道我应该在这些手机上启动什么吗?
谢谢。
我正在尝试从第三方应用程序(例如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