标签: android-6.0-marshmallow

自动验证的链接是否缓存在Android M中?

我目前正在运行一些测试,以查看经过验证的链接系统如何与Android M配合使用并遇到有趣的结果。通常的流程是这样的:

  • 安装软件
  • 触发$ {HOST} /。well-known / statements.json
  • 如果批准(服务器已启动,密钥有效,等等),则所有已验证的链接将深度链接到应用程序

当服务器关闭时,我们看到此

  • 安装软件
  • 触发$ {HOST} /。well-known / statements.json
  • 未批准,链接显示弹出窗口
  • 卸载并重新安装应用
  • 触发$ {HOST} /。well-known / statements.json

但是,如果服务器在初次验证后出现故障,我们会发现一些有趣的现象

  • 安装软件
  • 触发$ {HOST} /。well-known / statements.json
  • 批准的深层链接
  • 关闭服务器
  • 卸载应用程序并重新安装应用程序
  • 没有网络通话

如果我们在重新安装之前等待了一段时间,则将进行网络调用,一切正常。似乎自动验证数据和/或应用程序->链接数据被缓存在未被应用程序卸载破坏的地方。

  • 这是预期的行为吗?
  • 为什么会发生这种情况,而不是总是命中服务器?
  • 如果不通过应用程序将其缓存在哪里?

mobile android caching applinks android-6.0-marshmallow

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

Android M - GoogleAccountCredential setSelectedAccount不起作用 - 名称不能为null

在Android M-Preview GoogleAccountCredential.setSelectedAccount上似乎不起作用.

在调试时,我注意到在调用该方法之后,对象的selectedAccountaccountName字段仍为null.

在调试时你可以看到我的变量accountName不为空或为null,我调用了.setSelectedAccountName(),但正如您在调试窗口中看到的那样,GoogleAccountCredential中的字段仍为空.

调试窗口代码 调试窗口调试值

我认为这可能与某些权限有关?在我的清单上,我声明了以下权限:

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

我知道GET_ACCOUNTS您在M上免费获得的许可(根据https://developer.android.com/preview/features/runtime-permissions.html#normal),但其他两个权限对于M-"未知"预习.也许吧,那就是那个?

android google-play-services android-6.0-marshmallow

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

与其他应用共享数据时Android M的权限

似乎只有在其他应用程序手动询问READ_EXTERNAL_STORAGE权限时才能将数据共享到Android M上的其他应用程序,我想知道是否有人知道解决此问题的方法,而无需手动打开我可以共享的所有应用程序并选择存储权限.

例如,我有以下Intent来共享一些数据:

  Intent shareIntent = new Intent(Intent.ACTION_SEND);
  shareIntent.setType("image/*");
  shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Some Image Subject");
  shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(someFile));
  startActivity(Intent.createChooser(shareIntent, "Share via..."));
Run Code Online (Sandbox Code Playgroud)

假设someFile存在且我已经按照http://developer.android.com/training/permissions/requesting.html上建议的运行时权限模型进行操作,并且用户同意允许我的权限,因此文件实际上是在系统.

有没有办法告诉我正在分享的应用程序,我已经将此权限授予我的用户,请您代表我授予此权限?

这不起作用:

  shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Run Code Online (Sandbox Code Playgroud)

根据文件:

int FLAG_GRANT_READ_URI_PERMISSION

如果设置,则此Intent的接收者将被授予对Intent数据中的URI和其ClipData中指定的任何URI执行读取操作的权限.

更有趣的是,如果设置此标记并且我与Gmail共享,则不会检测到该标记,并且Google不会提示请求权限,而是仅捕获异常并且不附加我的文件.

任何帮助,将不胜感激.

android android-sharing android-6.0-marshmallow

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

用于访问图库的Android 6运行时权限

我对Android 6(Marshmallow)运行时权限有疑问.如果用户想要从图库中选择照片,我们是否应该请求READ_EXTERNAL_STORAGE许可?

好像我可以访问图库,即使我关闭存储权限.

android-gallery android-external-storage android-6.0-marshmallow runtime-permissions

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

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
查看次数

“允许[应用名称]拨打和管理电话”权限和READ_PHONE_STATE

我有一个专为Android开发的Unity应用(v5.2.4),正在寻求对Android(v6.0.1)上的“拨打和管理电话”的许可。做一些研究,似乎它可能与READ_PHONE_STATE有关。

因此,在构建apk之后,我取消了READ_PHONE_STATE权限,将其重新打包,消息不再出现。

