Hi,

I found two issues so far with your code:

1) GetContacts is a Activity, so you should not use  GetContacts g= new
GetContacts().
2) EmailContactsRepeat is executed in a separate remote process :
   <receiver android:name=".EmailContactsRepeat"

> android:process=":remote" />


So you cannot access anything from the main process directly, do you really
want The IntentReceiver to be executed in a separate process?

-Megha


On Sat, Apr 12, 2008 at 7:06 AM, franw <[EMAIL PROTECTED]> wrote:

>
> thank you for your reply - as i said, the code worked fine in the main
> activity, sendmail.java, but when i moved it to GetContacts.java i get
> a nullPrtException from EmailContactsRepeat where the call is.  i am
> also listing the intent reciever where the code is called.
>
> here is the manifest
>
> <?xml version="1.0" encoding="utf-8"?>
> <manifest xmlns:android="http://schemas.android.com/apk/res/android";
>    package="org.apache.android.mail">
>    <uses-permission android:name="android.permission.READ_CONTACTS"/>
>    <application>
>        <receiver android:name=".EmailContactsRepeat"
> android:process=":remote" />
>
>        <activity android:name=".SendMail" android:label="SendMail">
>            <intent-filter>
>                <action android:name="android.intent.action.MAIN" />
>                <category
> android:name="android.intent.category.LAUNCHER" />
>            </intent-filter>
>        </activity>
>        <activity android:name=".SendContacts" >
>        </activity>
>        <activity android:name=".GetContacts" >
>
>        </activity>
>    </application>
> </manifest>
>
> here is the intent
>
> package org.apache.android.mail;
>
> import android.content.Context;
> import android.content.Intent;
> import android.content.IntentReceiver;
>
> public class EmailContactsRepeat extends IntentReceiver
> {
>    @Override
>    public void onReceiveIntent(Context context, Intent intent)
>    {
>        //get bundle of extras (userid, passwork, email) from intent
>                String userid = intent.getStringExtra("userid");
>                String password = intent.getStringExtra("password");
>                String email = intent.getStringExtra("email");
>                int foo=0;
>                int rbutton = intent.getIntExtra("rbutton", foo);
>
>        //String body = "test";
>        //final String body = getContactStr();
>        GetContacts g= new GetContacts();
>        String body = g.getContactStr();
>        body += body + rbutton;
>        SendContacts s = new SendContacts (body,userid, password,
>                                email,rbutton);
>
>    }
> }
>
>
> here is GetContacts.java
>
> package org.apache.android.mail;
>
> import android.app.Activity;
> import android.database.Cursor;
>
> public class GetContacts extends Activity
> {
>
>    public String getContactStr()
>    {
>        String pList = "";
>        String st = "";
>
>         Cursor c = getContentResolver().query(
>                 android.provider.Contacts.Phones.CONTENT_URI,
>                null, null, null,
>                android.provider.Contacts.Phones.PERSON_ID+ " ASC");
>                 startManagingCursor(c);
>
>                // Retrieve the column-indixes of phoneNumber, name and
> type
>                int numberColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.NUMBER);
>                int nameColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.NAME);
>                // type can be: home, cell, etc (number provided - must be
> interpreted
>                int typeColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.TYPE);
>                int labelColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.LABEL);
>                // Will hold the calls, available to the cursor
>                // Loop through all entries the cursor provides to us.
>                if(c.first()){
>                do{
>                  String callerPhoneNumber = c.getString(numberColumn);
>                  String pname = c.getString(nameColumn);
>                  int pType = c.getInt(typeColumn);
>                  String label = c.getString(labelColumn);
>                  if (label != null)
>                        st = label;
>                  else
>                        st = getPhoneType(pType);
>                  pList = pList +  "\n# " + callerPhoneNumber +" " +  pname
>  +"
> " +  st;
>                  }while(c.next());
>                }
>                if (pList == "")
>                        return ("No Contacts in Phone # blah");
>                else
>                        return pList;
>                }
>
>    private String getPhoneType(int p)
>    {
>        String st = "";
>        switch(p)
>        {
>        case android.provider.Contacts.Phones.HOME_TYPE:
>                st = "Home";
>                break;
>        case android.provider.Contacts.Phones.HOME_FAX_TYPE:
>                st = "HomeFax";
>                break;
>        case android.provider.Contacts.Phones.MOBILE_TYPE:
>                st = "Cell";
>                break;
>        case android.provider.Contacts.Phones.WORK_TYPE:
>                st = "Work";
>                break;
>        case android.provider.Contacts.Phones.OTHER_TYPE:
>                st = "";
>                break;
>        case android.provider.Contacts.Phones.WORK_FAX_TYPE:
>                st = "WorkFax";
>                break;
>        case android.provider.Contacts.Phones.PAGER_TYPE:
>                st = "Pager";
>                break;
>        }
>    return st;
>    }
> }
>
> here is the main activity, i commented out the code, but it worked
> fine when called from here.
>
> package org.apache.android.mail;
>
> import android.app.Activity;
> import android.app.AlarmManager;
> import android.content.Intent;
> import android.os.Bundle;
> import android.os.SystemClock;
> import android.view.View;
> import android.view.View.OnClickListener;
> import android.widget.EditText;
> import android.widget.RadioGroup;
> import android.widget.Button;
> import android.widget.Toast;
>
> public class SendMail extends Activity implements
> RadioGroup.OnCheckedChangeListener{
>    /**
>     * Called with the activity is first created.
>     */
>    private RadioGroup mRadioGroup;
>    private int rbutton;
>    Toast mToast;
>    @Override
>    public void onCreate(Bundle icicle) {
>        super.onCreate(icicle);
>        setContentView(R.layout.main);
>        final Button send = (Button) this.findViewById(R.id.send);
>        final Button cancel = (Button) this.findViewById(R.id.cancel);
>        final EditText userid = (EditText)
> this.findViewById(R.id.userid);
>        final EditText password = (EditText)
> this.findViewById(R.id.password);
>        final EditText from = (EditText) this.findViewById(R.id.from);
>        cancel.setOnClickListener(mStopRepeatingListener);
>
>
>        //final String body = getContactStr();
>        //final String subject = "Contacts from phone";
>
>
>        send.setOnClickListener(new View.OnClickListener() {
>                public void onClick(View view) {
>                //final String body = getContactStr();
>                        String body = "test";
>
>                Intent intent = new Intent(SendMail.this,
> EmailContactsRepeat.class);
>
>                // bundle extras (data) with the intent.
>                intent.putExtra("userid",
> userid.getText().toString());
>                intent.putExtra("password",
> password.getText().toString());
>                intent.putExtra("email", from.getText().toString());
>                intent.putExtra("rbutton", rbutton);
>
>                // We want the alarm to go off now.
>                long firstTime = SystemClock.elapsedRealtime();
>
>                // Schedule the alarm!
>                AlarmManager am =
> (AlarmManager)getSystemService(ALARM_SERVICE);
>                am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
>                                firstTime, 60*1000, intent);
>            }
>     });
>    }
>
>    public void onCheckedChanged(RadioGroup group, int checkedId) {
>
>        //String selection = getString(R.string.radio_group_selection);
>        //String none = getString(R.string.radio_group_none);
>        //mChoice.setText(selection +
>          //      (checkedId == View.NO_ID ? none : checkedId));
>
>        rbutton = checkedId;
>        if (checkedId == R.id.everyday)
>                rbutton = 1;
>        else
>            if (checkedId == R.id.days2)
>                   rbutton = 2;
>             else
>                   rbutton = 3;
>    }
>
>    private OnClickListener mStopRepeatingListener = new
> OnClickListener()
>    {
>        public void onClick(View v)
>        {
>            // Create the same intent that was scheduled.
>            Intent intent = new Intent(SendMail.this,
> EmailContactsRepeat.class);
>
>            // And cancel the alarm.
>            AlarmManager am =
> (AlarmManager)getSystemService(ALARM_SERVICE);
>            am.cancel(intent);
>
>            // Tell the user about what we did.
>            if (mToast != null) {
>                mToast.cancel();
>            }
>            mToast = Toast.makeText(SendMail.this,
> R.string.cancel_contacts,
>                    Toast.LENGTH_LONG);
>            mToast.show();
>        }
>    };
>
>  /*
>    private String getContactStr()
>    {
>        String pList = "";
>        String st = "";
>    Cursor c = getContentResolver().query(
>                 android.provider.Contacts.Phones.CONTENT_URI,
>                null, null, null,
>                android.provider.Contacts.Phones.PERSON_ID+ " ASC");
>                 startManagingCursor(c);
>
>                // Retrieve the column-indixes of phoneNumber, name and
> type
>                int numberColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.NUMBER);
>                int nameColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.NAME);
>                // type can be: home, cell, etc (number provided - must be
> interpreted
>                int typeColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.TYPE);
>                int labelColumn =
> c.getColumnIndex(android.provider.Contacts.Phones.LABEL);
>                // Will hold the calls, available to the cursor
>                // Loop through all entries the cursor provides to us.
>                if(c.first()){
>                do{
>                  String callerPhoneNumber = c.getString(numberColumn);
>                  String pname = c.getString(nameColumn);
>                  int pType = c.getInt(typeColumn);
>                  String label = c.getString(labelColumn);
>                  if (label != null)
>                        st = label;
>                  else
>                        st = getPhoneType(pType);
>                  pList = pList +  "\n# " + callerPhoneNumber +" " +  pname
>  +"
> " +  st;
>                  }while(c.next());
>                }
>                if (pList == "")
>                        return ("No Contacts in Phone # blah");
>                else
>                        return pList;
>                }
>
>    private String getPhoneType(int p)
>    {
>        String st = "";
>        switch(p)
>        {
>        case android.provider.Contacts.Phones.HOME_TYPE:
>                st = "Home";
>                break;
>        case android.provider.Contacts.Phones.HOME_FAX_TYPE:
>                st = "HomeFax";
>                break;
>        case android.provider.Contacts.Phones.MOBILE_TYPE:
>                st = "Cell";
>                break;
>        case android.provider.Contacts.Phones.WORK_TYPE:
>                st = "Work";
>                break;
>        case android.provider.Contacts.Phones.OTHER_TYPE:
>                st = "";
>                break;
>        case android.provider.Contacts.Phones.WORK_FAX_TYPE:
>                st = "WorkFax";
>                break;
>        case android.provider.Contacts.Phones.PAGER_TYPE:
>                st = "Pager";
>                break;
>        }
>    return st;
>    }
> */
> }
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to