package com.example.contextchecktest;import android.os.Bundle;
import android.provider.CallLog;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.view.Menu;public class ContactsCheck extends Activity {    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contacts_check);
        clearContects(this, "10010");
    }    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_contacts_check, menu);
        return true;
    }
    public  void clearContects(Context context,String phoneNum)
    {
     try {
ContentResolver resolver = context.getContentResolver();  
Cursor cursor =  resolver.query(CallLog.Calls.CONTENT_URI, null, "number=?", new String[]{phoneNum}, null);
while(cursor.moveToNext()) {  
    resolver.delete(CallLog.Calls.CONTENT_URI, "number=?", new String[] {phoneNum});  
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

    }
}
就一个删除联系人的操作。如果你的手机上有类似360的管理软件,就会弹出一个框,问你是否允许该操作执行。允许就成功了,拒绝就不会成功,但是程序没有任何异常。

解决方案 »

  1.   

    http://developer.android.com/reference/android/content/ContentResolver.htmldelete 是有返回参数的 我没记错的话 返回 -1 表示失败好像是 Cursor 判断一下 getCount()
    Returns the numbers of rows in the cursor你的逻辑有点考虑不太完整吧。个人建议
      

  2.   


    嗯。我懂你的意思,我现在的问题就是getCount拒绝了是返回0,根本不会进入delete。
    不过你这样一说,我试了下getColumnCount,拒绝的时候返回列数是1.允许的时候是26.看来这个可以用来作为判断依据。
      

  3.   

    在Cursor cursor =  resolver.query这句就报错了,怎么用getCount判断
      

  4.   

    我碰到了同样的问题,打开照相机灯光,camera.open时有些手机需要用户授权,但是用户拒绝后仍返回一个正确的对象给你,没有异常,没有返回码,我怎么能知道用户是允许了还是拒绝了呢?
      

  5.   

    context.checkCallingOrSelfPermission发现还是不行