Android学习之——操作SIM卡联系人

        今天!!!对,就是就是今天,,,,我终于换手机啦啦啦,四儿子拿到手啦...虽然是个二手货,不过人家他爸也不卖了,只能买二手货了,五儿子那凸凸的摄像头和价格又有点难以下咽。
        嗯.....新机子到手,折腾一番是必须的,先是恢复出厂设置,刷机就不必了,本身就是android4.4.2了。话说剪的卡是各种蛋疼,插进入居然没反应,用室友的MX3上的SIM也插进去也是,没反应。然后呢,然后百度谷歌,答案是,剪的卡因为磁条太大,和卡托上的两边的金属碰到了。
        解决办法:卡托两边的压住SIM卡的两根金属条贴上胶带即可,一定要贴准确,不能多不能少,这个是个细致活....嗯,相当细致,搞了快一个小时....

        好吧,下面开始正题:
        碰到一个问题,我想删掉SIM卡里200多条的联系人,何解???android原生版本本身好像不支持管理SIM卡联系人的操作,只有从SIM卡导出联系人的选项,不晓得有木有人了解的。
        俺好像不太喜欢下软件,除了必备的几款软件之外。今天QQ又一次莫名其妙被盗,搞的我心理慌慌。软件更加不敢下了(虽然,应该不是手机软件的问题,但是之前在Windows Phone 8 上面玩那什么劳什子的山寨版的 像素鸟,结果不小心点到了广告,两分钟后好友电话打来,QQ被盗,乱发消息。:(
        嗯,正式进入正题:解决办法:自己写一个管理联系人的小工具不就行了呗。
        然后就是百度谷歌开始找资料,如下:

        两个链接需要结合起来用
首先,添加权限:
这个很重要,老是忘记,导致老是报错
有两个权限:“读权限和写权限“:
<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
我是在Fragment下面进行的操作,所以代码略微会有点不同:
其次,xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <LinearLayout android:id="@+id/menu_frame"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:orientation="vertical">
        <Button android:id="@+id/btnSelect" android:layout_width="match_parent"
            android:layout_height="wrap_content" android:text="查看SIM卡联系人" />
        <Button 
            android:id="@+id/btnDelect" android:layout_width="match_parent"
            android:layout_height="wrap_content" android:text="删除SIM卡联系人"
            />
        <TextView android:id="@+id/textView" android:layout_width="wrap_content"
            android:layout_height="match_parent" android:text="Demo"
            android:textSize="12sp" android:layout_centerInParent="true" />
    </LinearLayout>
</ScrollView>
java文件:
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // inflate the layout
        View view = inflater.inflate(R.layout.fragment_text, null);
        textView = (TextView) view.findViewById(R.id.textView);
        btnSelect = (Button) view.findViewById(R.id.btnSelect);
        btnDelete = (Button) view.findViewById(R.id.btnDelect);
        btnSelect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//我发现开了线程还是会阻塞UI线程,不晓得是什么原因,难道?我需要用AsyncTask?或者是Handler来处理。
//因为忙着玩新手机,所以我暂时也不深究了,哈哈,慢慢来,四儿子想了它一年多了。
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        SimQuery();//执行查询操作
                    }
                }).start();
                textView.setText(messageString);
            }
        });
        btnDelete.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        SimDelete();//执行删除操作
                    }
 
                }).start();
                textView.setText("删除成功!");
            }
        });
        return view;
    }

相关查询联系人和删除联系人的操作:
private void SimQuery() {
        //SIM的provider是IccProvider,IccProvider的Uri是content://icc/adn
    Uri uri = Uri.parse("content://icc/adn");
    Cursor cursor = getActivity().getContentResolver().query(uri, null,
            null, null, null);
    Log.v("MAIN", "-----------" + cursor.getCount());
    while (cursor.moveToNext()) {
        String id = cursor.getString(cursor.getColumnIndex(People._ID));
        String name = cursor.getString(cursor.getColumnIndex(People.NAME));
        String phoneNumber = cursor.getString(cursor
                .getColumnIndex(People.NUMBER));
        messageString += "id:" + id + "  name:" + name + "  phoneNumber:"
                + phoneNumber + "\n\r";
        Log.v("MAIN", "--->>>_id: " + id + "--->>>name:" + name
                + "--->>>phone number:" + phoneNumber + "\n\r");
    }
    cursor.close();//注意一定要close
}
 
private void SimDelete() {
    Uri uri = Uri.parse("content://icc/adn");
    Cursor cursor = getActivity().getContentResolver().query(uri, null,
            null, null, null);
    Log.v("MAIN", "------------->>>>>" + cursor.getCount());
    while (cursor.moveToNext()) {
        String name = cursor.getString(cursor.getColumnIndex(People.NAME));
        String phoneNumber = cursor.getString(cursor
                .getColumnIndex(People.NUMBER));
        String where = "tag=‘" + name + "‘";
        where += " AND number=‘" + phoneNumber + "‘";
        getActivity().getContentResolver().delete(uri, where, null);
    }
    cursor.close();//注意一定要close
}
    关于修改联系人和插入联系人的操作,大家就请移步链接吧,如果我有这个需要,我就会写出来的。
    不过谁需要呢...除非为了换成功能机,黑白屏的那种,会需要用SIM卡联系人,否则,智能机,现在到处给你这里备份那里备份的,又是谷歌备份,又是豌豆荚,又是什么QQ同步助手,人家备份都支持头像的,SIM又不支持头像,设置了大半天的联系人头像,在SIM卡里跟本就不起作用,而且一个姓名对应一个号码,如果一个姓名下面有多个号码,那就给你来个复制粘贴....
    嗯...不吐槽了。保持好心情。

    周末了终于可以见到俺家妹子了,还是很开心的,一起泡泡图书馆神马的最开心了。买手机的事情还没跟她说叻....会挨骂的....唉,算了,哥哥挺的过去。


    哎呀,补充一个内容,今天弄了下SlidingMenu,还是很好玩的。打算用这个做我的第二个应用,名曰:Mr.傅的自白
    相关学习链接:http://my.eoe.cn/kris/archive/1605.html   http://my.eoe.cn/kris/archive/1688.html

    最近看的书:《Android程序设计》难度有点啊...特别是Java那块,Java这么难么....有点忧虑啊。

    再PS:很开心啊,上首页了上首页了有图有真相:
Android学习之——操作SIM卡联系人
Android学习之——操作SIM卡联系人
Android学习之——操作SIM卡联系人

Android学习之——操作SIM卡联系人





Mr.傅:学习笔记
欢迎转载,转载注明出处,谢谢




Android学习之——操作SIM卡联系人,布布扣,bubuko.com

Android学习之——操作SIM卡联系人

上一篇:分享5个移动界面框架


下一篇:Android开源库loopj的android-async-http的 JsonHttpResponseHandler 存在死循环GC_CONCURRENT