- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
注意:这不是重复的,我在类似的 StackOverflow 问题中尝试了很多解决方案,但它们对我的情况不起作用。感谢您的帮助。
此崩溃似乎只发生在运行 Android 版本低于 6.0 的设备上。例如,它在运行 Android 5.1 版的 XT1032 上崩溃。在那种情况下,每当我调用此方法时,在我的 AppCompatActivity 的 onCreate 方法中,
AccountManager.get(this).addOnAccountsUpdatedListener(this, null, true);
它崩溃是因为它似乎没有所需的权限(我不知道为什么,因为它在 list 中)。我相信它并没有真正进入该方法,但由于 @RequiresPermission 行而在进入该方法时崩溃:
@RequiresPermission(GET_ACCOUNTS)
public void addOnAccountsUpdatedListener(final OnAccountsUpdateListener listener,
Handler handler, boolean updateImmediately) { ...
这是堆栈跟踪,加上一些更多的日志记录代码:
V/AccountManagerService: getAccounts: accountType null, caller's uid 10018, pid 23074
V/AccountManagerService: caller uid 10018 has android.permission.GET_ACCOUNTS
V/AccountManagerService: getAccounts: accountType null, caller's uid 10018, pid 23074
V/AccountManagerService: caller uid 10018 has android.permission.GET_ACCOUNTS
V/AccountManagerService: caller uid 10009 has android.permission.INTERACT_ACROSS_USERS
V/AccountManagerService: getAccounts: accountType com.google, caller's uid 10009, pid 1738
V/AccountManagerService: caller uid 10009 has android.permission.GET_ACCOUNTS
V/AccountManagerService: getAccounts: accountType null, caller's uid 10018, pid 23074
V/AccountManagerService: caller uid 10018 has android.permission.GET_ACCOUNTS
V/AccountManagerService: getAccounts: accountType null, caller's uid 10156, pid 13722
W/AccountManagerService: caller uid 10156 lacks any of android.permission.GET_ACCOUNTS
java.lang.RuntimeException: Unable to start activity ComponentInfo{MainActivity}: java.lang.SecurityException: caller uid 10156 lacks any of android.permission.GET_ACCOUNTS
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.SecurityException: caller uid 10156 lacks any of android.permission.GET_ACCOUNTS
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at android.accounts.IAccountManager$Stub$Proxy.getAccounts(IAccountManager.java:728)
at android.accounts.AccountManager.getAccounts(AccountManager.java:407)
at android.accounts.AccountManager.addOnAccountsUpdatedListener(AccountManager.java:2372)
调用者 uid 是什么,为什么使用 uid 10156
而不是 10018
或 10009
哪些有权限?
我验证了我的 AuthenticationService 中的帐户类型字符串与 authenticator.xml 的 accountType 相同,并且它们都使用硬编码字符串(不是字符串资源)。
public class AuthenticationService extends Service {
public static final String ACCOUNT_TYPE = "com.mywebsite";
...
public static boolean createAccount(String username,...) {
AccountManager am = AccountManager.get(Application.getInstance());
Account account = new Account(username, ACCOUNT_TYPE);
还有我的验证器:
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="com.mywebsite"
android:icon="@mipmap/ic_launcher"
android:smallIcon="@mipmap/ic_launcher"
android:label="@string/app_name"
/>
我也有这个: <uses-permission android:name="android.permission.GET_ACCOUNTS" />
在<manifest>
标签,而不是 <application>
标签。 list :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mywebsite.android.department.departmentname” >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<application
android:name=".Application"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name”>
<service android:name=".auth.AuthenticationService" >
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
</application>
</manifest>
这似乎是 Android 文档中的一个线索,但它似乎与我的错误无关,因为我确实拥有 list 中的权限(http://developer.android.com/reference/android/Manifest.permission.html#GET_ACCOUNTS):
Note: Beginning with Android 6.0 (API level 23), if an app shares the signature of the authenticator that manages an account, it does not need "GET_ACCOUNTS" permission to read information about that account. On Android 5.1 and lower, all apps need "GET_ACCOUNTS" permission to read information about any account.
最佳答案
事实证明与我正在使用的库有冲突。具体来说,图书馆的支持团队告诉我:
The layer SDK requests the GET_ACCOUNTS permission using a maxSdkVersion of 18. It would appear that when the manifests get merged this is overwriting the permission request in your manifest, thus not requesting that permission for 19+.
解决方案是改变我的 list :
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
为此:
<uses-permission android:name="android.permission.GET_ACCOUNTS" tools:node="replace" />
具体来说,添加tools:node="replace"
。
有关更多详细信息,请参阅我的其他问题的答案:https://stackoverflow.com/a/37013603/2423194
关于android - java.lang.SecurityException : caller uid XXXXX lacks any of android. 权限.GET_ACCOUNTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36851892/
如果在主编辑器中突出显示功能名称,然后在助手编辑器中选择“调用者”,则可以查看突出显示的功能的调用位置。 助手编辑器顶部有向左和向右箭头,可让您跳至调用该函数的上一个/下一个位置。这些有键盘快捷键吗?
在 JupyterLab 上使用以下代码来运行 Google Video Intelligence Package: from google.cloud import videointelligenc
我有以下代码: Set b = ActiveSheet.Buttons(Application.Caller) With b.TopLeftCell bcn = .Column brn
我在一个子例程中使用 Application.Caller,我以编程方式将其绑定(bind)到我在工作表上找到的所有形状的 OnAction 属性。 Application.Caller 返回启动调用
我有下面的代码,它根据运行的位置打印不同的程序计数器值。 代码: package main import ( "fmt" "runtime" ) func foo() { ba
我在 VBA 中有以下代码: Sub Kontrollkästchen_KlickenSieAuf() With ThisWorkbook.Sheets("Hinterlegungsmatrix Au
通读 Effective Go 文档,我有点难以理解以下语句的含义。 If you pass a map to a function that changes the contents of the
我使用的是 Google Sheets API v4。 我已经用一些工作表进行了测试,我的代码可以正常工作,但有些则不行。我所做的只是换出工作表 ID。 我使用在这里找到的代码: https://de
两部分问题: 如何从对象方法获取function.caller。 如何使用该值来实际调用函数。 示例: foo = { bar: function() {console.log(bar.cal
批处理文件子例程的 return 语句等效于什么? 最佳答案 它是: goto :eof 对于习惯于普通编程语言的人来说,这是不寻常的,这是可以理解的。 我找到了这个信息 here . 关于windo
我想在与 WCF 服务通信时使用基于证书的加密和验证。所以我创建了测试证书,“TempCA”作为我的根 CA,“SignedByCA”作为由该 CA 签署的客户端证书。 当我将客户端证书放在“本地计算
我正在尝试以编程方式更新我的一个项目的结算帐户。我正在为 googleapis REST 使用 Node 客户端库。这是我的代码: const { google } = require('google
我最近注意到,在使用赋值的大多数情况下,重新初始化动态变量没有我预期的语义(但是,绑定(bind)以我预期的方式工作)。 具体来说,在这段代码中: sub g { my $*i = CALL
想象一下这种情况: Activity_1: get Activity_2 started with startActivityForResult; Activity_2: get Activity_3
间歇性地收到此错误 HttpError 403 when requesting https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest r
我还没有在一页中清楚地看到这一点:部分受信任的调用者。 我正在研究 APTCA,这总是被提及,但 MSDN 没有关于它的文章。 我只有一些线索,但我不是 100% 确定。 从网络共享执行的代码是否符合
我正在尝试从客户端控制台应用程序访问服务器上的 WCF 服务进行测试。我收到以下错误: The caller was not authenticated by the service 我正在使用wsH
当特定函数被调用两次时,我想看到 Angular 堆栈跟踪,这看起来很奇怪,但却是预期的行为 https://github.com/angular/angular.js/issues/1146 。 u
我有一些 jQuery 代码。我调用了一个 Ajax 函数文件 file.php,它有一些字段,例如: Milk. 我会再次分配给 jQuery 函数吗?如果是这样,我该怎么做?我附上了一个示例文件:
只是一些琐事;我在循环中创建 View 和模型,然后尝试将自定义事件绑定(bind)到它们。到目前为止一切都很好,但是当我想找出对象触发事件时呢?我知道还有其他冗长的方法可以将事件单独分配给系列中的每
我是一名优秀的程序员,十分优秀!