android ComponentName

从一个activity跳转到另一个activity有多种方法

ComponentName

 //此为一个按钮相应的代码摘录       
ComponentName comp = new ComponentName(ComponentAttr.this, SecondActivity.class); //设置跳转的activity Intent intent = new Intent(); // 为Intent设置Component属性 intent.setComponent(comp); startActivity(intent);


跳转的页面能够获取到ComponentName的相关信息

ComponentName comp = getIntent().getComponent();
// 显示该ComponentName对象的包名、类名
show.setText("组件包名为:" + comp.getPackageName()
+ "\n组件类名为:" + comp.getClassName());

 

 

使用intent 的action 属性 和 <intent-filter?

public final static String CRAZYIT_ACTION ="org.crazyit.intent.action.CRAZYIT_ACTION"

//此为按钮响应 
Intent intent = new Intent(); // 为Intent设置Action属性(属性值就是一个普通字符串) intent.setAction(ActionAttr.CRAZYIT_ACTION); startActivity(intent);

跳转到的activity 在配置文件中增加了

<activity android:name=".SecondActivity"
android:label="@string/app_name">
  <intent-filter>
  <!-- 指定该Activity能响应Action为指定字符串的Intent -->
  <action android:name="org.crazyit.intent.action.CRAZYIT_ACTION" />
  <!-- 指定该Activity能响应Action属性为helloWorld的Intent -->
  <action android:name="helloWorld" />
  <!-- 指定该Action能响应Category属性为指定字符串的Intent -->
  <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

 

intent action category

// 定义一个Action常量
final static String CRAZYIT_ACTION = "org.crazyit.intent.action.CRAZYIT_ACTION";
// 定义一个Category常量
final static String CRAZYIT_CATEGORY ="org.crazyit.intent.category.CRAZYIT_CATEGORY";


//跳转代码
Intent intent = new Intent(); // 设置Action属性 intent.setAction(ActionCateAttr.CRAZYIT_ACTION); // 添加Category属性 intent.addCategory(ActionCateAttr.CRAZYIT_CATEGORY); startActivity(intent);

//配置文件

<activity android:name=".SecondActivity"
android:label="@string/app_name">
<intent-filter>
<!-- 指定该Activity能响应action为指定字符串的Intent -->
<action android:name="org.crazyit.intent.action.CRAZYIT_ACTION" />
<!-- 指定该Activity能响应category为指定字符串的Intent -->
<category android:name="org.crazyit.intent.category.CRAZYIT_CATEGORY" />
<!-- 指定该Activity能响应category为android.intent.category.DEFAULT的Intent -->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

 

intent 调用系统通讯录

    Intent intent = new Intent();
     //设置Intent的Action属性
    intent.setAction(Intent.ACTION_GET_CONTENT);
      //设置Intent的Type属性
    intent.setType("vnd.android.cursor.item/phone");
     // 启动Activity,并希望获取该Activity的结果
     startActivityForResult(intent, PICK_CONTACT);


回调方法

public void onActivityResult(int requestCode
        , int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode)
        {
            case (PICK_CONTACT):
                if (resultCode == Activity.RESULT_OK)
                {
                    // 获取返回的数据
                    Uri contactData = data.getData();
                    CursorLoader cursorLoader = new CursorLoader(this
                        , contactData, null, null, null, null);
                    // 查询联系人信息
                    Cursor cursor = cursorLoader.loadInBackground();
                    // 如果查询到指定的联系人
                    if (cursor.moveToFirst())
                    {
                        String contactId = cursor.getString(cursor
                            .getColumnIndex(ContactsContract.Contacts._ID));
                        // 获取联系人的名字
                        String name = cursor.getString(cursor
                            .getColumnIndexOrThrow(
                            ContactsContract.Contacts.DISPLAY_NAME));
                        String phoneNumber = "此联系人暂未输入电话号码";
                        //根据联系人查询该联系人的详细信息
                        Cursor phones = getContentResolver().query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                + " = " + contactId, null, null);
                        if (phones.moveToFirst())
                        {
                            //取出电话号码
                            phoneNumber = phones
                                .getString(phones
                                .getColumnIndex(ContactsContract
                                .CommonDataKinds.Phone.NUMBER));
                        }
                        // 关闭游标
                        phones.close();
                        EditText show = (EditText) findViewById(R.id.show);
                        //显示联系人的名称
                        show.setText(name);
                        EditText phone = (EditText) findViewById(R.id.phone);
                        //显示联系人的电话号码
                        phone.setText(phoneNumber);
                    }
                    // 关闭游标
                    cursor.close();
                }
                break;
        }
    }

 

posted on 2014-11-05 15:20  弗不是佛  阅读(1182)  评论(0编辑  收藏  举报

导航