0

我是 android 新手。在这里我创建应用程序,例如读取手机联系人并存储到 csv 文件格式文件中。读取联系人需要很长时间。同时我需要使用进度条直到该文件正在写入联系人详细信息。现在我很困惑,我在哪里可以在我的代码中插入进度条..

我的编码是...

  private String getPrimaryNumber(long _id) {
           String primaryNumber = null;
           try {
               Cursor cursor = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                       new String[]{Phone.NUMBER, Phone.TYPE},
                       ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ _id, // We need to add more selection for phone type
                       null,
                       null);
               if(cursor != null) {
                   while(cursor.moveToNext()){
                       switch(cursor.getInt(cursor.getColumnIndex(Phone.TYPE))){
                           case Phone.TYPE_MOBILE :
                               primaryNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
                               break;
                           case Phone.TYPE_HOME :
                               primaryNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
                               break;
                           case Phone.TYPE_WORK :
                               primaryNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
                               break;
                           case Phone.TYPE_OTHER :
                       }
                       if(primaryNumber != null)
                           break;
                   }
               }       
           } catch (Exception e) {
               Log.i("test", "Exception " + e.toString());
           } finally {
               if(cursor != null) {
                   cursor.deactivate();
                   cursor.close();             
               }
           }
           return primaryNumber;
       }

这是从手机中读取联系人的代码。在该编码中,我可以添加进度条...请帮助任何人..提前致谢。

4

2 回答 2

0

尝试这个:

 protected Void doInBackground(Void... params) {
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
                null, null, null);


    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String id = cur.getString(cur
                    .getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur
                    .getString(cur
                            .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            if (Integer
                    .parseInt(cur.getString(cur
                            .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                System.out.println("name : " + name + ", ID : " + id);
                // Result=Result+ "Name: "+name;
                // get the phone number
                Cursor pCur = cr.query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                + " = ?", new String[] { id }, null);
                while (pCur.moveToNext()) {
                    String phone = pCur
                            .getString(pCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    publishProgress("Name:" + name + ",Number:" + phone
                            + "\n");
                }
                pCur.close();
            }
        }
    }
    return null;
}
于 2013-06-05T11:06:48.500 回答
0

您需要实现AsyncTask并显示您的进度条。

这是一个很好的教程。

于 2013-06-05T10:58:59.240 回答