• Android学习笔记Call Log 访问


    学习CallLog的访问整理代码如下:

    UltraCallLogActivity.java

     package huh.test.UltraCallLog;


    import java.sql.Date;
    import java.text.SimpleDateFormat;
    import java.util.Random;

    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.provider.CallLog;
    import android.view.ContextMenu;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter;
    import android.widget.Toast;

    public class UltraCallLogActivity extends Activity {
        private ListView mCallLogList;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            mCallLogList = (ListView) findViewById(R.id.listView);
            mCallLogList.setOnCreateContextMenuListener(this);
            OnItemClickListener listener = new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    // TODO Auto-generated method stub
                    String string = new String("You clicked the listView!");
                    string = string + "\nPosittion: " + arg2;
                    string = string + "\nId: "  + arg3;
                    string = string + "\nObject: "
                            + mCallLogList.getItemAtPosition(arg2).toString();
                    DisplayToast(string);
                }
            };
            mCallLogList.setOnItemClickListener(listener);
            InsertCallLog();
            // ClearCallLog();
            
    // DisplayCallLog();
            DeleteCallLogByNumber(new String[] { "44444" });
            CallLogListSetAdapte();
        }

        public void DisplayCallLog() {
            String[] projection = new String[] { CallLog.Calls.NUMBER,
                    CallLog.Calls.CACHED_NAME, CallLog.Calls.TYPE,
                    CallLog.Calls.DATE };
            Cursor c = GetCallLog(projection);
            DisplayCursor(c);
            c.close();

        }

        public void CallLogListSetAdapte() {
            String[] column = new String[] { CallLog.Calls.NUMBER
            // ,
            };
            int[] views = new int[] { android.R.id.text1
            // , android.R.id.text1
            };

            Cursor c = GetCallLog(null);
            SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                    android.R.layout.simple_list_item_1, c, column, views);
            mCallLogList.setAdapter(adapter);
        }

        public Cursor GetCallLog(String[] projection) {
            ContentResolver cr = getContentResolver();
            Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, projection, null,
                    null, CallLog.Calls.DEFAULT_SORT_ORDER);
            return cursor;

        }

        // 删除某联系人最近的一次来电
        public void DeleteCallLogByNumber(String[] number) {
            ContentResolver resolver = getContentResolver();
            // 这里涉及到内容提供者的知识,其实这里是直接在操作 Android 的数据库
            Cursor cursor = resolver.query(CallLog.Calls.CONTENT_URI,
                    new String[] { "_id" }, "number=?", number, "_id desc limit 1");
            if (cursor.moveToFirst()) {
                int id = cursor.getInt(0);
                resolver.delete(CallLog.Calls.CONTENT_URI, "_id=?",
                        new String[] { id + "" });
            }
        }

        // Clear CallLog
        public void ClearCallLog() {

            ContentResolver resolver = getContentResolver();
            resolver.delete(CallLog.Calls.CONTENT_URI, nullnull);
        }

        public void InsertCallLog() {
            Cursor cursor = GetCallLog(null);
            if (cursor.getCount() > 30) {

                return;
            }
            ContentValues values = new ContentValues();
            for (int i = 0; i < 10; i++) {
                Random random = new Random();
                values.put(CallLog.Calls.NUMBER, "13621354" + random.nextInt(1000));
                // values.put(CallLog.Calls.CACHED_NAME, "Jack" + i);

                values.put(CallLog.Calls.DATE, System.currentTimeMillis());
                values.put(CallLog.Calls.TYPE, CallLog.Calls.MISSED_TYPE);// 未接
                values.put(CallLog.Calls.NEW, "1");// 0已看1未看
                InsertCallLogByContentValues(values);
            }
        }

        public void InsertCallLogByContentValues(ContentValues values) {
            ContentResolver cr = getContentResolver();
            cr.insert(CallLog.CONTENT_URI, values);
        }

        public void DisplayCursor(Cursor cursor) {
            while (cursor.moveToNext()) {
                String str = "Number:\t\t\t" + cursor.getString(0);
                str = str + "\nName:\t\t\t" + cursor.getString(1);
                str = str + "\nType:\t\t\t" + cursor.getInt(2);
                SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                Date date = new Date(Long.parseLong(cursor.getString(3)));
                str = str + "\nDate:\t\t\t" + sfd.format(date);
                DisplayToast(str);
            }
        }

        public void DisplayToast(String s) {
            Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
        }

        // /////////////////////////Menu Process////////////////////////////////
        @Override
        public void onCreateContextMenu(ContextMenu menu, View view,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, view, menuInfo);
            CreateMenu(menu);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            CreateMenu(menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            return MenuChoice(item);
        }

        @Override
        public boolean onContextItemSelected(MenuItem item) {
            return MenuChoice(item);
        }

        private void CreateMenu(Menu menu) {
            MenuItem mnu1 = menu.add(0, 0, 0, "Clear All");
            {
                mnu1.setAlphabeticShortcut('a');
                mnu1.setIcon(R.drawable.ic_launcher);
            }
            MenuItem mnu2 = menu.add(0, 1, 1, "Edit");
            {
                mnu2.setAlphabeticShortcut('b');
                mnu2.setIcon(R.drawable.ic_launcher);
            }
            MenuItem mnu3 = menu.add(0, 2, 2, "Delete");
            {
                mnu3.setAlphabeticShortcut('c');
                mnu3.setIcon(R.drawable.ic_launcher);
            }
            MenuItem mnu4 = menu.add(0, 3, 3, "Insert");
            {
                mnu4.setAlphabeticShortcut('d');
                mnu4.setIcon(R.drawable.ic_launcher);
            }
            MenuItem mnu5 = menu.add(0, 4, 4, "About");
            {
                mnu5.setAlphabeticShortcut('e');
                mnu5.setIcon(R.drawable.ic_launcher);
            }
        }

        private boolean MenuChoice(MenuItem item) {
            switch (item.getItemId()) {
            case 0:
                ClearCallLog();
                return true;
            case 1:
                Toast.makeText(this, "You clicked on Item 2", Toast.LENGTH_LONG)
                        .show();
                return true;
            case 2:
                Toast.makeText(this, "You clicked on Item 3", Toast.LENGTH_LONG)
                        .show();
                return true;
            case 3:
                InsertCallLog();
                CallLogListSetAdapte();
                return true;
            case 4:
                Toast.makeText(this, "You clicked on Item 5", Toast.LENGTH_LONG)
                        .show();
                return true;
            case 5:
                Toast.makeText(this, "You clicked on Item 6", Toast.LENGTH_LONG)
                        .show();
                return true;
            case 6:
                Toast.makeText(this, "You clicked on Item 7", Toast.LENGTH_LONG)
                        .show();
                return true;
            }
            return false;
        }

     main.xml

     View Code

     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width
    ="fill_parent"
        android:layout_height
    ="fill_parent"
        android:orientation
    ="vertical" >


        <ListView
            
    android:id="@+id/listView"
            android:layout_width
    ="fill_parent"
            android:layout_height
    ="wrap_content"
            android:layout_weight
    ="1"
            android:stackFromBottom
    ="false"
            android:transcriptMode
    ="normal" />

    </LinearLayout>
  • 相关阅读:
    T2487 公交司机(搜索题)(小L的一生)
    T2485 汉诺塔升级版(普及)(递归)
    T2483 电梯(模拟题)
    将图片返回到前端
    session
    TCP协议
    socket
    断点调试
    解析字符串
    Cookie
  • 原文地址:https://www.cnblogs.com/huangliujing/p/2268986.html
Copyright © 2020-2023  润新知