Подсчитайте количество писем, отправленных и полученных в Android - PullRequest
0 голосов
/ 14 декабря 2011

Я новичок в разработке для Android. У меня есть требование подсчитывать количество отправленных и полученных писем.Я пробовал код, указанный в ссылке Как получить количество непрочитанных писем Gmail (на Android) .Я бегу код в Android 2.2.Но я получаю исключение безопасности, даже если у меня есть упоминание разрешения в файле манифеста.

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@company.com";
        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

Ответы [ 2 ]

0 голосов
/ 22 января 2014

Нам нужен ContentProvider для извлечения данных метки. Мы можем использовать это для доступа к актуальным непрочитанным счетам для входящих почтовых ящиков и ярлыков конкретных учетных записей.

http://android -developers.blogspot.in / 2012/04 / Gmail Общественно-лейблы-api.html

0 голосов
/ 14 декабря 2011

К сожалению, почтовые приложения не раскрывают свой контент и данные, и большинство из них - третья часть (закрытый источник, включая gmail) Таким образом, то, что вы хотите, недоступно.

...