xywhere 发表于 2013-7-13 12:41:29

Android智能拨号简易实现

本帖最后由 xywhere 于 2013-7-15 09:25 编辑

主要功能就是联系人姓名和电话自动补全
比如:输入 135 则会提示所有135开头的电话号
比如:输入 王 下面会提示所有性王的人的电话
界面比较简单,功能也比较简单,核心功能实现依赖于系统提供的控件AutoCompleteTextView

public class MainActivity extends Activity implements OnClickListener {

      private AutoCompleteTextView act_text;
      private Button bt_call, bt_cancel;
      
      protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                // 初始化控件
                setView();
                setListener();
                // 获取联系人数组,配置适配器
                String[] names = getContacts();
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.item, names);
                act_text.setAdapter(adapter);

      }
      private void setView()
      {
                bt_call = (Button) findViewById(R.id.call);
                bt_cancel = (Button) findViewById(R.id.cancel);
                act_text = (AutoCompleteTextView) findViewById(R.id.name);
      }
      private void setListener()
      {
                bt_call.setOnClickListener(this);
                bt_cancel.setOnClickListener(this);
      }
      @Override
      public void onClick(View v) {
               
                switch(v.getId())
                {
                case R.id.call:
                        String contacts = act_text.getText().toString();
                        String number = getNumber(contacts);
                        Intent intent=new Intent("android.intent.action.CALL",Uri.parse("tel:"+number.trim()));
                        startActivity(intent);
                        break;
                case R.id.cancel:
                        act_text.setText("");
                        break;
                }
      }
      // 将联系人信息中的电话号提取出来
      private String getNumber(String contacts)
      {
                StringBuilder sb = new StringBuilder();
                int count = contacts.length();
                for(int i=0; i<count; i++)
                {
                        char n = contacts.charAt(i);
                        if(n >= '0' && n <= '9')
                        {
                              sb.append(n);
                        }
                }
                return sb.toString();
      }
      // 将联系人信息存储到数组中
      private String[] getContacts() {
                List<String> list = new ArrayList<String>();
                String name = "";
                ContentResolver contentResolver = getContentResolver();
                // 获得所有的联系人
                Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
                int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
                int displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
               
                while( cursor.moveToNext())
                {
                        // 获得联系人的ID
                        String contactId = cursor.getString(idColumn);
                        // 获得联系人姓名
                        String disPlayName = cursor.getString(displayNameColumn);
                        name=disPlayName;
                        // 查看该联系人有多少个电话号码。如果没有这返回值为0
                        int phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

                        if (phoneCount > 0)
                        {
                              // 获得联系人的电话号码列表
                              Cursor phonesCursor = getContentResolver().query(
                                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                        null,
                                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + contactId,
                                        null, null);
                              
                              while(phonesCursor.moveToNext())
                              {
                                        // 遍历所有的电话号码
                                        String phoneNumber = phonesCursor.getString(
                                                phonesCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                        list.add(phoneNumber+"      "+name);
                                        list.add(name+"      "+phoneNumber);
                              }
                        }
                }

                String[] str=new String;
                for(int i=0;i<list.size();i++)
                {
                        str=list.get(i);
                }
            return str;
      }
}

static/image/hrline/2.gif
Andorid拨号另一例:
android 拨号器 可用于小号互打
http://www.ruanyuan.net/forum.ph ... &tid=4966&fromuid=1
(出处: 软院网 RuanYuan.Net)





xywhere 发表于 2013-7-13 12:42:14

@jangwooning 看看 是你说那种吗

小马 发表于 2013-7-13 12:48:48

最近都喜欢发技术帖了?看得我心痒痒的

xywhere 发表于 2013-7-13 12:52:39

小马 发表于 2013-7-13 12:48
最近都喜欢发技术帖了?看得我心痒痒的

这不接近开学了 吗都开始步入正轨了 哈哈{:5_124:}

小马 发表于 2013-7-13 13:44:11

xywhere 发表于 2013-7-13 12:52
这不接近开学了 吗都开始步入正轨了 哈哈

要西,怪不得~

阎魔あい 发表于 2013-7-13 18:53:25

你们果然都是及其爱学习的孩子。。。。我天天看动漫。。。。哎

xywhere 发表于 2013-7-13 20:14:42

阎魔あい 发表于 2013-7-13 18:53
你们果然都是及其爱学习的孩子。。。。我天天看动漫。。。。哎

等着失业吧 {:5_148:}

cfyrwang 发表于 2013-7-13 22:53:47

xywhere 发表于 2013-7-13 12:52
这不接近开学了 吗都开始步入正轨了 哈哈

依旧在家,各种堕落的路过。。。。。。

cfyrwang 发表于 2013-7-13 22:54:12

