欢迎光临散文网 会员登陆 & 注册

开源APP发布——VCMsg

2018-11-09 23:46 作者:swiss126  | 我要投稿

应用图标:

应用界面:

通话记录:

拨号器:

、联系人:

联系人列表:

软件说明:

VCMsg——二次元个性通讯录!

引用@wuyudong 的API

作者:wuyudong

出处:http://www.cnblogs.com/wuyudong/

CopyRight@Swiss126 

软件下载地址:

慕晓资源站:http://www.swiss126.icoc.cc/pd.jsp?id=31&_pp=105_412

百度云:http://pan.baidu.com/s/1bprcGk3

代码及其素材:

ResentCall.java

package com.swiss126.vcmsg;

import android.Manifest;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

import android.content.ContentResolver;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.app.Fragment;

import android.provider.CallLog;

import android.support.v4.app.ActivityCompat;

import android.view.ContextMenu;

import android.view.LayoutInflater;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Objects;

import com.anye.greendao.gen.DaoSession;

import com.anye.greendao.gen.UsersDao;

/**

 * A simple {@link Fragment} subclass.

 */

public class ResentCall extends Fragment {

    private FragmentManager fragmentManager;

    private FragmentTransaction fragmentTransaction;

    private List<Map<String, Object>> data,tempList;

    private ListView listItem;

    private Users choosed;

    public ResentCall() {

        // Required empty public constructor

    }

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,

                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment

        View view=inflater.inflate(R.layout.fragment_phone_book, container, false);

        listItem = (ListView) view.findViewById(R.id.list);

        data = getData();

        SimpleAdapter adapter = new SimpleAdapter(getActivity(), data, R.layout.item,

                new String[] { "image", "name", "publish", "tel" },

                new int[] { R.id.image, R.id.name, R.id.publish, R.id.tel });

        //image头像,name名字,tel号码,publish最近呼叫时间

        listItem.setAdapter(adapter);

        listItem.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> adapter, View view, int position,

