贴代码,顺便解释一下:
public class ContentPickerTester extends Activity { public static final int PICK_CONTACT = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contentpickertester);
Button button = (Button) findViewById(R.id.pick_contact_button);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
Intent intent = new Intent(Intent.ACTION_PICK,Uri.parse("content://com.android.contacts/contacts"));
startActivityForResult(intent, PICK_CONTACT);
Log.v("---Debug---","After startActivityForResult");
}

});
}

/*
 * 此类为主类,在程序运行的时候加载一个Button,添加相应onClick事件
 * onClick事件中,new一个Intent,并且提供相应的URI参数
 * 然后startActivityForResult
 * 此时应用程序将启动一个子Activity,通过manifest的intentfilter指定为.ContactPicker
 * */
ContactPicker这个activity代码如下:
public class ContactPicker extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Intent intent = getIntent();
        String dataPath = intent.getData().toString();
        Log.e("^^^^^DEBUG^^^^^",dataPath);
        System.out.println(dataPath);
        final Uri data = Uri.parse(dataPath+"people/");
        final Cursor c = managedQuery(data, null, null, null, null);
        String[] from = new String[]{People.DISPLAY_NAME};
        int[] to = new int[]{R.id.itemTextView};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.listitemlayout,c,from,to);
        ListView lv = (ListView) findViewById(R.id.contactListView);
        lv.setAdapter(adapter);
问题就出在这里,子activity中的Log.e()方法并没有输出。
按照逻辑应该要执行到在里面,麻烦大家看看问题出在哪里?

解决方案 »

  1.   

             Intent intent = new Intent(Intent.ACTION_PICK,Uri.parse("content://com.android.contacts/contacts"));
                    startActivityForResult(intent, PICK_CONTACT);
    这样进不到你的ContactPicker啊,Uri是系统的联系人,怎么可能进入到你的ContactPicker呢,
    你要这样才行:
    Intent in = new Intent(ACTION_VIEW);
    in.setClass("yourpackagename","classname");
    startActivityForResult(in, 0);然后ContentPickerTester里实现
    onActivityResult()函数,可以看到startActivityForResult的结果
      

  2.   

    我是创建一个隐式的Activity,在这个Activity里面用系统的ACTION_PICK去处理URI数据。
    我的ContactPicker用filter拦截了这个ACTION,应该就可以到他里面去的啊。