相关疑难解决方法(0)

Android预览M:在权限授予后重新创建活动

我使用预览M并测试我的应用程序,特别是"将文件保存到外部存储"部分.在下载/保存过程开始之前,我请求

  Manifest.permission.WRITE_EXTERNAL_STORAGE
Run Code Online (Sandbox Code Playgroud)

开发者页面上描述的权限:https://developer.android.com/preview/features/runtime-permissions.html

对话框按预期发生:

"Allow <AppName> to access photos, media, and files on your device?" Deny / Allow
Run Code Online (Sandbox Code Playgroud)

如果我点击"拒绝"按钮,则调用活动的onRequestPermissionsResult方法.

如果我按下"允许"按钮,则首先重新创建活动,然后调用onRequestPermissionsResult方法.我认为这是获得许可的结果.

但第二种情况很棘手,因为我想触发一个开始下载的回调,但此时此对象为null:

public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {

    getLogger().error("onRequestPermissionsResult ( " + requestCode + ", " + permissions + ", " + grantResults + " )");
    switch (requestCode) {


        //permission for saving files?
        case PermissionCode.WRITE_EXTERNAL_STORAGE: {


            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                //HERE IS THE NULL-OBJECT 
                if (controller != null) {

                    controller.triggerCallback();
                }
            }
            break;
        } …
Run Code Online (Sandbox Code Playgroud)

permissions android preview android-activity

13
推荐指数
1
解决办法
6426
查看次数

从Android M nexus 6上的设置启用/禁用权限后,应用程序将被杀死

启用/禁用来自Settings-> apps-> my app-> Permissions的权限后,应用程序将重新启动.Adb可以看到与权限相关的应用操作已更改...,

08-31 14:30:29.480 I/ActivityManager( 8206): Displayed com.google.android.packageinstaller/com.android.packageinstaller.permission.ui.ManagePermissionsActivity: +392ms

08-31 14:30:29.496 D/OpenGLRenderer(15990): endAllStagingAnimators on 0x9a60bd80 (ListView) with handle 0x97d4c1f0

08-31 14:30:30.477 D/audio_hw_primary( 7972): out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2

08-31 14:30:30.522 D/AudioFlinger( 7972): mixer(0xb3ec0000) throttle end: throttle time(5)

08-31 14:30:31.298 I/ActivityManager( 8206): Killing 28808:com.sample.ui/u0a109 (adj 2): Permission related app op changed
Run Code Online (Sandbox Code Playgroud)

permissions application-restart android-6.0-marshmallow

7
推荐指数
1
解决办法
4541
查看次数

Android Marshmallow:运行应用程序的权限更改

我知道,使用Android Marshmallow,每次我们需要一个需要权限的功能时,我们都必须询问权限.

我为新的应用程序执行此操作,但对于旧的BIG应用程序更复杂.

对于旧的BIG App,我要求"MainActivity"中的所有权限.

所以,我的应用程序启动并显示一个Map Fragment.我没有问题请求位置许可.用户同意.

用户将其置于后台,进入应用程序设置并拒绝权限.然后他把应用程序放在前台:应用程序崩溃!!

我知道,使用Map Fragment时出现问题.

但该应用程序太大,无法分析每一个权限.

我需要快速解决方案:允许更改--->重启APP!

这就是GoogleMaps的作用!

我创建了GoogleMaps,并将其置于后台.

GoogleMaps App权限,第一个区别:

在我的应用程序中,如果我拒绝了许可,我没有显示Google地图的此消息:

没有权限

之后,如果我将GoogleMaps放在前台,应用程序重新启动没有问题:

GoogleMaps重启

我的应用需要这个.有人能帮我吗?!?!?!?

非常感谢!!

android android-permissions android-6.0-marshmallow

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

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

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

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

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

permissions android android-permissions android-6.0-marshmallow

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

为什么要等待调试器然后附加调试器来处理?

有什么意义

android.os.Debug.waitForDebugger();
Run Code Online (Sandbox Code Playgroud)

我知道我们 [有时] 需要使用此函数来调试 a Service,但我的问题是:

  • 为什么我们必须这样做?
  • 为什么存在这种方法?它还有什么其他用途?
  • 将调试器附加到进程是什么意思,为什么我们必须这样做?为什么 aService必须以这种方式调试,而不是 an Activityor BroadcastReceiver

有人会认为在项目中调试任何类型的代码都很简单。除了它不是。Service反正不是为了。

这个特殊程序存在的原因是什么?它还有什么用途?

在此处输入图片说明

等待调试器连接。一旦调试器附加,它就会返回,所以如果你想立即开始跟踪,你需要在 waitForDebugger() 调用之后放置一个断点。

为什么仍然没有答案。

更新

我发现了此功能的一个用例:当应用程序进程终止后自动重启 Android 应用程序时。当用户在应用程序设置中切换运行时权限时,该进程将被终止。更一般地说,一个应用程序进程被杀死并重新启动,只要...

android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)

叫做。

要在进程重新启动后调试应用程序,请编写android.os.Debug.waitForDebugger()代码,然后将调试器附加到当前进程。

Android:如何调试应用程序的启动过程

这是此功能的一个用例。

参考资料

调试服务

在 Android Studio 中调试服务的正确方法?.

服务中的断点不起作用

如何调试 Android 后台服务?.

如何调试服务?.

如何附加调试器从第一行开始处理,而无需每次都编译代码

您可以在应用程序打开后附加调试器

可能相关

每次调试运行时禁用辅助功能服务

在 Intellij 中使用 Java 调试器时,“丢帧”是什么意思?

配置设备上的开发人员选项

测试您的服务

强制应用程序从第一个 …

android android-service android-testing android-debug android-developer-api

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