                                    long id) {

                Map<String, Object> item = (Map<String, Object>) data.get(position);

                if (!tempList.isEmpty()) {

                    choosed = new Users((long) 0, item.get("name").toString(), item.get("tel").toString(), "", "");

                    //给ListView注册上下文菜单

                    registerForContextMenu(listItem);//View类型

                }

            }

        });

        return view;

    }

    private List<Map<String, Object>> getData() {

        data = new ArrayList<Map<String, Object>>();

        tempList =getResentCall();

        if (tempList.isEmpty()) {

            Map<String, Object> item = new HashMap<String, Object>();

            item.put("image", R.drawable.ico);

            item.put("name", "温馨提示:");

            item.put("publish", "");

            item.put("tel", "最近通话记录为空!");

            data.add(item);

        }

        else data=tempList;

        /*得到一系列数据~

        Map<String, Object> item = new HashMap<String, Object>();

        item.put("image", R.drawable.ico);

        item.put("name", "洛天依");

        item.put("publish", "");

        item.put("tel", "13066112255");

        data.add(item);

        */

        return data;

    }

    private List<Map<String, Object>> getResentCall() {

        // 1.获得ContentResolver

        ContentResolver resolver = getActivity().getContentResolver();

        // 2.利用ContentResolver的query方法查询通话记录数据库

        /* * @param uri 需要查询的URI,(这个URI是ContentProvider提供的)

         * * @param projection 需要查询的字段

         * * @param selection sql语句where之后的语句

         * * @param selectionArgs ?占位符代表的数据

         * * @param sortOrder 排序方式

         * */

        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {

            return null;

        }

        Cursor cursor = resolver.query(CallLog.Calls.CONTENT_URI,// 查询通话记录的URI

                new String[]{CallLog.Calls.CACHED_NAME// 通话记录的联系人

                        , CallLog.Calls.NUMBER// 通话记录的电话号码

                        , CallLog.Calls.DATE// 通话记录的日期

                        , CallLog.Calls.DURATION// 通话时长

                        , CallLog.Calls.TYPE}// 通话类型

                , null, null, CallLog.Calls.DEFAULT_SORT_ORDER// 按照时间逆序排列,最近打的最先显示

        );

        // 3.通过Cursor获得数据

        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        while (cursor.moveToNext()) {

            String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));

            String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));

            long dateLong = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE));

            String date = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date(dateLong));

            int duration = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.DURATION));

            int type = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE));

            String typeString = "";

            switch (type) {

                case CallLog.Calls.INCOMING_TYPE:

                    typeString = "打入";

                    break;

                case CallLog.Calls.OUTGOING_TYPE:

                    typeString = "打出";

                    break;

                case CallLog.Calls.MISSED_TYPE:

                    typeString = "未接";

                    break;

                default:

                    break;

            }

            Map<String, Object> map = new HashMap<String, Object>();

            map.put("image", R.drawable.ico);

            map.put("name", (name == null) ? "未备注联系人" : name);

            map.put("publish", date+typeString);

            map.put("tel", number);

            list.add(map);

        }

        return list;

    }

    private void UpdateView(){//刷新数据

        fragmentManager = getFragmentManager();

        fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.replace(R.id.loader, new ResentCall());

        fragmentTransaction.commit();

    }

    private void ToInfo(String name, String tel){//跳转自信息修改、查看页面

        fragmentManager = getFragmentManager();

        fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.replace(R.id.loader, new Info(name,tel));

        fragmentTransaction.commit();

    }

    //菜单!

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

        // 加载xml中的上下文菜单

        super.onCreateContextMenu(menu, v,  menuInfo);

        MenuInflater inflater =  getActivity().getMenuInflater();

        inflater.inflate(R.menu.menu_resentcall, menu);

    }

    public boolean onContextItemSelected(MenuItem item) {

        // TODO Auto-generated  method stub

        switch (item.getItemId()) {

            case R.id.menu_add://转到Info界面添加联系人

                ToInfo(choosed.getName(), choosed.getTelnum());

                break;

            case R.id.menu_call://系统拨号

                //用intent启动拨打电话

                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+choosed.getTelnum()));

                startActivity(intent);

                break;

        }

        return super.onContextItemSelected(item);

    }

}

ITelephony.java

package com.android.internal.telephony;  

public interface ITelephony{

    boolean endCall();  

    void answerRingingCall();  

}  

Users.java

package com.swiss126.vcmsg;

import org.greenrobot.greendao.annotation.Entity;

import org.greenrobot.greendao.annotation.Id;

import org.greenrobot.greendao.annotation.NotNull;

import org.greenrobot.greendao.annotation.Generated;

@Entity

public class Users {

    @Id(autoincrement = true)

    private Long id;

    @NotNull

    private String name;

    private String telnum,email,qq;

    @Generated(hash = 1619983801)

    public Users(Long id, @NotNull String name, String telnum, String email, String qq) {

        this.id = id;

        this.name = name;

        this.telnum = telnum;

        this.email = email;

        this.qq = qq;

    }

    @Generated(hash = 2146996206)

    public Users() {

    }

    public void setId(Long id) {

        this.id = id;

    }

    public String getName() {

        return this.name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getTelnum() {

        return this.telnum;

    }

    public void setTelnum(String telnum) {

        this.telnum = telnum;

    }

    public String getEmail() {

        return this.email;

    }

    public void setEmail(String email) {

        this.email = email;

    }

    public String getQQ() {

        return this.qq;

    }

    public void setQQ(String qq) {

        this.qq = qq;

    }

    public String getQq() {

        return this.qq;

    }

    public void setQq(String qq) {

        this.qq = qq;

    }

    public Long getId() {

        return this.id;

    }

}

App.java

package com.swiss126.vcmsg;

import android.app.Application;

import android.content.Context;

import com.anye.greendao.gen.DaoMaster;

import com.anye.greendao.gen.DaoSession;

import org.greenrobot.greendao.database.Database;

public class App extends Application {

    private static DaoMaster daoMaster;

    private static DaoSession daoSession;

