【问题标题】:Mark Missed Calls as read in Android Call Log在 Android 通话记录中将未接来电标记为已读
【发布时间】:2013-12-19 07:17:24
【问题描述】:

我正在尝试将未接来电标记为已读。我正在尝试以下方法:

ContentValues values = new ContentValues();    
values.put(Calls.NEW, Integer.valueOf(0));    
if (android.os.Build.VERSION.SDK_INT >= 14){    
   values.put(Calls.IS_READ, Integer.valueOf(1));    
}

StringBuilder where = new StringBuilder();    
where.append(Calls.NEW);
where.append(" = 1 AND ");    
where.append(Calls.TYPE);    
where.append(" = ?");    
ContentResolver cr = getContentResolver();    
Uri baseUri = Uri.parse("content://call_log/calls");    
int numUpdated = cr.update(baseUri, values, where.toString(),new String[]{ Integer.toString(Calls.MISSED_TYPE) });

这实际上标记了我的应用程序读取的呼叫,但本机 android 应用程序没有检测到这一点,并且仍然显示未接来电徽章和通知。我们如何才能清除它。

【问题讨论】:

    标签: android calllog


    【解决方案1】:

    先添加权限:

    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
    

    在你插入改变参数is_read的函数后,我们从它的id中得到未接来电:

    public void markCallLogRead(int id) {
    
        Uri CALLLOG_URI = CallLog.Calls.CONTENT_URI;
        ContentValues values = new ContentValues();
        values.put("is_read", true);
        try{
            getContentResolver().update(CALLLOG_URI, values, "_id=?",
                    new String[] { String.valueOf(id) });
        }catch(Exception e){
            e.printStackTrace();
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      您无法清除未接来电通知。 Google 禁止第三方应用访问此功能。

      【讨论】:

      • 添加一些解释,说明此答案如何帮助 OP 解决当前问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多