2017-03-04 9 views
-1

私はコールログを削除するためのアプリケーションをプログラミングしています。仮想メソッドを呼び出すための試み「int型android.content.Context.checkPermission(java.lang.Stringで、int型、int型:ここでは、コードAndroidの例外仮想メソッドを呼び出そうとしています 'int android.content.Context.checkPermission(java.lang.String、int、int)

public class PhoneStateReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

    try { 
     System.out.println("Receiver start"); 
     String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 


     if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
      Toast.makeText(context, "Call Idle State"+incomingNumber, Toast.LENGTH_SHORT).show(); 


       DeleteCallLogByNumber("97********"); 
       Toast.makeText(context, "Log deleted", Toast.LENGTH_SHORT).show(); 


     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

public void DeleteCallLogByNumber(String number) { 
    String queryString = "NUMBER=" + number; 


    if (ActivityCompat.checkSelfPermission(MainActivity.Context(), Manifest.permission.WRITE_CALL_LOG) != PackageManager.PERMISSION_GRANTED) { 

     return; 
    } 
    MainActivity.ContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null); 
    } 
} 

がある私は

のjava.lang.NullPointerExceptionとして例外を取得しています「)nullオブジェクト参照

+1

ない* Downvoter *をそれを考え出していますが、むしろ活動の許可を確認する必要がありますbroadcastreceiverよりも – rafsanahmad007

+0

@ rafsanahmad007私はそれを試みましたが、それはバックグラウンドサービスとしては役に立たない –

答えて

0

に私は自分自身

public class PhoneStateReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

try { 
    System.out.println("Receiver start"); 
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
    String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 


    if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
     Toast.makeText(context, "Call Idle State"+incomingNumber, Toast.LENGTH_SHORT).show(); 


      DeleteCallLogByNumber("97********", context); 
      Toast.makeText(context, "Log deleted", Toast.LENGTH_SHORT).show(); 


    } 
} catch (Exception e) { 
    e.printStackTrace(); 
    } 

} 

public void DeleteCallLogByNumber(String number, Context context) { 
String queryString = "NUMBER='" + number+"'"; 


if (ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_CALL_LOG) != PackageManager.PERMISSION_GRANTED) { 

    return; 
} 
context.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null); 
} 
} 
関連する問題

 関連する問題