展会信息港展会大全

Android Intent隐式启动自定义意图
来源:互联网   发布日期:2016-01-14 09:14:59   浏览:2083次  

导读:这是Android高级编程上面的一个例子,先看一下程序的效果: public class ContackPickerTest extends Activity { private static final int REQUEST_CONTACT_PICKER = 1; private Button mContactPickerBtn; private TextView mTextView; protected void onC...

这是Android高级编程上面的一个例子,先看一下程序的效果:

public class ContackPickerTest extends Activity {

private static final int REQUEST_CONTACT_PICKER = 1;

private Button mContactPickerBtn;

private TextView mTextView;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.contact_picker_test);

mContactPickerBtn = (Button) findViewById(R.id.contact_picker_button);

mTextView = (TextView) findViewById(R.id.textView);

mContactPickerBtn.setOnClickListener(listener);

};

View.OnClickListener listener = new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_PICK,

Uri.parse("content://contactsr"));

startActivityForResult(intent, REQUEST_CONTACT_PICKER);

}

};

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (requestCode) {

case REQUEST_CONTACT_PICKER: {

if (resultCode == Activity.RESULT_OK) {

showContactName(data);

}

}

break;

default:

break;

}

}

private void showContactName(Intent data) {

Uri contactData = data.getData();

Cursor cursor = managedQuery(contactData, null, null, null, null);

cursor.moveToFirst();

String name = cursor.getString(cursor

.getColumnIndexOrThrow(People.NAME));

mTextView.setText(name);

};

}

public class ContactPicker extends Activity {

private ListView mListView;

private SimpleCursorAdapter mCursorAdapter;

private Cursor mCursor;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.contact_picker);

mCursor = getContactCursor(getIntent());

mListView = (ListView) findViewById(R.id.listView);

String[] from = new String[] { People.NAME };

int[] to = new int[] { R.id.textView };

mCursorAdapter = new SimpleCursorAdapter(this,

R.layout.contact_picker_item, mCursor, from, to);

mListView.setAdapter(mCursorAdapter);

mListView.setOnItemClickListener(listener);

}

OnItemClickListener listener = new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position,

long id) {

mCursor.moveToPosition(position);

int rowID = mCursor.getInt(mCursor.getColumnIndexOrThrow("_id"));

Uri uri = Uri.parse(getContactData(getIntent()).toString() + rowID);

Intent intent = new Intent();

intent.setData(uri);

setResult(Activity.RESULT_OK, intent);

finish();

}

};

private Cursor getContactCursor(Intent intent) {

Cursor cursor;

Uri uri = getContactData(intent);

cursor = managedQuery(uri, null, null, null, null);

return cursor;

}

private Uri getContactData(Intent intent) {

Cursor cursor = null;

String dataPath = intent.getData().toString();

dataPath = dataPath.substring(0, dataPath.length() - 1);

Uri uri = Uri.parse(dataPath + "/people/");

return uri;

}

}

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.gao.apidemo"

android:versionCode="1"

android:versionName="1.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:name=".contactpicker.ContackPickerTest" android:theme="@style/ToDoTheme">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".contactpicker.ContactPicker">

<intent-filter>

<action android:name="android.intent.action.PICK"/>

<category android:name="android.intent.category.DEFAULT" />

<data android:scheme="content" android:path="contactsr"/>

</intent-filter>

</activity>

</application>

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

</manifest>

在这个从程序中如果写成Intent intent=new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));程序会出现错误,而如果写成Uri.parse("content://contacts/people")则会匹配系统自己的联系人列表,所以没有办法在Uri.parse("content://contactsr")上填了个r在manifest里面也相应的添了个r,然后再将这个r去掉。

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港