2013-04-03 5 views
0

Я обращаюсь к телефонной книге через один запрос и получаю последние данные вызова из другого запроса. Проблема в том, что, когда я получаю дату от моего управляемого курсора, я получаю исключение из-за границы и мое приложение разбилось. пожалуйста, помогите мне, я хочу только принять последнюю дату звонка каждого номера (если не null).Каким образом может быть устранено исключение outofboundexception?

мой курсор запрос для получения сведений телефонной книги: -

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

запроса на получение поздней даты вызова определенного числа: -

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

Loop, в котором IAM получать позднюю дату обработки вызовов в номер, который был взят из телефонной книги. Курсор: -

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); 

Ошибки регистрации: -

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  
+1

Вы не получаете данные в курсоре, используя свой запрос. «Запрошен индекс 0 с размером 0». –

+0

Никакое значение не попадает в курсор, Его нуль –

+0

@Arju Курсор пуст, это не пусто – Pragnani

ответ

1

Ваш курсор пуст и когда вы пытаетесь получить значения из mcusor, который пуст, вы получаете курсор IndexOutOfBoundsException.

Try читать значения из курсора в этом формате, чтобы избежать IndexOutOfBoundsException

if(mCursor.moveToFirst()) 
{ 

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

} 
+0

mcursor не пуст, когда я использовал управляемый курсор в цикле, я получаю это исключение – Saad

+0

@Saad Что бы ни использовал курсор, если он не пуст, это нормально, но если он пуст, он сделает для вас одно и то же исключение. Поэтому читайте данные, если они доступны в курсоре. Отформатируйте свой код, как указано выше – Pragnani

0

Ошибка: Вызванный: android.database.CursorIndexOutOfBoundsException: индекс 0 запрошенной, с размером 0 вы должен добавить исключение, если значение равно 0, нет информации.

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