    /**

     * 获取DaoMaster

     *

     * @param context

     * @return

     */

    public static DaoMaster getDaoMaster(Context context) {

        if (daoMaster == null) {

            try{

                DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(context,"test.db",null);

                daoMaster = new DaoMaster(helper.getWritableDatabase()); //获取未加密的数据库

            }catch (Exception e){

                e.printStackTrace();

            }

        }

        return daoMaster;

    }

    /**

     * 获取DaoSession对象

     *

     * @param context

     * @return

     */

    public static DaoSession getDaoSession(Context context) {

        if (daoSession == null) {

            if (daoMaster == null) {

                getDaoMaster(context);

            }

            daoSession = daoMaster.newSession();

        }

        return daoSession;

    }

}

MainActivity.java

package com.swiss126.vcmsg;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

import android.content.DialogInterface;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.view.ContextMenu;

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewConfiguration;

import android.widget.ImageButton;

import android.widget.Toast;

import java.lang.reflect.Field;

/*

 * Main         主界面

 * PhoneBook    通讯录(兼最近通话列表)

 * Info         详细信息(兼信息编辑)

 * Dial         拨号器

 *              呼叫界面系统自带

 */

public class MainActivity extends Activity {

    private ImageButton btn1, btn2, btn3;

    private FragmentManager fragmentManager;

    private FragmentTransaction fragmentTransaction;

    private AlertDialog.Builder builder;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        fragmentManager = getFragmentManager();

        fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.replace(R.id.loader, new Dial());

        fragmentTransaction.commit();

        btn1 = (ImageButton) findViewById(R.id.imageButton);

        btn1.setImageResource(R.drawable.people);

        btn1.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                fragmentManager = getFragmentManager();

                fragmentTransaction = fragmentManager.beginTransaction();

                fragmentTransaction.replace(R.id.loader, new PhoneBook());

                fragmentTransaction.commit();

            }

        });

        btn2 = (ImageButton) findViewById(R.id.imageButton2);

        btn2.setImageResource(android.R.drawable.ic_dialog_dialer);

        btn2.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                fragmentManager = getFragmentManager();

                fragmentTransaction = fragmentManager.beginTransaction();

                fragmentTransaction.replace(R.id.loader, new Dial());

                fragmentTransaction.commit();

            }

        });

        btn3 = (ImageButton) findViewById(R.id.imageButton3);

        btn3.setImageResource(R.drawable.msg);

        btn3.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                fragmentManager = getFragmentManager();

                fragmentTransaction = fragmentManager.beginTransaction();

                fragmentTransaction.replace(R.id.loader, new ResentCall());

                fragmentTransaction.commit();

            }

        });

    }

    //菜单!

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_actionbar, menu);

        return true;

    }

    public boolean onOptionsItemSelected(MenuItem item) {

        // TODO Auto-generated  method stub

        switch (item.getItemId()) {

            case R.id.menu_about:

                builder = new AlertDialog.Builder(MainActivity.this);

                builder.setMessage(getResources().getString(R.string.app_name) + "——二次元个性通讯录!" +

                        "\n引用@wuyudong的API" +

                        "\nCopyRight@Swiss126");

                builder.setTitle("关于软件");

                builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                    }

                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                    }

                });

                builder.create().show();

                break;

            case R.id.menu_close:

                //Toast.makeText(MainActivity.this, "关闭软件", Toast.LENGTH_LONG).show();

                builder = new AlertDialog.Builder(MainActivity.this);

                builder.setMessage("确认退出" + getResources().getString(R.string.app_name) + "?");

                builder.setTitle("温馨提示");

                builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                        MainActivity.this.finish();

                    }

                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                    }

                });

                builder.create().show();

                break;

        }

        return super.onContextItemSelected(item);

    }

}

Dial.java

package com.swiss126.vcmsg;

import android.app.Dialog;

import android.app.DialogFragment;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

import android.content.ComponentName;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.res.Resources;

import android.net.Uri;

import android.os.Bundle;

import android.app.Fragment;

import android.app.AlertDialog;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.ImageButton;