xywhere 发表于 2013-7-13 20:14
等着失业吧

-_-!我擦。。。好直接。。

vo_ 发表于 2013-7-13 23:14:44

我是不是也得等着失业了{:7_266:}

xywhere 发表于 2013-7-13 23:19:42

vo_ 发表于 2013-7-13 23:14
我是不是也得等着失业了

{:5_136:} 你才不是呢 。。你是 offer 一把一把的。。

xywhere 发表于 2013-7-13 23:30:00

cfyrwang 发表于 2013-7-13 22:54
-_-!我擦。。。好直接。。

忠言逆耳 这才是真朋友 。。哈哈

xywhere 发表于 2013-7-13 23:32:08

cfyrwang 发表于 2013-7-13 22:53
依旧在家,各种堕落的路过。。。。。。

来论坛 就是积极向上

阎魔あい 发表于 2013-7-14 10:37:54

xywhere 发表于 2013-7-13 20:14
等着失业吧

{:7_312:}不要管我。。。。。

阎魔あい 发表于 2013-7-14 10:38:21

cfyrwang 发表于 2013-7-13 22:54
-_-!我擦。。。好直接。。

我好可怜吧。。。。。。。。

xywhere 发表于 2013-7-14 12:45:11

阎魔あい 发表于 2013-7-14 10:37
不要管我。。。。。

等着毕业 转行吧 {:5_136:}

阎魔あい 发表于 2013-7-14 16:01:05

xywhere 发表于 2013-7-14 12:45
等着毕业 转行吧

{:7_234:}我的人生就这么完了吗。。。。。。

xywhere 发表于 2013-7-14 16:23:06

阎魔あい 发表于 2013-7-14 16:01
我的人生就这么完了吗。。。。。。

补补课啥的 还能有救 你应该被建议了吧?

阎魔あい 发表于 2013-7-14 17:05:13

xywhere 发表于 2013-7-14 16:23
补补课啥的 还能有救 你应该被建议了吧?

好吧。。。。没得救了。。。。我不建议补课。。。。。

zj220223 发表于 2013-7-14 22:17:27

@阎魔あい感觉你好像被鄙视了。。。

xywhere 发表于 2013-7-15 07:19:43

阎魔あい 发表于 2013-7-14 17:05
好吧。。。。没得救了。。。。我不建议补课。。。。。

自救啊 。。

xywhere 发表于 2013-7-15 07:20:05

@阎魔あい我可没鄙视你

jangwooning 发表于 2013-7-15 09:06:33

xywhere 发表于 2013-7-13 12:42
@jangwooning 看看 是你说那种吗

凭啥你这个 要他么的10学分?还给挂到首页去了,版主太垄断了{:7_292:}~是,就是这个意思!我加到我那里边了,抢走了哈!

jangwooning 发表于 2013-7-15 09:09:25

小马 发表于 2013-7-13 13:44
要西,怪不得~

别听他@xywhere瞎白话~他那是闲出屎了{:7_274:} ,凭什么版主就能发1M以上的附件,太不公平了!

xywhere 发表于 2013-7-15 09:12:22

jangwooning 发表于 2013-7-15 09:06
凭啥你这个 要他么的10学分?还给挂到首页去了,版主太垄断了~是,就是这个意思!我加到我那里 ...

不放首页 怎么能让你看见啊。。{:5_136:}

jangwooning 发表于 2013-7-15 09:19:20

xywhere 发表于 2013-7-13 12:42
@jangwooning 看看 是你说那种吗

布局文件也发一份上来,要不你就把你工程发我一份,要10学分你这个太敲诈了,我是不会下载的{:7_267:}收到赶紧回复!万恶的版主!

xywhere 发表于 2013-7-15 09:25:54

jangwooning 发表于 2013-7-15 09:19
布局文件也发一份上来,要不你就把你工程发我一份,要10学分你这个太敲诈了,我是不会下载的收 ...

这一个个的 都太尼玛穷了 已改成2学分了   {:7_274:}

jangwooning 发表于 2013-7-15 10:17:05

xywhere 发表于 2013-7-15 09:25
这一个个的 都太尼玛穷了 已改成2学分了

要不这样,我下载一次,然后你上我的帖子里边再给我加5分 怎么样?{:7_267:}

阎魔あい 发表于 2013-7-15 10:23:03

xywhere 发表于 2013-7-15 07:19
自救啊 。。

亲~~~你说你成功申请到补课的几率是多大呢~~~

阎魔あい 发表于 2013-7-15 10:23:16

xywhere 发表于 2013-7-15 07:19
自救啊 。。

亲~~~你说你成功申请到补课的几率是多大呢~~~

阎魔あい 发表于 2013-7-15 10:23:40

xywhere 发表于 2013-7-15 07:20
@阎魔あい我可没鄙视你

