我想知道是否有办法知道呼叫的内容提供商是否已经改变.我的意思是,如果我拨打电话,或者我接听电话,它会返回一个"标志",表示已将新日志添加到呼叫日志中,或者Android存储有关呼叫的信息的位置.
因为,当我拨打电话时,Android会在内容提供商中存储号码,联系人姓名(如果存在),通话时间,持续时间等等.那么有没有办法捕获这个"标志",表示呼叫的内容提供商更大,我的意思是,在内容提供商CallLog.Calls上插入了新数据.
所以,我仍然对这个问题有很多怀疑.我不知道在哪里注册内容观察者.我的意图是,当CallLog内容提供程序中的某些内容发生更改时,将使用代码的insert方法.
我的意思是,除非将新数据添加到CallLog内容提供程序,否则代码将不会执行任何操作.如果已将某些数据添加到CallLog内容提供程序,则代码将查询新数据,然后将插入.我想这样做,因为没有内容观察者,应用程序在每次运行应用程序时已经插入的数据库中插入数据,得到了吗?
所以这是我的代码.如果有人可以告诉我放在哪里registerContentObserver()以及其他所需的东西.
public class RatedCalls extends ListActivity {
private SQLiteDatabase db;
private CallDataHelper dh = null;
StringBuilder sb = new StringBuilder();
OpenHelper openHelper = new OpenHelper(RatedCalls.this);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Cursor cursor = getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI, null, null, null,
android.provider.CallLog.Calls.DATE + " DESC ");
dh = new CallDataHelper(this);
db = openHelper.getWritableDatabase();
startManagingCursor(cursor);
int numberColumnId = cursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER);
int durationId = cursor.getColumnIndex(android.provider.CallLog.Calls.DURATION);
int contactNameId = cursor.getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME);
int dateId = cursor.getColumnIndex(android.provider.CallLog.Calls.DATE);
int numTypeId = cursor.getColumnIndex(android.provider.CallLog.Calls.CACHED_NUMBER_TYPE);
Date dt …Run Code Online (Sandbox Code Playgroud) 我能够以编程方式在Android调用日志中插入一个条目,其中包含数字,日期,持续时间和类型但我无法弄清楚如何同时包含照片,标签和名称?我添加的条目是针对具有完全相同编号的现有联系人.我注意到在摩托罗拉设备上,如果该号码与现有联系人相匹配,则显示名称和图片,但在我的HTC Incredible上缺少某些内容?
我做了以下..(不知道甚至尝试什么照片)
ContentValues values = new ContentValues();
values.put(CallLog.Calls.NUMBER, number);
values.put(CallLog.Calls.CACHED_NAME, name);
values.put(CallLog.Calls.CACHED_NUMBER_LABEL, label);
values.put(CallLog.Calls.DATE, date);
values.put(CallLog.Calls.DURATION, duration);
values.put(CallLog.Calls.TYPE, myCallType);
context.getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);
Run Code Online (Sandbox Code Playgroud) 无论如何可以写入调用日志数据库?我的意思是我想将所选数字添加到通话记录中.我尝试在网上搜索教程但找不到任何...虽然有一件事是肯定的,但它可以完成.因为我已经看到很多在线应用程序,它们可以恢复通话记录,所以我想我们可以以某种方式修改通话记录数据库(但我怎么也不清楚).
我已经阅读过这篇文章,但它恰好被贴了很久才回来.
任何帮助将不胜感激!感谢名单!
如何从应用程序中删除/删除通话记录.我这样做
this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,null,null);
Run Code Online (Sandbox Code Playgroud)
它不起作用.
我想创建一个Intent,打开屏幕显示当前设备的通话记录?
我如何指定这样的意图?
我正在寻找一种最简单的方法来获得上次拨打号码的通话时长.因此,例如,如果我在拨打电话时打电话给我的妈妈,则会出现持续时间的通知.
我正在尝试以下但问题是它带有一个完整的持续时间列表.传入,传出,错过.
我如何区分它:
我尝试了以下方法:
private void getCallDetails() {
StringBuffer sb = new StringBuffer();
Cursor cur = getContentResolver().query( CallLog.Calls.CONTENT_URI,null, null,null, android.provider.CallLog.Calls.DATE + " DESC");
int number = cur.getColumnIndex( CallLog.Calls.NUMBER );
int duration = cur.getColumnIndex( CallLog.Calls.DURATION);
sb.append( "Call Details : \n");
while ( cur.moveToNext() ) {
String phNumber = cur.getString( number );
String callDuration = cur.getString( duration );
String dir = null;
sb.append( "\nPhone Number:--- "+phNumber +" \nCall duration in sec :--- "+callDuration );
sb.append("\n----------------------------------");
}
cur.close();
call.setText(sb);
}
Run Code Online (Sandbox Code Playgroud) 我想要得到所有Call-Logs excluding SMS但我得到一个合并列表.
如何仅过滤呼叫的呼叫记录?
我正在使用以下代码.
String[] strFields = {
android.provider.CallLog.Calls.NUMBER,
android.provider.CallLog.Calls.TYPE,
android.provider.CallLog.Calls.CACHED_NAME,
android.provider.CallLog.Calls.CACHED_NUMBER_TYPE,
android.provider.CallLog.Calls.DATE
};
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
Uri calluri = Uri.parse("content://call_log/calls");
Cursor mCallCursor = getContentResolver().query(
calluri,
strFields,
null,
null,
strOrder
);
Run Code Online (Sandbox Code Playgroud)
我正在使用Samsung Note 2进行测试.
如何使用 expo 在 React Native 中打开短信日志和通话日志
在我的应用程序中,当用户拒绝呼叫时拦截是很好的,即选择发送忙音.除了在有来电时收到通知,还有什么方法可以做到这一点吗?我没有在文档中找到任何关于此的内容.此信息是否存储在呼叫日志中,即我是否可以轮询呼叫日志以查看呼叫是否被拒绝或已应答?
如何在android中清除整个通话记录历史记录?目前我有这个代码,只能清除特定的通话记录
public void DeleteCallLogByNumber(String number) {
String queryString="NUMBER="+number;
this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,queryString,null);
}
}
Run Code Online (Sandbox Code Playgroud)