我是Android开发的新手。我想拨打电话,但不想将号码存储在我的通话记录中。通话结束后如何从通话记录中删除该号码?
我无论如何都使用4.2.2,我不得不修改aftab的代码,因为它对我不起作用。给出我想做的事情可能是一个麻烦的问题,即在传入呼叫结束后立即更新呼叫日志。我认为我必须给操作系统足够的时间来更新表,然后再删除条目,否则它将不存在:
private void deleteNumber(String phoneNumber) {
try {
Thread.sleep(4000);
String strNumberOne[] = { phoneNumber };
Cursor cursor = context.getContentResolver().query(
CallLog.Calls.CONTENT_URI, null,
CallLog.Calls.NUMBER + " = ? ", strNumberOne, "");
boolean bol = cursor.moveToFirst();
if (bol) {
do {
int idOfRowToDelete = cursor.getInt(cursor
.getColumnIndex(CallLog.Calls._ID));
context.getContentResolver().delete(
CallLog.Calls.CONTENT_URI,
CallLog.Calls._ID + "= ? ",
new String[] { String.valueOf(idOfRowToDelete) });
} while (cursor.moveToNext());
}
} catch (Exception ex) {
Log.v("deleteNumber",
"Exception, unable to remove # from call log: "
+ ex.toString());
}
}
并调用我在另一个线程上运行的函数(因为我正在睡觉):
new Thread() {
public void run() {
deleteNumber(incomingNumber);
}
}.start();
添加睡眠后,在通话结束后立即尝试删除时,似乎可以使用。
更新:意识到最后一条评论之后,我们可以在android提供程序调用日志uri上设置contentobserver:
public class BlockerContentObserver extends ContentObserver{
private Context context;
private String phoneNumber;
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public BlockerContentObserver(Handler handler,Context context) {
super(handler);
this.context=context;
}
@Override
public boolean deliverSelfNotifications() {
return true;
}
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
Log.v(Consts.TAG,"has call log changed:"+selfChange);
deleteNumber(phoneNumber);
}
private void deleteNumber(String phoneNumber) {
try {
String strNumberOne[] = { phoneNumber };
Cursor cursor = context.getContentResolver().query(
CallLog.Calls.CONTENT_URI, null,
CallLog.Calls.NUMBER + " = ? ", strNumberOne, "");
boolean bol = cursor.moveToFirst();
if (bol) {
do {
int idOfRowToDelete = cursor.getInt(cursor
.getColumnIndex(CallLog.Calls._ID));
context.getContentResolver().delete(
CallLog.Calls.CONTENT_URI,
CallLog.Calls._ID + "= ? ",
new String[] { String.valueOf(idOfRowToDelete) });
} while (cursor.moveToNext());
}
} catch (Exception ex) {
Log.v(Consts.TAG,
"Exception, unable to remove # from call log: "
+ ex.toString());
}
}
}
现在,我们使用以下方法注册以监听呼叫日志数据库中的更改:
mContentObserver = new BlockerContentObserver(new Handler(),context);
然后我们创建一个方法来注册事件或取消注册:
/*handles the registration of our content observer used for monitoring the call log*/
private void RegisterContentObserver(boolean shouldRegister){
if(shouldRegister)
{
context.getContentResolver().registerContentObserver(
android.provider.CallLog.Calls.CONTENT_URI,
true,
mContentObserver);
}
else {
try {
context.getContentResolver().unregisterContentObserver(mContentObserver);
} catch (IllegalStateException ise) {
// Do Nothing. Observer has already been unregistered.
}
}
}
问题内容: 我正在尝试删除特定号码的所有通话记录。 我想触发查询,因为保存在callLog中的mobNum是+916666666666,我正在传递号码6666666666。因此它不匹配。有人可以帮助我克服这个问题吗? 问题答案: 检查以下链接: 在Android中删除通话记录 SO:通话结束后从通话记录中删除通话
我得到一个错误,我不明白,不能找到任何帮助完整的信息: 请求的资源上不存在Access-Control-Allow-Origin标头。因此不允许访问Origin的https:*******' 。响应具有HTTP状态代码401。
关于通话记录 可确认通话记录。显示的图标可能因拨打或接听状态而异。 选择通话记录时显示的图标 已接来电 显示已接听的电话。 未接来电 显示未接听的电话。 已拨电话 显示电话的拨打记录。 语音消息 显示已接收的语音消息。 新的语音消息 仅于新接收语音消息时显示。 登录要求 仅于接收联系人名单的登录要求时显示。 提示 未确认的记录,会在(通话记录)的 (未处理事项)显示。 使用PSP-2000
问题内容: 我想通知任何传入和传出语音呼叫的代码。我需要掌握以下所有内容: 如果是来电或去电 拨打的号码或来电显示的电话号码 通话时长,或者如果错过了通话 如果电话号码与电话的联系人列表中的某人匹配,如果我可以获得更多的联系信息,特别是联系人姓名,那也将是一件很圆滑的事。 通话结束后,我需要我的代码来获取这些信息。也许我只是没有在寻找正确的术语,但是我很难找到如何实现此目标的任何示例。 如果有人可
我正在做一个项目来记录在android中的VOIP通话,我没有找到任何解决方案,有很多应用程序支持手机上的VOIP录音。我找不到任何教程和帮助。Cube Call Recorder是提供此功能的应用程序之一,但我不知道如何做到这一点。我通过使用android MediaRecorder开始录音进行了测试,然后启动了WhatsApp通话,所以其他人无法收听我的声音。通话后,我检查了只有我的声音保存在
显示特定的通话记录 可显示指定的通话记录。选择通话记录后按下按钮,并选择选项选单的[依种类排列记录]。 通话记录可从以下项目中选择。 所有通话记录 显示通话记录。 XX件未处理事项 显示前次确认后发生的记录。 没有其他记录时,会显示[暂无任何未处理事项]。 语音消息 显示语音消息。 未接来电 显示未接来电记录。 已接来电 显示已接来电记录。 已拨电话 显示已拨电话记录。 提示 亦可于显示通