0
다른 활동에서 번호를 받고있는 특정 발신자의 통화 기록을 표시하고 싶지만 답을 찾지 못한 검색어는 해결책을 제공해주세요. 코멘트에있는 코드는 내가 시도한 것이다. 감사특정 번호의 통화 기록
public class CallLogs extends Activity {
TextView tv,tv2;
//ListView lv;
//SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call_logs);
tv=(TextView)findViewById(R.id.textView1);
tv2=(TextView)findViewById(R.id.textView2);
//lv=(ListView)findViewById(R.id.listView1);
getCallDetails();
String phone = getIntent().getExtras().getString("Phone");
tv2.setText(phone);
}
private void getCallDetails() {
String phone = getIntent().getExtras().getString("Phone");
StringBuffer sb = new StringBuffer();
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
/* Query the CallLog Content Provider */
Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null,
/*CallLog.Calls.NUMBER+" = ?"*/null,/*new String[]{phone}*/null, strOrder);
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
sb.append("Call Log :");
while (managedCursor.moveToNext()) {
String phNum = managedCursor.getString(number);
String callTypeCode = managedCursor.getString(type);
String strcallDate = managedCursor.getString(date);
Date callDate = new Date(Long.valueOf(strcallDate));
String callDuration = managedCursor.getString(duration);
String callType = null;
int callcode = Integer.parseInt(callTypeCode);
switch (callcode) {
case CallLog.Calls.OUTGOING_TYPE:
callType = "Outgoing";
break;
case CallLog.Calls.INCOMING_TYPE:
callType = "Incoming";
break;
case CallLog.Calls.MISSED_TYPE:
callType = "Missed";
break;
}
sb.append("Phone Number: " + phNum + " \nCall Type:"
+ callType + " \nCall Date: " + callDate
+ " \nCall duration in sec : " + callDuration);
sb.append("\n--------------------------");
// adapter = new SimpleCursorAdapter(this,R.layout.custcontview,managedCursor,new String[]{"NUMBER","TYPE","DATE","DURATION"},new int[] {R.id.ccontNo,R.id.ccontName,R.id.ccontType,R.id.textView1});
}
tv.setText(sb);
// lv.setAdapter(adapter);
// managedCursor.close();
}
}
내가이 줄 커서 managedCursor = getContentResolver()를 수정 로그 retreive하는 매니페스트
사용에 다음 코드를 다음과 같은 권한을 추가합니다. 쿼리 (CallLog .Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + "=?", 새 문자열 [] {전화}, strOrder); 01-16 03 : 35 : 56.782 : E/AndroidRuntime (824) : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.example.econtact/com.example.econtact .CallLogs} : java.lang.IllegalArgumentException : 인덱스 1의 바인드 값이 null입니다. 01-16 03 : 35 : 56.782 : E/AndroidRuntime (824) : \t android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2180)) – radhe12
"바인드 값"은 선택 항목의 selectionArgs를 쿼리()에 삽입하는 것으로 간주됩니다. 해당 selArgs 값이 null 인 경우 –
"strOrder"가 null이거나 "phone"이 null 인 경우 –