0

プログラムで連絡先ピッキングのコードを実行しているときに、カーソルが値を取得している行で例外が発生しています。なぜ例外が発生しているのか理解できません。誰か助けてくれませんか。私のコードは次のとおりです。

public void onActivityResult(int requestcode, int resultcode, Intent data){
    super.onActivityResult(requestcode, resultcode, data);

    switch(requestcode){
        case (CONTACT_PICKER_RESULT):
                if(resultcode == Activity.RESULT_OK)
                {
                    Cursor cursor = null;
                    String phno ="";
                    try
                    {
                        Uri my_uri = data.getData();
                        String id = my_uri.getLastPathSegment();
                        Toast.makeText(getApplicationContext(), "id="+id, Toast.LENGTH_SHORT).show();

                        int phnoidx = 0;

                              //Exception occured in the next line
                        cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID+"=?", new String[] { id }, null);//--> Exception occurs here
                        phnoidx = cursor.getColumnIndex(Phone.DATA);
                        if(cursor.moveToFirst())
                        {
                            while(cursor.isAfterLast() == false)
                            {
                                phno = cursor.getString(phnoidx);
                                Toast.makeText(getApplicationContext(), "no="+phno, Toast.LENGTH_SHORT).show();
                                cursor.moveToNext();
                            }
                        }
                    }
                    catch(Exception e)
                    {
                        Toast.makeText(getApplicationContext(), "Error occured.", Toast.LENGTH_SHORT).show();
                        //exception handle
                    }
                    finally{
                        if(cursor != null)
                            cursor.close();
                    }
                    if(phoneno.getText().equals("") || !addphone_enable)
                        phoneno.setText(phno);
                    else if(addphone_enable)
                        addphno.setText(phno);
                }
                break;
    }
    activitytype = "main";

}

これは私が得ている例外です:

02-15 12:44:55.594: E/DatabaseUtils(187): java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data/phones from pid=336, uid=10036 requires android.permission.READ_CONTACTS

ありがとう!

4

1 に答える 1

0

次のコード行を追加します。

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

終了マニフェストタグの直前に。

この権限に言及している他のコードを削除し、このエラーの発生を停止しました。

于 2013-02-15T07:29:22.830 に答える