Hi Dianne,

Thank you for quick response.  Given that this is not supported,

What would be the appropriate method to capture  email/sms for non-gmail and
gmail data transactions?

Example mail fields to/from, subject, date, attachments included or not,
etc...
Regards,

kk

>
>
>  ------------------------------
> *From:* android-framework@googlegroups.com [mailto:
> android-framew...@googlegroups.com] *On Behalf Of *Dianne Hackborn
> *Sent:* Tuesday, June 23, 2009 7:32 AM
> *To:* android-framework@googlegroups.com
> *Subject:* Re: BroadcastReceiver and Google Services Inquiry
>
> PROVIDER_CHANGED is usually -only- used for updating the new mail status
> bar icon.  It is not intended for generally monitoring a provider.
>
> Also the Gmail provider schema is not public (not even part of the platform
> at all), so you can't write code against it and expect it to continue to
> work in the future.
>
> On Mon, Jun 22, 2009 at 12:11 AM, kkruups <kkru...@gmail.com> wrote:
>
>>
>> Hi All,
>>
>> I have been working on BroadcastReceiver code to capture GMAIL events
>> and try to extract data to create an email event log.
>>
>> Although the registration of the BroadcastReceiver using
>> Intent.PROVIDER_CHANGED for gmail appears to be correctly formed and
>> no exceptions are generated.  I have my doubts whether the receiver is
>> able to capture gmail event for Intent.PROVIDER_CHANGED, generated
>> when unread email is available, since code in my BroadcastReceiver is
>> never activated.   Upon reading the BroadcastReciever API docs (see
>> excerpt below) I see that BroadcastReceivers are not designed to
>> capture intents used with startActivity() and that BroadcastReceivers
>> only receive intents generated from a sendBroadcast() method call.
>> For your reference see my code snippets below.
>>
>> Is the BroadcastReceiver mechanism not the appropriate method to
>> capture email/gmail/sms events?
>>
>>
>>
>> BroadcastReceiver code is the following:
>>
>> public class EmailReceiver extends BroadcastReceiver {
>>       /**
>>        *
>>        */
>>
>>       String TAG= "MY_TAG:RECEIVER";
>>
>>       @Override
>>       public void onReceive(Context context, Intent intent) {
>>               //
>>               Log.i(TAG, "Action=" + intent.getAction());
>>             if (Intent.ACTION_PROVIDER_CHANGED.equals
>> (intent.getAction
>> ())) {
>>                 Uri dataURI= intent.getData();
>>                 String dataURIPath=dataURI.getPath();
>>                 Log.i(TAG, dataURIPath);
>>              }
>>       }
>> }
>>
>>
>> BroadcastReceiver code registration for gmail is the following:
>> //
>>
>> @override
>> public void onCreate(Bundle b){
>> ....
>>
>> EmailReceiver myMailReceiver = new EmailReceiver();
>>
>> ......
>>
>> }
>>
>>
>> @Override
>> public void onResume(){
>>       super.onResume();
>>
>>        try{
>>              IntentFilter mailFilter = new IntentFilter
>> ( Intent.ACTION_PROVIDER_CHANGED, "content://gmail-ls/unread/^i");
>>          //     IntentFilter mailFilter = new IntentFilter
>> ( Intent.ACTION_PROVIDER_CHANGED, "gmail-ls");
>>           registerReceiver( myMailReceiver, mailFilter);
>>           Log.i(myMailReceiver.TAG, "MailReceiver registered");
>>     }catch(Exception e){
>>       Log.e(myMailReceiver.TAG, "Intent Filter malformed");
>>     }
>>
>> }
>>
>> Excerpt from BroadcastReceiver Doc:
>>
>> Base class for code that will receive intents sent by sendBroadcast
>> ().
>> ........
>> ........
>>
>> Note that, although the Intent class is used for sending and receiving
>> these broadcasts, the Intent broadcast mechanism here is completely
>> separate from Intents that are used to start Activities with
>> Context.startActivity(). There is no way for a BroadcastReceiver to
>> see or capture Intents used with startActivity(); likewise, when you
>> broadcast an Intent, you will never find or start an Activity. These
>> two operations are semantically very different: starting an Activity
>> with an Intent is a foreground operation that modifies what the user
>> is currently interacting with; broadcasting an Intent is a background
>> operation that the user is not normally aware of.
>>
>> .........
>>
>> Regards,
>>
>> KK
>>
>>
>
>
> --
> Dianne Hackborn
> Android framework engineer
> hack...@android.com
>
> Note: please don't send private questions to me, as I don't have time to
> provide private support, and so won't reply to such e-mails.  All such
> questions should be posted on public forums, where I and others can see and
> answer them.
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"android-framework" group.
To post to this group, send email to android-framework@googlegroups.com
To unsubscribe from this group, send email to 
android-framework+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/android-framework?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to