alee_love 2013-05-12 14:43 采纳率: 0%
浏览 6217

Android根据姓名来查找电话问题

大家好!刚学Android,刚写了一个根据姓名来查找电话的小程序,有如下问题,希望各位指导一下,谢谢,麻烦说的详细一点,再次感谢。
问题(logcat):

1、Can't open keycharmap file
2、Error loading keycharmap file '/system/usr/keychars/cyttsp-i2c.kcm.bin'. hw.keyboards.65542.devname='cyttsp-i2c'
3、Using default keymap: /system/usr/keychars/qwerty.kcm.bin

代码:

public class MainActivity extends Activity {
    private Button b1;
    private EditText myEditText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         b1 = (Button)findViewById(R.id.Button01);

         myEditText = (EditText)findViewById(R.id.EditText01);
         b1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                 String name = myEditText.getText().toString();
                 Bundle data = new Bundle();
                 data.putString("name", name);

                 Intent intent = new Intent(MainActivity.this,ResultActivity.class);
                 intent.putExtras(data);
                 startActivity(intent);
            }
        });

    }
}


public class ResultActivity extends Activity {
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.result);
        //String id;
        //ContentResolver contentResolver = this.getContentResolver();
        //Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
        //  new String[]{android.provider.ContactsContract.Contacts._ID}, null, null, null);
                //while(cursor.moveToNext()) {
        //  id=cursor.getString(cursor.getColumnIndex(android.provider.ContactsContract.Contacts._ID)); 
        tv = (TextView)findViewById(R.id.TextView02);
        Intent intent = getIntent();
        Bundle b = intent.getExtras();
        String uName = b.getString("name");



        boolean isQueryAll = false; 
        // cu姓名游标,cn电话号码游标 
        Cursor cu, cn = null; 
        // 查询条件,SQL是的Where语句的后部分 
        String selection = null; 

        Uri contacts =ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        Uri con= ContactsContract.Contacts.CONTENT_URI;
        uName = uName.trim(); 
        // 是否查询全部通讯录,如果姓名为空则是 
        isQueryAll = uName.equals("") ? true : false; 

        if (isQueryAll) { 
            // 查询全部时的,查询条件,主要用在cu游标上 
            selection = ContactsContract.Data.MIMETYPE 
                    + "='"
                    + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE 
                    + "'"; 
            //System.out.println("Query For ALl--" + selection); 
        } else { 
            // 根据姓名查询时的,查询条件,主要用在cu游标上 
            selection = ContactsContract.Data.MIMETYPE 
                    + "='"
                    + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE 
                    + "'"
                    + " AND "
                    + ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME 
                    + " LIKE " + "'%" + uName + "%'"; 
            //System.out.println("Query For Some--" + selection); 
        } 

        try { 
            // 根据姓名查询出完整姓名和通讯录ID 

            cu = getContentResolver()
                    .query( 
                            con, 
                            new String[] { 
                                    ContactsContract.Data.RAW_CONTACT_ID, 
                                    ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME }, 
                            selection, null, null); 
            // 根据通讯录ID,查找对应的电话号码的查询条件,主要用于cn游标 
            selection = ContactsContract.Data.MIMETYPE + "='"
                    + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE 
                    + "'" 
                    + " AND " 
                    + ContactsContract.Data.RAW_CONTACT_ID 
                    + "=?"; 
            //System.out.println("Number Query--" + selection); 
            while (cu.moveToNext()) { 
                String contactId = String.valueOf(cu.getInt(0)); 
                // 开始查找电话号码 
                //System.out.println("  Start Query Num"); 
                cn = getContentResolver() 
                        .query( 
                                 contacts, 
                                new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER }, 
                                selection, new String[] { contactId }, null); 

                while (cn.moveToNext()) { 
                    // 将一组通讯录记录在HashMap中 
                   // HashMap<String, String> map = new HashMap<String, String>(); 
                   // map.put("display_name", cu.getString(1)); 
                    //map.put("phone_number", cn.getString(0)); 
                    // 将查到通讯录添加到List中 
                   // list.add(map); 
                    String name1 = cu.getString(1);
                    String number = cn.getString(0);
                    tv.setText(name1+":"+number);
                } 
            } 
            //关闭游标 
            cu.close(); 
            cn.close(); 
        } catch (Exception e) { 
            // TODO: handle exception 
        } 
        //String[] projection = new String[] { People._ID,
        //      People.NAME, People.NUMBER };
        //String[] projection = new String[] { ContactsContract.Contacts._ID,
        //      ContactsContract.Contacts.DISPLAY_NAME };

        //Uri contacts = People.CONTENT_URI;
        //Uri contacts =Phone.CONTENT_URI;
        //Uri contacts =ContactsContract.Data.CONTENT_URI;
         //Uri contacts = ContactsContract.Contacts.CONTENT_URI;
        //Uri contacts =ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        //  String[] args = {name};

        //Cursor managedCursor = managedQuery(contacts, projection,                                                                         
            //  "name=?", 
                //args, 
        //      People.NAME + " ASC");
                //ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
        //Uri contactUri = ContactsContract.Contacts.CONTENT_URI;

      //  String[] PROJECTION = new String[] {

           //     ContactsContract.Contacts._ID,

           //     ContactsContract.Contacts.DISPLAY_NAME,

            //    ContactsContract.Contacts.HAS_PHONE_NUMBER

    //    };

    //String SELECTION = ContactsContract.Contacts.HAS_PHONE_NUMBER + "='1'";
    //String SELECTION = ContactsContract.Contacts.HAS_PHONE_NUMBER + "='1'";

        //Cursor managedCursor = managedQuery(contacts, projection, "name=?", args,
        //ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
            //Cursor phoneCursor = contentResolver.query(
            //  android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            //  null, android.provider.ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+id, null, null);

            //if(managedCursor.moveToFirst()){
            //  String name1 = managedCursor.getString(1);
            //  String number = managedCursor.getString(2);
            //  tv.setText(name1+":"+number);
            //}

    }
}
  • 写回答

4条回答 默认 最新

  • zhangzhen199121 2013-05-12 15:09
    关注

    现在正在学习 过来顶一个 不错哦!继续努力加油!

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题