일부분 소스입니다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.endsms);
Cursor cursor = getURI(); // 전화번호부 가져오기
int end = cursor.getCount(); // 전화번호부의 갯수 세기
String name [] = new String[end]; // 전화번호부의 이름을 저장할 배열 선언
int count = 0;
if(cursor.moveToFirst())
{
// 컬럼명으로 컬럼 인덱스 찾기
int idIndex = cursor.getColumnIndex("_id");
do
{
// 요소값 얻기
int id = cursor.getInt(idIndex);
name[count] = cursor.getString(1);
count++;
} while(cursor.moveToNext() || count > end);
}
setLayout();
mCountBt.setText("현재 체크된 숫자는 = 0 개 입니다.");
// ArrayList에 String으로 이루어진 값들을 Add 한다.
for(int i =0 ; i<=name[i].length(); i++){
mArrayList.add(name[i]);
}
mCustomAdapter = new CustomAdapter(AdNote_sms.this , mArrayList);
mListView.setAdapter(mCustomAdapter);
mListView.setOnItemClickListener(mItemClickListener);
}
private Cursor getURI()
{
// 주소록 URI
Uri people = Contacts.CONTENT_URI;
// 검색할 컬럼 정하기
String[] projection = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, Contacts.HAS_PHONE_NUMBER };
// 쿼리 날려서 커서 얻기
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(people, projection, null, selectionArgs, sortOrder);
}
현재 소스는 잘 작동 됩니다.
주소록을 가져오는데요. 빨간색부분 포문에 5번밖에 돌지 않습니다...ㅠㅠ
디버그로 확인한 결과
name[end] 안에는 556개의 이름이 들어가있는데요.
왜 5번밖에 돌지 못하는지 알고싶습니다. 도와주세요 ㅠㅠ
정말 쑥쓰럽군요 ㅠ
상인님 감사합니다.
하지만 그렇게 실행을 하면 앱이 다운되어버리는현상이 일어납니다.
02-13 21:13:54.204: E/AndroidRuntime(30681): FATAL EXCEPTION: main
02-13 21:13:54.204: E/AndroidRuntime(30681): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.AdNote/com.AdNote.AdNote_sms}: java.lang.ArrayIndexOutOfBoundsException: length=556; index=556
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.ActivityThread.access$600(ActivityThread.java:127)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.os.Looper.loop(Looper.java:137)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.ActivityThread.main(ActivityThread.java:4512)
02-13 21:13:54.204: E/AndroidRuntime(30681): at java.lang.reflect.Method.invokeNative(Native Method)
02-13 21:13:54.204: E/AndroidRuntime(30681): at java.lang.reflect.Method.invoke(Method.java:511)
02-13 21:13:54.204: E/AndroidRuntime(30681): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-13 21:13:54.204: E/AndroidRuntime(30681): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
02-13 21:13:54.204: E/AndroidRuntime(30681): at dalvik.system.NativeStart.main(Native Method)
02-13 21:13:54.204: E/AndroidRuntime(30681): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=556; index=556
02-13 21:13:54.204: E/AndroidRuntime(30681): at com.AdNote.AdNote_sms.onCreate(AdNote_sms.java:71)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.Activity.performCreate(Activity.java:4492)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
02-13 21:13:54.204: E/AndroidRuntime(30681): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
02-13 21:13:54.204: E/AndroidRuntime(30681): ... 11 more
로그켓 에러입니다.
로쓰님 감사합니다.
하지만 앱이 뻗어버리는군요 ㅠㅠ
02-13 21:52:22.636: E/CursorWindow(9641): Failed to read row 0, column -1 from a CursorWindow which has 556 rows, 3 columns.
02-13 21:52:22.646: W/dalvikvm(9641): threadid=1: thread exiting with uncaught exception (group=0x40c211f8)
02-13 21:52:22.676: E/AndroidRuntime(9641): FATAL EXCEPTION: main
02-13 21:52:22.676: E/AndroidRuntime(9641): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.AdNote/com.AdNote.AdNote_sms}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.ActivityThread.access$600(ActivityThread.java:127)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.os.Looper.loop(Looper.java:137)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.ActivityThread.main(ActivityThread.java:4512)
02-13 21:52:22.676: E/AndroidRuntime(9641): at java.lang.reflect.Method.invokeNative(Native Method)
02-13 21:52:22.676: E/AndroidRuntime(9641): at java.lang.reflect.Method.invoke(Method.java:511)
02-13 21:52:22.676: E/AndroidRuntime(9641): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
02-13 21:52:22.676: E/AndroidRuntime(9641): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
02-13 21:52:22.676: E/AndroidRuntime(9641): at dalvik.system.NativeStart.main(Native Method)
02-13 21:52:22.676: E/AndroidRuntime(9641): Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.database.CursorWindow.nativeGetString(Native Method)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.database.CursorWindow.getString(CursorWindow.java:450)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.database.CursorWrapper.getString(CursorWrapper.java:114)
02-13 21:52:22.676: E/AndroidRuntime(9641): at com.AdNote.AdNote_sms.onCreate(AdNote_sms.java:58)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.Activity.performCreate(Activity.java:4492)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
02-13 21:52:22.676: E/AndroidRuntime(9641): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
02-13 21:52:22.676: E/AndroidRuntime(9641): ... 11 more