Saad
Saad

Reputation: 21

How can outofboundexception will be solved?

I am accessing phonebook through one query and getting last call details from other query. The problem is that when i am getting date from my manged cursor i get outofbound exception and my application crashed. please help me i only want to take recent call date of every number(if not null).

my cursor query for getting phonebook details is:-

Cursor mCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[] {Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER}, null, null, null);
          startManagingCursor(mCursor);

query for getting recent call date of a particular number:-

Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI,null, selection,null, Order);

Loop in which iam getting recent call date of a number that was taken from phonebook details cursor:-

 mCursor.moveToFirst();

          while(!mCursor.isAfterLast()) {

                JSONObject contact = new JSONObject();
                JSONObject parentCont = new JSONObject();

                 String name = mCursor.getString(mCursor.getColumnIndex(Phone.DISPLAY_NAME));
                 String number = mCursor.getString(mCursor.getColumnIndex(Phone.NUMBER));
                 String selection = android.provider.CallLog.Calls.NUMBER+"="+number;
                 String Order = android.provider.CallLog.Calls.DATE + " DESC";
                          Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI,null, selection,null, Order);
                          managedCursor.moveToNext();   
              String     callDate = managedCursor.getString(managedCursor.getColumnIndex(android.provider.CallLog.Calls.DATE));

                Date callDayTime = new Date(Long.valueOf(callDate));

                //String dateColumn = cursorcalllog.getString(cursorcalllog.getColumnIndex(CallLog.Calls.DATE));

                 Log.d("CONTACT", "Name: " + name + "| Number: " + number+"Recently Called"+callDayTime);

Logcat Errors:-

04-03 05:33:43.090: E/AndroidRuntime(963): FATAL EXCEPTION: main
04-03 05:33:43.090: E/AndroidRuntime(963): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.socialize_us/com.example.socialize_us.CustomTabActivity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.socialize_us/com.example.socialize_us.PhoneBookActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2084)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2111)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.access$600(ActivityThread.java:134)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1251)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.os.Looper.loop(Looper.java:137)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.main(ActivityThread.java:4666)
04-03 05:33:43.090: E/AndroidRuntime(963):  at java.lang.reflect.Method.invokeNative(Native Method)
04-03 05:33:43.090: E/AndroidRuntime(963):  at java.lang.reflect.Method.invoke(Method.java:511)
04-03 05:33:43.090: E/AndroidRuntime(963):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
04-03 05:33:43.090: E/AndroidRuntime(963):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
04-03 05:33:43.090: E/AndroidRuntime(963):  at dalvik.system.NativeStart.main(Native Method)
04-03 05:33:43.090: E/AndroidRuntime(963): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.socialize_us/com.example.socialize_us.PhoneBookActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2084)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1924)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.widget.TabHost.setCurrentTab(TabHost.java:346)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.widget.TabHost.addTab(TabHost.java:236)
04-03 05:33:43.090: E/AndroidRuntime(963):  at com.example.socialize_us.CustomTabActivity.onCreate(CustomTabActivity.java:33)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.Activity.performCreate(Activity.java:4510)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2048)
04-03 05:33:43.090: E/AndroidRuntime(963):  ... 11 more
04-03 05:33:43.090: E/AndroidRuntime(963): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:400)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.database.CursorWrapper.getString(CursorWrapper.java:241)
04-03 05:33:43.090: E/AndroidRuntime(963):  at com.example.socialize_us.PhoneBookActivity.onCreate(PhoneBookActivity.java:107)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.Activity.performCreate(Activity.java:4510)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
04-03 05:33:43.090: E/AndroidRuntime(963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2048)
04-03 05:33:43.090: E/AndroidRuntime(963):  ... 21 more    

Upvotes: 0

Views: 317

Answers (2)

Hatim
Hatim

Reputation: 1172

The error : Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 you must add the exception if the value equal 0 there is no information.

Upvotes: 0

Pragnani
Pragnani

Reputation: 20155

Your cursor is empty and When you are trying to get the values from the mcusor which is empty you are getting cursor IndexOutOfBoundsException.

Try to read the values from the cursor in this format to avoid IndexoutOfBoundsException

if(mCursor.moveToFirst())
{

  do
{
...
...
}
while(mCursor.moveToNext())

}

Upvotes: 1

Related Questions