我使用AppSignatureHelper类生成了11个字符的哈希值。但是在将apk上传到Play商店后,它们的哈希值不再起作用了。我发现Play用另一个键替换了键,这就是哈希值也被更改的原因。现在我无法获取11字符哈希键。我不知道如何使用Google提供的命令。我从here找到了这个命令keytool-exportcert-aliasMyAndroidKey-keystoreMyProductionKeys.keystore|xxd-p|tr-d"[:space:]"|echo-ncom.example.myapp`cat`|sha256sum|tr-d"[:space:]-"|xx
我使用AppSignatureHelper类生成了11个字符的哈希值。但是在将apk上传到Play商店后,它们的哈希值不再起作用了。我发现Play用另一个键替换了键,这就是哈希值也被更改的原因。现在我无法获取11字符哈希键。我不知道如何使用Google提供的命令。我从here找到了这个命令keytool-exportcert-aliasMyAndroidKey-keystoreMyProductionKeys.keystore|xxd-p|tr-d"[:space:]"|echo-ncom.example.myapp`cat`|sha256sum|tr-d"[:space:]-"|xx
我正在尝试实现短信检索器api以读取OTP代码消息,而无需添加read_sms权限。帮助文档here,要求用户生成特定于应用程序的哈希码。我已经按要求生成了代码,但还是广播接收器没有启动。我该如何调试它?我正在通过从一部手机向另一部手机发送SMS来对此进行测试,并且我遵循上述文档中指定的SMS要求。此外,提到了生成哈希码的各种方法。我都试过了。问题是每种方法生成不同的哈希值。我已经尝试过调试和发布keystore。下面是那些不同的方法:此处描述的linux命令-helpdocsms_retriever_hash_v9file如所述here包括AppSignatureHelper来自示例
我开发了一个具有firebase电话号码身份验证的android应用程序。输入电话号码后,firbase通过短信发送验证OTP号码。所以我在我的应用程序中添加并允许SMS读取权限现在根据GooglePlay政策,我们需要删除SMS读取权限并实现SMSRetrieverAPI。因此,我使用SmsRetrieverClient、SMSBroadcastReceiver实现了SMSRetrieverAPI,并具有必要的依赖性。我注册广播接收器,将电话号码提交给firebase。我启动了client.startSmsRetriever();并成功启动了onSuccess()回调。而且我还收到了
我是Android的新手,我正在尝试实现SMSRetrieverAPI以在我的应用中使用OTP。我正在遵循本指南:https://developers.google.com/identity/sms-retriever/verify#computing_your_apps_hash_string不幸的是,我卡在了“计算应用的哈希字符串”我在这里引用了指南部分,并在每个部分下面引用了我的问题:获取应用的公钥证书作为小写十六进制字符串。例如,要从您的keystore中获取十六进制字符串,请键入以下命令keytool-aliasMyAndroidKey-exportcert-keystore
我是Android编程的初学者。我正在编写一个应用程序来列出文件夹中的所有视频文件并显示文件夹中所有视频的信息。但是当我尝试获取视频时长时,它返回null并且我找不到获取它的方法。谁能帮帮我?下面是我的代码:Uriuri=Uri.parse("content://media/external/video/media/9");Cursorcursor=MediaStore.Video.query(res,data.getData(),newString[]{MediaStore.Video.VideoColumns.DURATION});if(cursor.moveToFirst()){
我是Android编程的初学者。我正在编写一个应用程序来列出文件夹中的所有视频文件并显示文件夹中所有视频的信息。但是当我尝试获取视频时长时,它返回null并且我找不到获取它的方法。谁能帮帮我?下面是我的代码:Uriuri=Uri.parse("content://media/external/video/media/9");Cursorcursor=MediaStore.Video.query(res,data.getData(),newString[]{MediaStore.Video.VideoColumns.DURATION});if(cursor.moveToFirst()){