我不确定100%是否将READ_PHONE_STATE放入应用中,团结论坛说READ_PHONE_STATE是在unity v5.2中删除的。

该应用程序还使用Urban飞艇,对READ_PHONE_STATE进行grep显示城市飞艇bin文件。

$ grep "READ_PHONE_STATE" -Rl . 
./Submodules/ua-unity-plugin/build/intermediates/lint-cache/api-versions-6-23.0.1.bin
Run Code Online (Sandbox Code Playgroud)

我想知道的是,将许可放入清单中是什么?

android unity-game-engine android-manifest android-permissions android-6.0-marshmallow

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

在Android Marshmallow中接收UDP

我在使用新的Nexus 5X(Marshmallow)不断收到来自服务器的UDP数据包时遇到问题

我有另一个真正的设备接收所有UDP数据包,但似乎在Android API 23中发生了一些变化.

码:

谁有同样的问题?

                        if (s == null || s.isClosed()){


                            Log.v("udp", "----------------------------------------------------new socket---------------------------------");


                            s = new DatagramSocket(null);
                            s.setReuseAddress(true);
                            s.setBroadcast(true);
                            s.setSoTimeout(5000);
                            s.bind(new InetSocketAddress(8002));
                            p = new DatagramPacket(message, message.length);

                            try{
                                Thread.sleep(100);
                            }
                            catch(Exception e){

                            }
                        }



                        //Log.v("test","---------------------------------------------------- Pas1 ---------------------------------");
                        message = new byte[100];
                        //p = new DatagramPacket(message, message.length);
                        p.setLength(message.length);

                        s.receive(p);
Run Code Online (Sandbox Code Playgroud)

问题是:

我随机收到广播包,同时收到我收到的其他真实设备.

我确信在android api 23中有些东西被改变了.看来,如果缓冲区中有一个数据包,接收函数只会"触发",但如果在没有"内部"的情况下调用它,则会出现sockettimeout.

谢谢!

sockets android udp broadcast android-6.0-marshmallow

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

Cordova:无法使用corodva-plugin-calendar构建项目

我正在开发cordova应用程序,我希望通过日历获得某种预订功能.为此,我安装了非常着名的EddyVerbruggen/Calendar-PhoneGap-Plugin插件.

但是在构建项目时,它会抛出以下错误

/home/admin/Desktop/myApp/platforms/android/src/nl/xservices/plugins/Calendar.java:148: error: cannot find symbol
      if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this.cordova.getActivity(), type)) {
                                                            ^
  symbol:   method checkSelfPermission(Activity,String)
  location: class ContextCompat
/home/admin/Desktop/myApp/platforms/android/src/nl/xservices/plugins/Calendar.java:157: error: cannot find symbol
      ActivityCompat.requestPermissions(
                    ^
  symbol:   method requestPermissions(Activity,String[],int)
  location: class ActivityCompat
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* …
Run Code Online (Sandbox Code Playgroud)

android cordova android-permissions cordova-plugins android-6.0-marshmallow

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

Android - 在Android API 17中使用指纹API

最近,谷歌允许开发人员在Android 6.0(API 23)中使用指纹API.

我有与Android项目compiledSdkVersion 23minSdkVersion 17.

我的问题是:我可以在我的项目中使用Fingerprint API,我试图在我的项目中使用Google示例,但我有以下错误消息:

Class Requires API level 23 (current min is 17)
Run Code Online (Sandbox Code Playgroud)

如果我能,我会感激任何人给我一个很好的教程.

谢谢

android android-6.0-marshmallow

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

从字节扩展到Int(Marshmallow bug)

对于这个长期问题提前抱歉,但一切都应该是直截了当的,并清楚发生了什么,谢谢你看看.请注意,这实际上不是代码,只是伪代码来理解应用程序的实现.

问题

字节不会扩大到真正的数值.注意:level = -1表示尚未开始的游戏.level == 24代表游戏的结束.

1级

private byte level = -1;
private byte stage = 0;

@NonNull private final Stages[][] stages = new Stages[25][13];

public byte getLevel () {
   return level;
}  

public void nextLevel () {
// expect: 0 
   level++;

// stages[  128][    0] (ArrayIndexOutOfBounds)
   stages[level][stage] = new Stage();
}
Run Code Online (Sandbox Code Playgroud)

第2类扩展第1类

@NonNull private final byte[][] values = new byte[25][4];

public byte getScore (final byte level, final byte player) {
   //     values[  255][     2] …
Run Code Online (Sandbox Code Playgroud)

android android-6.0-marshmallow

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