Я новичок в разработке android. У меня есть требование, чтобы подсчитать количество отправленных и полученных сообщений электронной почты. Я пробовал код, указанный в ссылке How to get the number of unread gmail mails (on android). Я запускаю код в Android 2.2. Но я получаю исключение безопасности, хотя я упоминаю разрешение в файле манифеста.Подсчитайте количество сообщений электронной почты, отправленных и полученных в android
java.lang.SecurityException: Разрешение отказа: поставщик открытие com.google.android.gm.provider.MailProvider от ProcessRecord {40a44ec8 8832: com.android.gmailexample/10090} (PID = 8832, = UID 10090) требует com.google.android.gm.permission.READ_GMAIL или com.google.android.gm.permission.WRITE_GMAIL
Вот мой код
package com.android.gmailexample;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class GmailCountActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
Log.d("Activity","Inside Oncrete");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
queryLabels();
}
public static final class LabelColumns {
public static final String CANONICAL_NAME = "canonicalName";
public static final String NAME = "name";
public static final String NUM_CONVERSATIONS = "numConversations";
public static final String NUM_UNREAD_CONVERSATIONS = "numUnreadConversations";
}
public void queryLabels(){
Log.d("Activity","Inside query label");
String account="[email protected]";
Uri LABELS_URI = Uri.parse("content://gmail-ls/unread/");
Uri ACCOUNT_URI = Uri.withAppendedPath(LABELS_URI, account);
ContentResolver contentResolver= this.getContentResolver();
Cursor cursor = contentResolver.query(ACCOUNT_URI, null, null, null, null);
//iterate over all labels in the account
if (cursor.moveToFirst()) {
int unreadColumn = cursor.getColumnIndex(LabelColumns.NUM_UNREAD_CONVERSATIONS);
int nameColumn = cursor.getColumnIndex(LabelColumns.NAME);
do {
String name = cursor.getString(nameColumn);
String unread = cursor.getString(unreadColumn);//here's the value you need
Log.d("Name", name);
Log.d("Unread ", unread);
} while (cursor.moveToNext());
Log.d("Unread count", String.valueOf(unreadColumn));
}
}
}
и мой манифест файл
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".GmailCountActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.providers.gmail.permission.READ_GMAIL"/>
<uses-permission android:name="com.google.android.gm.permission.READ_GMAIL"/>
<uses-permission android:name="com.google.android.gm.permission.WRITE_GMAIL"/>
Я не могу найти ошибку. Любая помощь будет оценена.
С уважением Pushpa
Это хороший ответ на ваш вопрос, я думаю, [Как получить количество непрочитанных писем Gmail (на Android)] (http://stackoverflow.com/questions/2992635/how-to- get-the-number-of-unread-gmail-mails-on-android) –
Я не уверен, что это соответствует точному дублированию, но вопрос, связанный с @YaqubAhmad, связан с _strongly_. –
@ Yaqub Ahmad: Спасибо. Эта ссылка помогает мне попробовать другой подход. – pushpa