import android.widget.TextView;

import android.widget.Toast;

/**

 * A simple {@link Fragment} subclass.

 */

public class Dial  extends Fragment {

    private Button btn[];

    private ImageButton dia;

    private TextView telnum;

    private FragmentManager fragmentManager;

    private FragmentTransaction fragmentTransaction;

    public Dial() {

        // Required empty public constructor

    }

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,

                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment

        View view=inflater.inflate(R.layout.fragment_dial, container, false);

        //Toast.makeText(getActivity(), "拨号器", Toast.LENGTH_SHORT).show();

        dia= (ImageButton) view.findViewById(R.id.ok);

        dia.setImageResource(android.R.drawable.sym_action_call);

        dia.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                //打电话~

                String number = telnum.getText()+"";

                if(number.isEmpty())

                {

                    Toast.makeText(getActivity(), "请重新输入电话号码!", Toast.LENGTH_SHORT).show();

                }

                else {

                    //用intent启动拨打电话

                    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+number));

                    startActivity(intent);

                }

            }

        });

        Resources res = getResources();

        btn = new Button[14];

        telnum = (TextView) view.findViewById(R.id.telnum);

        telnum.setText("");

        for(int i=0;i<14;i++)

        {

            if(i<10)

            {

                int id = res.getIdentifier("_" + i, "id", getActivity().getPackageName());

                final int x=i;

                btn[i] = (Button) view.findViewById(id);

                btn[i].setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        telnum.setText(telnum.getText()+""+x);

                    }

                });

            }

            else if (i==10){

                btn[i]= (Button) view.findViewById(R.id._p);

                btn[i].setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        telnum.setText(telnum.getText()+"#");

                    }

                });

            }

            else if (i==11){

                btn[i]= (Button) view.findViewById(R.id._x);

                btn[i].setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        telnum.setText(telnum.getText()+"*");

                    }

                });

            }

            else if (i==12){

                btn[i]= (Button) view.findViewById(R.id.cl);

                btn[i].setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        telnum.setText("");

                    }

                });

            }

            else if (i==13){

                btn[i]= (Button) view.findViewById(R.id.br);

                btn[i].setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        if(telnum.getText().length()>0)

                            telnum.setText(telnum.getText().subSequence(0,telnum.getText().length()-1));

                    }

                });

            }

        }

        return view;

    }

}

PhoneBook.java

package com.swiss126.vcmsg;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.app.Fragment;

import android.view.ContextMenu;

import android.view.LayoutInflater;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import com.anye.greendao.gen.DaoSession;

import com.anye.greendao.gen.UsersDao;

import com.wuyudong.getcontacts.domain.ContactInfo;

import com.wuyudong.getcontacts.service.ContactInfoParser;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

 * A simple {@link Fragment} subclass.

 */

public class PhoneBook extends Fragment {

    private FragmentManager fragmentManager;

    private FragmentTransaction fragmentTransaction;

    private List<Map<String, ?>> data;

    private UsersDao usersDao;

    private ListView listItem;

    private List<Users> usersList;

    private Users choosed;

    public PhoneBook() {

        // Required empty public constructor

    }

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,

