2016-08-01 4 views
0

나는 인터넷에서받은 아래 코드를 사용하여 내 전화의 통화 기록 화면에 연결할 수있었습니다. 클릭 한 번으로 단일 항목의 통화 세부 사항, 통화 횟수, 통화 시간 등을 선택할 수 있습니까?안드로이드는 통화 내역 화면에서 항목을 선택합니다.

Intent showCallLog = new Intent(); 
    showCallLog.setAction(Intent.ACTION_VIEW); 
    showCallLog.setType(CallLog.Calls.CONTENT_TYPE); 
    startActivity(showCallLog); 
+0

확인이 link..http : //stackoverflow.com/questions/19493360/get-last-call-duration-in-android – dipali

답변

2

로그에서 단일 항목을 고를 의도는 없습니다.

하지만 db에서 모든 정보를 가져와 dialog list에 표시하고 원하는 contact을 선택할 수 있습니다.

아래의 코드가 작동하는지 확인하십시오.

주 : OS is 6.0 or greater 다음 사용자로부터 runtime permission을받을 경우 매니페스트에 권한을 추가하고 방법 here.

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

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button ContactPickBtn = (Button) findViewById(R.id.btnPick); 
     ContactPickBtn.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       String[] strFields = {android.provider.CallLog.Calls._ID, 
         android.provider.CallLog.Calls.NUMBER, 
         android.provider.CallLog.Calls.CACHED_NAME,}; 
       String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
       // Make you have call logs permissions 
       // if your os is 6.0 get call log permission at runtime. 
       final Cursor cursorCall = getContentResolver().query(
         android.provider.CallLog.Calls.CONTENT_URI, strFields, 
         null, null, strOrder); 

       AlertDialog.Builder builder = new AlertDialog.Builder(
         MainActivity.this); 
       builder.setTitle("Pick a contact"); 
       android.content.DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialogInterface, 
             int item) { 
         cursorCall.moveToPosition(item); 
         Toast.makeText(
           MainActivity.this, 
           cursorCall.getString(cursorCall 
             .getColumnIndex(android.provider.CallLog.Calls.NUMBER)), 
           Toast.LENGTH_LONG).show(); 
         cursorCall.close(); 
         return; 
        } 
       }; 
       builder.setCursor(cursorCall, listener, 
         android.provider.CallLog.Calls.CACHED_NAME); 
       builder.create().show(); 
      } 
     }); 
    } 
} 
+0

고마워요 @Sohail Zahid .......... 이것은 많은 도움이되었습니다. 내 목적은 ...하지만 네, 올바른 방향으로 안내해주었습니다 ... 고맙습니다. 다시 – bharatkumar

+0

@bharatkumar 당신은 오신 것을 환영합니다. –

+0

@Sohail Zahid는 여분의 커서를 가지고 있기 때문에 연락 커서를 사용하지 않고 통화 로그 사진을 얻을 수 있습니다. –