在Android 6设备上运行时,我收到以下异常.
java.lang.SecurityException: Missing android.permission.GET_ACCOUNTS
Run Code Online (Sandbox Code Playgroud)
这看起来像一个相当直接的例外,但对我来说并非如此.我的清单看起来像这样:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="..." >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<application
...
Run Code Online (Sandbox Code Playgroud)
抛出此异常的代码段如下:
mLoggedInEmail = Plus.AccountApi.getAccountName(mGoogleApiClient);
Run Code Online (Sandbox Code Playgroud)
在Android 5设备上它工作得很好.
我的应用程序应该处理共享文本.例如亚马逊应用程序的URL.所以我在主要活动中添加了以下intent-filter:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
在我的活动的onCreate函数中,我正在处理这样的意图:
intent = getIntent();
if(intent.getAction() != null) {
if (intent.getAction().equals(Intent.ACTION_SEND)) {
if (intent.getType().equals("text/plain")) {
onNavigationDrawerItemSelected(1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,有时在共享操作之后不会调用onCreate函数.我检查了onResume方法,实际上这就是所谓的.问题是intents操作不是"ACTION_SEND",而是packagename.handled并且不包含所需的信息.
这是为什么?