Pro Android学习笔记(三)——Intent

本文介绍了Android中的Intent机制,Intent用于调用不同组件,如Activity、Service等。通过Intent,开发者可以实现应用间的交互,启动特定操作,并传递数据。文章详细讲解了Intent的构成,包括数据URI、一般操作、额外信息的使用、组件直接调用及Intent解析规则。
摘要由CSDN通过智能技术生成

Intent

简介

Android中使用Intent来调用组件,Android中的组件包括Activity,Service,Broadcast Receiver,Content Provider。Android将多种理念融入到了Intent的概念中。可以使用Intent从一个应用程序中调用外部应用程序,可以使用Intent从应用程序调用内部或者外部组件,可以使用Intent触发时间,可以使用Intent发出警报等等。由上述可知,intent是具有相关数据负载的操作。

简单来说,Intent是你可以告诉Android要执行(或调用)的一种操作。Android调用的操作取决于该操作所注册的内容。

例如,编写一个Activity:BasicViewActivity

public class BasicViewActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.basic_view);
    }

}

basic_view布局指向了/res/layout/目录下的布局文件。我们可以在应用程序的描述文件中注册此活动,使其可以被其他应用程序调用。

注册代码如下:

<activity android:name=".BasicViewActivity"
            android:label="Basic View Tests" >
            <intent-filter>
                <action android:name="com.zxn.intent.action.ShowBasicView" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
</activity>

注册之后我们就可以使用Intent来调用此BasciViewActivity

public static void invokeBasicActivity(Activity activity) {
        String actionName = "com.zxn.intent.action.ShowBasicView";
        Intent intent = new Intent(actionName);
        activity.startActivity(intent);
    }

Android中可用的Intent

以上是我们使用Intent启动另外一个组件的过程,也是最基本的用法。我们也可以使用Intent启动Android一些自带的程序。

例如:

public class IntentsUtils {

    // 使用浏览器打开一个uri
    public static void invokeWebBrowser(Activity activity) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://www.baidu.com"));
        activity.startActivity(intent);
    }

    public static void invokeWebSearch(Activity activity) {
        Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
        intent.setData(Uri.parse("http://www.baidu.com"));
        activity.startActivity(intent);
    }

    // 打开拨号界面
    public static void dial(Activity activity) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        activity.startActivity(intent);
    }

    // 拨打一个电话
    public static void call(Activity activity) {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:904-905-5646"));
        activity.startActivity(intent);
    }

    // 使用一个地图程序打开指定位置
    public static void showMapAtLatLong(Activity activity) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("geo:0,0?z=4&q=business+near+city"));
        activity.startActivity(intent);
    }

    // 启动某个应用获取返回的数据
    public static void invokePick(Activity activity) {
        Intent pickIntent = new Intent(Intent.ACTION_PICK);
        pickIntent.setData(Uri.parse("content://com.google.provider.NotePad/notes"));
        activity.startActivityForResult(pickIntent, 1);
    }

    // 启动某个应用程序获取返回的数据
    public  static void invokeGetContent(Activity activity) {
        Intent pickIntent = new Intent(Intent.ACTION_GET_CONTENT);
        pickIntent.setType("vnd.android.cursor.item/vnd.google.note");
        activity.startActivityForResult(pickIntent, 2);
    }

}
创建一个简单的菜单,以便我们调用上面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值