2011-12-14 3 views
0

Я новичок в разработке 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

+0

Это хороший ответ на ваш вопрос, я думаю, [Как получить количество непрочитанных писем Gmail (на Android)] (http://stackoverflow.com/questions/2992635/how-to- get-the-number-of-unread-gmail-mails-on-android) –

+0

Я не уверен, что это соответствует точному дублированию, но вопрос, связанный с @YaqubAhmad, связан с _strongly_. –

+0

@ Yaqub Ahmad: Спасибо. Эта ссылка помогает мне попробовать другой подход. – pushpa

ответ

0

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

Смежные вопросы