2

を得ていない、コールログは、私は私の連絡先に</strong><strong>されていない<code>CALL-LOGS</code>からすべての番号のリストを取得しようとしていますCACHED_NAME

私を呼び出して私の連絡先に誰もが誰であるかとき、私はissueに直面しています。

カーソル「C」が "name『(CACHED_NAME)がnullあるので

。』その数を返している。しかし、私はcall-logアプリケーションを開き、その後、再び、私は私のapplicationを開くと、その数は今のように返されません"" 名前 "(CACHED_NAME)は、" 値を持っている。

は、私は自分のアプリケーションからコールログ内のデータを更新してもらえますか?

functionを作成して電話番号に電話番号があるかどうかを確認できます。

しかし、この機能をどのようにカーソルアダプタで使用できますか。私はbindviewでこの関数を使用しようとしましたが、まだ空の要素がその番号に対して作成されています。 CusrorAdapterを使用したいと思います。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    pview = inflater.inflate(R.layout.fragment_call, container, false); 

    ListView lvCall = (ListView) pview.findViewById(R.id.lvCall); 
    Uri uri = Uri.parse("content://call_log/calls"); 
    ContentResolver cr = getActivity().getContentResolver(); 
    **Cursor c = cr.query(uri, null, "name is null", null, "date DESC");** 
    adapter = new CursorAdapter(getActivity().getBaseContext(), c) { 

     @Override 
     public View newView(Context context, Cursor cursor, ViewGroup parent) { 
      LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      return li.inflate(R.layout.call_list, parent, false); 
     } 

     @Override 
     public void bindView(View view, Context context, Cursor cursor) { 

      **if (contactExists(cursor.getString(cursor.getColumnIndex("NUMBER")))) { 
       return; 
      }** 
      txt_call_number = (TextView) view.findViewById(R.id.txt_call_number); 
      txt_call_id = (TextView) view.findViewById(R.id.txt_call_id); 

      txt_call_number.setText(cursor.getString(cursor.getColumnIndex("NUMBER"))); 
      txt_call_id.setText(cursor.getString(cursor.getColumnIndex("_ID")).trim()); 

     } 

    }; 

    lvCall.setAdapter(adapter); 

    return pview; 
} 

おかげ

P.S.上記のサンプルコードには、errorまたはmissing codeの技術があります。私はちょうど私のapplicationからcodeが必要です。

答えて

1

アプリケーションで更新されたコールログ「CACHED_NAME」に直接アクセスすることはできません。

public boolean contactExists(Context context, String number) { 
      /// number is the phone number 
      Uri lookupUri = Uri.withAppendedPath(
     PhoneLookup.CONTENT_FILTER_URI, 
     Uri.encode(number)); 
     String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME }; 
     Cursor cur = context.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null); 
     try { 
      if (cur.moveToFirst()) { 
       return true; 
      } 
     } finally { 
       if (cur != null) 
       cur.close(); 
     } 
    return false; 
} 

ここで、bindViewの機能を確認できます。

 @Override 
     public void bindView(View view, Context context, Cursor cursor) { 

      txt_call_number = (TextView) view.findViewById(R.id.txt_call_number); 
      txt_call_id = (TextView) view.findViewById(R.id.txt_call_id); 
      if (contactExists(cursor.getString(cursor.getColumnIndex("NUMBER")))) { 
       txt_call_number.setVisibility(View.GONE); 
       txt_call_id.setVisibility(View.GONE); 
       view.setVisibility(View.GONE); 
       return; 
      }else{ 
       txt_call_number.setText(cursor.getString(cursor.getColumnIndex("NUMBER"))); 
       txt_call_id.setText(cursor.getString(cursor.getColumnIndex("_ID")).trim()); 
      } 
     } 

これが役立つかもしれません。

ハッピーコーディング... :-)

+1

はい。これは動作します。しかし、私は他のやり方をしたいと思います....可視性を設定することではありません。 – Maulik

関連する問題

 関連する問題