                             Bundle savedInstanceState) {

        // get the note DAO

        DaoSession daoSession = ((App) getActivity().getApplication()).getDaoSession(getActivity().getApplicationContext());

        usersDao = daoSession.getUsersDao();

        // Inflate the layout for this fragment

        View view=inflater.inflate(R.layout.fragment_phone_book, container, false);

        listItem = (ListView) view.findViewById(R.id.list);

        data = getData();

        SimpleAdapter adapter = new SimpleAdapter(getActivity(), data, R.layout.item,

                new String[] { "image", "name", "publish", "tel" },

                new int[] { R.id.image, R.id.name, R.id.publish, R.id.tel });

        //image头像,name名字,tel号码,publish最近呼叫时间

        listItem.setAdapter(adapter);

        listItem.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> adapter, View view, int position,

                                    long id) {

                Map<String, Object> item=(Map<String, Object>) data.get(position);

                if(!usersList.isEmpty())

                {

                    choosed=usersList.get(position);

                }

                //给ListView注册上下文菜单

                registerForContextMenu(listItem);//View类型

                //弹出选项菜单(导入,添加,删除,查看,修改,呼叫)

                //Toast.makeText(getActivity().getApplicationContext(), item.get("name")+"电话号码是:"+item.get("tel")+"position:"+position, Toast.LENGTH_LONG).show();

            }

        });

        return view;

    }

    private void getSystemInfo() {

        List<ContactInfo> infos = ContactInfoParser.findAll(getActivity().getApplicationContext());

        for (ContactInfo info : infos) {

            Users temp=new Users();

            temp.setName(info.getName());

            temp.setTelnum(info.getPhone());

            temp.setEmail(info.getEmail());

            temp.setQQ(info.getQq());

            try {

            usersDao.insert(temp);

            }catch (Exception e)

            {

                continue;

            }

        }

        UpdateView();

    }

    private List<Map<String, ?>> getData() {

        List<Map<String, ?>> data = new ArrayList<Map<String, ?>>();

        usersList=usersDao.loadAll();

        if(usersDao.loadAll().isEmpty())

        {

            Map<String, Object> item = new HashMap<String, Object>();

            item.put("image",R.drawable.ico);

            item.put("name", "温馨提示:");

            item.put("publish", "");

            item.put("tel", "没有联系人,请添加联系人!");

            data.add(item);

        }

        else {

            for ( int i=0;i<usersList.size();i++) {

                Map<String, Object> item = new HashMap<String, Object>();

                item.put("image", R.drawable.ico);

                item.put("name", usersList.get(i).getName());

                item.put("publish", "");

                item.put("tel", usersList.get(i).getTelnum());

                data.add(item);

            }

        }

        /*得到一系列数据~

        Map<String, Object> item = new HashMap<String, Object>();

        item.put("image", R.drawable.ico);

        item.put("name", "洛天依");

        item.put("publish", "");

        item.put("tel", "13066112255");

        data.add(item);

        */

        return data;

    }

    private void UpdateView(){

        fragmentManager = getFragmentManager();

        fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.replace(R.id.loader, new PhoneBook());

        fragmentTransaction.commit();

    }

    private void ToInfo(Users choosed, boolean b){//跳转自信息修改、查看页面

        fragmentManager = getFragmentManager();

        fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.replace(R.id.loader, new Info(choosed,b));

        fragmentTransaction.commit();

    }

    private void ToInfo(){//跳转自添加页面

        fragmentManager = getFragmentManager();

        fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.replace(R.id.loader, new Info());

        fragmentTransaction.commit();

    }

    //菜单!

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

        // 加载xml中的上下文菜单

        super.onCreateContextMenu(menu, v,  menuInfo);

        MenuInflater inflater =  getActivity().getMenuInflater();

        if(usersList.isEmpty()) {

            inflater.inflate(R.menu.menu_empty, menu);

        }else {

            inflater.inflate(R.menu.menu, menu);

        }

    }

    public boolean onContextItemSelected(MenuItem item) {

        // TODO Auto-generated  method stub

        switch (item.getItemId()) {

            case R.id.menu_add://转到Info界面添加联系人

                ToInfo();

                break;

            case R.id.menu_del:

                usersDao.delete(choosed);

                UpdateView();

                break;

            case R.id.menu_call://系统拨号

                //用intent启动拨打电话

                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+choosed.getTelnum()));

                startActivity(intent);

                break;

            case R.id.menu_edit://转到Info界面修改联系人

                ToInfo(choosed, true);

                break;

            case R.id.menu_info://转到Info界面查看联系人

                ToInfo(choosed, false);

                break;

            case R.id.menu_input://导入系统联系人

                getSystemInfo();

                break;

        }

        return super.onContextItemSelected(item);

    }

}

http://pan.baidu.com/s/1bprcGk3


开源APP发布——VCMsg的评论 (共 条)

分享到微博请遵守国家法律