加权限:
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
主逻辑代码:
<span style="font-size:18px;">package com.example.day15_contentresolverCall;
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 com.example.day15_contentresolver.R;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CallLog;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView lv;
List<Map<String,Object>> list;
//声明解析者对象
ContentResolver cr;
//电话记录的uri对象
Uri uri=CallLog.Calls.CONTENT_URI;
//String str="content://Call_log/calls";
//Uri uri=Uri.parse(str);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.lv);
cr=getContentResolver();
Cursor cursor=cr.query(uri, null, null, null, null);
SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(), getData(cursor), R.layout.style,new String[]{"num","date"},new int[]{R.id.num,R.id.date});
lv.setAdapter(adapter);
registerForContextMenu(lv);
}
public List<Map<String,Object>> getData(Cursor c)
{
list=new ArrayList<Map<String,Object>>();
while(c.moveToNext())
{
Map<String,Object> map=new HashMap<String, Object>();
String num=c.getString(c.getColumnIndex(CallLog.Calls.NUMBER));
int id=c.getInt(c.getColumnIndex(CallLog.Calls._ID));
int date=c.getInt(c.getColumnIndex(CallLog.Calls.DATE));
map.put("num",num);
map.put("sid",id);
map.put("date",getDate(date));
list.add(map);
}
return list;
}
public String getDate(int date)
{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
return format.format(new Date(date));
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.main, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info=(AdapterContextMenuInfo) item.getMenuInfo();
int pos=info.position;
int id=(Integer) list.get(pos).get("sid");
switch(item.getItemId())
{
case R.id.add:
ContentValues cv=new ContentValues();
cv.put(CallLog.Calls.NUMBER,"10086");
cv.put(CallLog.Calls._ID,5);
cv.put(CallLog.Calls.DATE,System.currentTimeMillis());
cv.put(CallLog.Calls.TYPE,1);
cr.insert(uri, cv);
break;
case R.id.update:
ContentValues cv2=new ContentValues();
cv2.put(CallLog.Calls.NUMBER,"1008611");
int x=cr.update(uri, cv2,CallLog.Calls._ID+" = ?", new String[]{id+""});
if(x>0)
{
Toast.makeText(MainActivity.this,"修改成功",0).show();
}
else
{
Toast.makeText(MainActivity.this,"修改失败",0).show();
}
break;
case R.id.delete:
int i=cr.delete(uri,CallLog.Calls._ID+" = ?", new String[]{id+""});
if(i>0)
{
Toast.makeText(MainActivity.this,"修改成功",0).show();
}
else
{
Toast.makeText(MainActivity.this,"修改失败",0).show();
}
break;
}
return super.onContextItemSelected(item);
}
}
</span>
主布局文件:
<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
</span>
适配器布局代码:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff0000"/>
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0000ff"/>
</LinearLayout>
</span>