你需要特意强调一下吗???!!!昂??!!!!

小马 发表于 2013-7-15 10:29:47

jangwooning 发表于 2013-7-15 09:09
别听他@xywhere瞎白话~他那是闲出屎了 ,凭什么版主就能发1M以上的附件,太不公平了!

其实那天申请版主你也可以努力一下的,可惜,人不在

xywhere 发表于 2013-7-15 10:31:48

阎魔あい 发表于 2013-7-15 10:23
你需要特意强调一下吗???!!!昂??!!!!

楼上说我鄙视你我可没 哈哈

xywhere 发表于 2013-7-15 10:33:30

阎魔あい 发表于 2013-7-15 10:23
亲~~~你说你成功申请到补课的几率是多大呢~~~

俺已经成功申请到英语了保底了 嘿嘿嘿

xywhere 发表于 2013-7-15 10:33:46

阎魔あい 发表于 2013-7-15 10:23
亲~~~你说你成功申请到补课的几率是多大呢~~~

你干脆去申请日语吧 我看你适合

xywhere 发表于 2013-7-15 10:36:02

jangwooning 发表于 2013-7-15 09:09
别听他@xywhere瞎白话~他那是闲出屎了 ,凭什么版主就能发1M以上的附件,太不公平了!

什么叫瞎白话啊 。。。俺只是小版主 他们可是超级版主 更大附件哦 去说他们吧 。。

阎魔あい 发表于 2013-7-15 10:55:21

xywhere 发表于 2013-7-15 10:33
你干脆去申请日语吧 我看你适合

我也想过这个问题~~~可是一个月也学不到啥。。。。。。再说了,学这么多年英语看美国电影也还得看字幕。。。。。。我放弃了。。。。看动漫看字幕没啥不好的~~~~{:7_282:}

阎魔あい 发表于 2013-7-15 10:56:13

xywhere 发表于 2013-7-15 10:33
俺已经成功申请到英语了保底了 嘿嘿嘿

你居然申请到了????这么速度。。。。。那@vo_ 呢   咋样了

阎魔あい 发表于 2013-7-15 10:57:07

xywhere 发表于 2013-7-15 10:31
楼上说我鄙视你我可没 哈哈

别找借口了!!!!{:7_318:}我恨透了你们这群人!!!!

xywhere 发表于 2013-7-15 11:00:51

阎魔あい 发表于 2013-7-15 10:55
我也想过这个问题~~~可是一个月也学不到啥。。。。。。再说了,学这么多年英语看美国电影也还得看字幕。 ...

你专业课不补 ? 真想转行啊。。

xywhere 发表于 2013-7-15 11:02:50

阎魔あい 发表于 2013-7-15 10:56
你居然申请到了????这么速度。。。。。那@vo_ 呢   咋样了

当然也申请到了被 {:5_136:}

xywhere 发表于 2013-7-15 11:03:22

@阎魔あい我真没鄙视你

jangwooning 发表于 2013-7-15 11:03:59

小马 发表于 2013-7-15 10:29
其实那天申请版主你也可以努力一下的,可惜,人不在

{:7_315:}马哥 你又提我伤心的往事!下次遇见这种事情你打我电话{:7_312:}

jangwooning 发表于 2013-7-15 11:05:07

xywhere 发表于 2013-7-15 10:36
什么叫瞎白话啊 。。。俺只是小版主 他们可是超级版主 更大附件哦 去说他们吧 。。

我为了上传一个小附件,一个劲的删东西,麻烦死了{:5_146:}整死超级版主

阎魔あい 发表于 2013-7-15 11:20:55

xywhere 发表于 2013-7-15 11:02
当然也申请到了被

哎呦喂~~~~不好说啥了哈。。。。。。

阎魔あい 发表于 2013-7-15 11:21:59

xywhere 发表于 2013-7-15 11:00
你专业课不补 ? 真想转行啊。。

我要学车。。。。要不再也没机会了。。。。再说也不一定能申请到。。。

runksun 发表于 2013-7-15 11:27:51

顶一下……对android软件开发确实研究不多

xywhere 发表于 2013-7-15 11:39:14

runksun 发表于 2013-7-15 11:27
顶一下……对android软件开发确实研究不多

应用软件 都是一个套路。 。。

xywhere 发表于 2013-7-15 11:39:50

阎魔あい 发表于 2013-7-15 11:21
我要学车。。。。要不再也没机会了。。。。再说也不一定能申请到。。。

都是借口。。

runksun 发表于 2013-7-15 11:40:03

xywhere 发表于 2013-7-15 11:39
应用软件 都是一个套路。 。。

哈哈,撸主说的有道理呀……对java层的开发实在兴趣不大呀
页: [1] 2
查看完整版本: Android智能拨号简易实现