intent_intentservice - CSDN
intent 订阅
Intent(意图)主要是解决Android应用的各项组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给被调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)为了实现这个目的,listActivity需要构造一个 Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity (Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的 Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。 展开全文
Intent(意图)主要是解决Android应用的各项组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给被调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)为了实现这个目的,listActivity需要构造一个 Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity (Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的 Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。
信息
作    用
解决Android应用各项组件的通讯
提供信息
组件互相调用的相关信息
实现目的
调用者与被调用者之间的解耦
中文名
意图
性    质
媒体中介
外文名
intent
intent术语解释
在Android参考文档中,对Intent的定义是执行某操作的一个抽象描述(确实很抽象)。我们先来看看这里的抽象描述,到底描述了什么。首先,是要执行的动作(action)的一个简要描述,如VIEW_ACTION(查看)、EDIT_ACTION(修改)等,Android为我们定义了一套标准动作:MAIN_ACTIONVIEW_ACTIONEDIT_ACTIONPICK_ACTIONGET_CONTENT_ACTIONDIAL_ACTIONCALL_ACTIONSENDTO_ACTIONANSWER_ACTIONINSERT_ACTIONDELETE_ACTIONRUN_ACTIONLOGIN_ACTIONCLEAR_CREDENTIALS_ACTIONSYNC_ACTIONPICK_ACTIVITY_ACTIONWEB_SEARCH_ACTION此外,我们还可以根据应用的需要,定义我们自己的动作,并可定义相应的Activity来处理我们的自定义动作。其次,是执行动作要操作的数据(data),Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:content://contacts/1。这种URI表示,通过 ContentURI这个类来描述,具体可以参考android.net.ContentURI类的文档。以联系人应用为例,以下是一些action / data对,及其它们要表达的意图:VIEW_ACTION content://contacts/1-- 显示标识符为"1"的联系人的详细信息EDIT_ACTION content://contacts/1-- 编辑标识符为"1"的联系人的详细信息VIEW_ACTION content://contacts/-- 显示所有联系人的列表PICK_ACTION content://contacts/-- 显示所有联系人的列表,并且允许用户在列表中选择一个联系人,然后把这个联系人返回给父activity。例如:电子邮件客户端可以使用这个Intent,要求用户在联系人列表中选择一个联系人另外,除了action和data这两个重要属性外,还有一些附加属性:category(类别),被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。type(数据类型),显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。总之,action、 data/type、category和extras 一起形成了一种语言。这种语言使系统能够理解诸如“查看某联系人的详细信息”之类的短语。随着应用不断的加入到系统中,它们可以添加新的action、 data/type、category来扩展这种语言。应用也可以提供自己的Activity来处理已经存在的这样的“短语”,从而改变这些“短语”的行为。
收起全文
精华内容
参与话题
  • Intent 简介与详解

    千次阅读 2017-12-30 23:32:10
    1.Intent作用Intent是一个将要执行的动作的抽象的描述,解决Android应用的各项组件之间的通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的...

    1.Intent作用

    Intent是一个将要执行的动作的抽象的描述,解决Android应用的各项组件之间的通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。intent主要用来启动activity或者service(并携带需要传递的参数信息)。

    2.Intent形式

    意图包括:Action(动作),Category(附加信息),Data(数据,具体内容),Tpye(类型)等等,举个例子,说白了意图就是启动一个组件的完整的动作信息,就像打人,打就是Action动作,人就是Data内容,而Type就是类型,打什么人呢?打坏人,type就是坏人的类型,只有这些信息全了才能执行一个完整的意图,当然还有一些信息,比如scheme就是URI类型的数据的前缀,还有host主机名,path路径等。

    • (1).显式意图(Explicit Intents)

      • 调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
        
        //  1.创建Intent实例化对象几种方式  
        Intent intent = new Intent();  
        // 跳转到与该工程下的(同一个Application中的)activity或者service
        intent.setClass(Context packageContext, Class<?> cls) ;           // 跳转到不同Applicaiton的activity或者service
        intent.setClassName(Context packageContext, String className) ;   
        //内部调用setComponent(ComponentName),可以激活外部应用    
        intent.setComponent(new ComponentName(this, Class<?> cls));  
        intent.setComponent(new ComponentName(this, "package Name"));  
        
    • (2).隐式意图(Implicit Intents)
      • 没有明确指定组件名的Intent为隐式意图。系统会根据隐式意图中设置的 动作(action)、类别(category)、数据URI等来匹配最合适的组件。
      • 1).action:
      • The general action to be performed, such as ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, 包括Android 系统指定的 和 自定义的
    intent.setAction("com.baidu.action.TEST"); 
    <action android:name="com.baidu.action.TEST"/>  
    • 2).data
      • expressed as a Uri, The data to operate on, such as a person record in the contacts database.
    Action Data(Uri) Content
    ACTION_VIEW content://contacts/people/1 Display information about the person whose identifier is “1”.
    ACTION_VIEW tel:123 Display the phone dialer with the given number filled in.
    ACTION_DIAL tel:123 Display the phone dialer with the given number filled in.
    intent.setData(Uri.parse("baidu://www.baidu.com/news"));  
    <!-- android:path 内容字符串需要以 / 开头 -->  
    <data android:scheme="baidu" android:host="www.baidu.com" android:path="/news"/>  
    • 3).category

      • Gives additional information about the action to execute.
      • 注意:项目清单的xml文件意图过滤器中必须指定 android.intent.category.DEFAULT类别,Activities will very often need to support the CATEGORY_DEFAULT so that they can be found by Context.startActivity,or Context can’t the acitivity component

        intent.addCategory("com.baidu.category.TEST");  
        <!-- 必须指定CATEGORY_DEFAULT,只有这样startActivity(intent)才能找到 -->  
        <category android:name="com.baidu.category.TEST" />  
        <category android:name="android.intent.category.DEFAULT" />  
    • 4).type

      • Specifies an explicit type (a MIME type) of the intent data.

        intent.setType("image/jpeg");  
        <data android:mimeType="image/*" />  
      • 注意:Java文件中data Uri 和 type不能同时使用各自的函数进行设定,因为使用type时会把Uri清除掉,可以使用setDataAndType方法设定

        intent.setDataAndType(Uri.parse("baidu://www.baidu.com/news"), "image/jpeg");  
    <data android:mimeType="image/*" android:scheme="baidu" android:host="www.baidu.com" android:path="/news"/>  
    • (3).两者的使用区别

      • 显式意图一般在应用的内部使用,因为在应用内部已经知道了组件的名称,直接调用就可以了。
        当一个应用要激活另一个应用中的Activity时,只能使用隐式意图,根据Activity配置的意图过滤器建一个意图,让意图中的各项参数的值都跟过滤器匹配,这样就可以激活其他应用中的Activity。所以,隐式意图是在应用与应用之间使用的。

    3.Activity的Intent数据传递

    //Activity间的数据传递  
    //  1.直接向intent对象中传入键值对(相当于Intent对象具有Map键值对功能)  
    intent.putExtra("first", text1.getText().toString());  
    intent.putExtra("second", text2.getText().toString());  
    
    //  2.新建一个Bundle对象 ,想该对象中加入键值对,然后将该对象加入intent中  
    Bundle bundle = new Bundle();  
    bundle.putString("first", "zhang");  
    bundle.putInt("age", 20);  
    intent.putExtras(bundle);  
    
    //  3.向intent中添加ArrayList集合对象  
    intent.putIntegerArrayListExtra(name, value);  
    intent.putIntegerArrayListExtra(name, value);     
    
    //  4.intent传递Object对象(被传递的对象的类实现Parcelable接口,或者实现Serialiable接口)  
    public Intent putExtra(String name, Serializable value)  
    public Intent putExtra(String name, Parcelable value)   

    4.Activity退出的返回结果

    //  1.通过startActivityForResult方式启动一个Activity  
    MainActivity.this.startActivityForResult(intent, 200);  //intent对象,和  requestCode请求码  
    
    //  2.新activity设定setResult方法,通过该方法可以传递responseCode 和 Intent对象  
    setResult(101, intent2);                                //responseCode响应码 和 intent对象  
    
    //  3.在MainActivity中覆写onActivityResult方法,新activity一旦退出,就会执行该方法  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        Toast.makeText(this, data.getStringExtra("info")+"requestCode:"+requestCode+"resultCode:"+resultCode, Toast.LENGTH_LONG).show();  
    }  

    5.设置IntentFilter当前应用打开(应用多选)

    <activity  
        android:name="com.example.player.MainActivity"  
        android:label="@string/app_name" >  
        <intent-filter>  
            <action android:name="android.intent.action.MAIN" />  
    
            <category android:name="android.intent.category.LAUNCHER" />  
        </intent-filter>  
    
        <!-- 指定action, data类型为video, category为default,设置完成之后,当打开video文件时,本应用作为可选打开软件 -->  
        <intent-filter>  
            <action android:name="android.intent.action.VIEW" />  
    
            <data android:mimeType="video/*" />  
    
            <category android:name="android.intent.category.DEFAULT" />  
        </intent-filter>  
    </activity>  

    使用隐式意图启动系统短信,并给指定号码发送信息

    /** 
         * 隐式意图的方法启动系统短信 
         *  
         * 简单概括就是: 意图包括:Action(动作),Category(附加信息),Data(数据,具体内容),Tpye(类型)等等,举个例子, 
         * 说白了意图就是启动一个组件的的完整的动作信息 
         * ,就像打人,打就是Action动作,人就是Data内容,而Type就是类型,打什么人呢?打坏人,type就是坏指的类型 
         * ,只有这些信息全了才能执行一个完整的意图 
         * ,当然还有一些信息,比如scheme就是URI类型的数据的前缀,就像这个例子当中的sms:,还有host主机名,path路径等 
         *  
         * @param view 
         */  
        public void startOne(View view) {  
            Intent intent = new Intent();  
            intent.setAction("android.intent.action.SENDTO");// 发送信息的动作  
            intent.addCategory("android.intent.category.DEFAULT");// 附加信息  
            intent.setData(Uri.parse("sms:10086"));// 具体的数据,发送给10086  
            startActivity(intent);  
        }  
    • 自定义的隐式意图调用:
      • 首先是先在清单文件中进行注册:
    <?xml version="1.0" encoding="utf-8"?>  
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
        package="net.loonggg.intent"  
        android:versionCode="1"  
        android:versionName="1.0" >  
    
        <uses-sdk  
            android:minSdkVersion="8"  
            android:targetSdkVersion="17" />  
    
        <application  
            android:allowBackup="true"  
            android:icon="@drawable/ic_launcher"  
            android:label="@string/app_name"  
            android:theme="@style/AppTheme" >  
            <activity  
                android:name="net.loonggg.intent.MainActivity"  
                android:label="@string/app_name" >  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
    
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
            </activity>  
            <activity android:name="net.loonggg.intent.SecondActivity" >  
                <intent-filter>  
    
                    <!-- 自定义的动作 -->  
                    <action android:name="net.loonggg.xxx" />  
                    <!-- 自定义的scheme和host -->  
                    <data  
                        android:host="www.baidu.com"  
                        android:path="/person"  
                        android:scheme="loonggg" />  
                    <!-- 自定义的类型 -->  
                    <data android:mimeType="person/people" />  
                    <!-- 附加信息 -->  
                    <category android:name="android.intent.category.DEFAULT" />  
                </intent-filter>  
            </activity>  
        </application>  
    
    </manifest>  
    • 自定义设置的Activity:
    <activity android:name="net.loonggg.intent.SecondActivity" >  
               <intent-filter>  
    
                   <!-- 自定义的动作 -->  
                   <action android:name="net.loonggg.xxx" />  
                   <!-- 自定义的scheme和host -->  
                   <data  
                       android:host="www.baidu.com"  
                       android:path="/person"  
                       android:scheme="loonggg" />  
                   <!-- 自定义的类型 -->  
                   <data android:mimeType="person/people" />  
                   <!-- 附加信息 -->  
                   <category android:name="android.intent.category.DEFAULT" />  
               </intent-filter>  
           </activity>  
    • 代码调用自定义
    /** 
     * 通过自定义的隐式意图启动 
     *  
     * @param view 
     */  
    public void startTwo(View view) {  
        Intent intent = new Intent();
        intent.setAction("net.loonggg.xxx");         
        intent.addCategory("android.intent.category.DEFAULT");  
        intent.setDataAndType(Uri.parse("loonggg://www.baidu.com/person"),  
        "person/people");  
        startActivity(intent);  
    }  

    注意:

    intent.setData(data)和intent.setType(type)注意这两个方法会互相清除,意思就是:如果先设置setData(data)后设置setType(type),那么后设置的setType(type)会把前面setData(data)设置的内容清除掉,而且会报错,反之一样,所以如果既要设置类型与数据,那么使用setDataAndType(data,type)这个方法。

    展开全文
  • 安卓——Intent(实现页面跳转的两种方法)

    万次阅读 多人点赞 2018-02-27 17:35:00
    下图中两个不同的方法就是两种页面之间跳转的情况1&gt;跳转不返回数据2&gt;跳转返回数据实例:第一种启动方式(跳转不返回数据)第二种启动方式(跳转返回数据)先看第一种:点击第一种...下面是所有代码An...


    下图中两个不同的方法就是两种页面之间跳转的情况

    1>跳转不返回数据

    2>跳转返回数据



    实例:

    第一种启动方式(跳转不返回数据)

    第二种启动方式(跳转返回数据)

    先看第一种:


    点击第一种启动方式按钮会出现右边的图,然后再点击Button按钮返回左边的界面,TextView中的内容没变。

    再看第二种启动方式

    不同的是,点击Button按钮返回左边的界面,TextView中的内容变成了你好。



    下面是所有代码

    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.lenovo.intent">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
    
            </activity>
            <activity android:name="com.example.lenovo.intent.firstactivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name="com.example.lenovo.intent.Secondactivity">
    
            </activity>
        </application>
    
    </manifest>

    factivity

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    
        <Button
            android:id="@+id/bt1__first"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="第一种启动方式" />
    
        <Button
            android:id="@+id/bt2__second"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="第二种启动方式" />
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="吧第二个页面回传的数据显示出来" />
    
    </LinearLayout>
    

    sactivity

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />
    </LinearLayout>
    

    firstactivity.java

    package com.example.lenovo.intent;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    /**
     * Created by lenovo on 2018/2/27.
     */
    
    public class firstactivity extends Activity {
        private Button bt1;
        private Button bt2;
        private TextView tv;
        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.factivity);
    
            /*
               通过点击bt1实现界面之间的跳转
               1.通过startActivity的方式来实现
               1>初始Intent(意图)
             */
    
    
            bt1=(Button) findViewById(R.id.bt1__first);
            bt2=(Button)findViewById(R.id.bt2__second);
            tv=(TextView) findViewById(R.id.textView1);
            //给bt1添加点击事件
            bt1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    /*
                    第一个参数:上下文对象this
                    第二个参数:目标文件
                     */
                    Intent intent = new Intent(firstactivity.this,Secondactivity.class);
                    startActivity(intent);
    
                }
            });
    
            /*
            2.通过startActivityForResult的方式来实现
             */
            //给bt2添加点击事件
            bt2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(firstactivity.this,Secondactivity.class);
    
                    /*
                    第一个参数:Intent对象
                    第二个参数:请求的一个标识
                     */
                    startActivityForResult(intent,1);
                }
            });
        }
    
        /*
        通过startActivityForResult的方式接受返回数据的方法
        requestCode:请求的标志,给每个页面发出请求的标志不一样,这样以后通过这个标志接受不同的数据
        resultCode:这个参数是setResult(int resultCode,Intent data)方法传来的,这个方法用在传来数据的那个页面
         */
        @Override
        protected  void onActivityResult(int requestCode,int resultCode ,Intent data){
            super.onActivityResult(requestCode,resultCode,data);
            if(requestCode==1&&resultCode==2){//当请求码是1&&返回码是2进行下面操作
                String content=data.getStringExtra("data");
                tv.setText(content);
            }
        }
    }
    

    Secondactivity.java

    package com.example.lenovo.intent;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    /**
     * Created by lenovo on 2018/2/27.
     */
    
    public class Secondactivity extends Activity {
        private Button bt;
        String content="你好";//想返回的内容
        @Override
        protected void onCreate( Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.sactivity);
    
            /*
            第二个页面什么时候给第一个页面回传数据
            回传到第一个页面的实际上是一个Intent对象
             */
            bt=(Button) findViewById(R.id.button);
            bt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent data = new Intent();
                    //name相当于一个key,content是返回的内容
                    data.putExtra("data",content);
                    //resultCode是返回码,用来确定是哪个页面传来的数据,这里设置返回码是2
                    //这个页面传来数据,要用到下面这个方法setResult(int resultCode,Intent data)
                    setResult(2,data);
                    //结束当前页面
                    finish();
                }
            });
        }
    }
    

    展开全文
  • Intent的基本知识

    万次阅读 2018-09-28 08:21:20
    我们知道,Intent 是一个消息传递对象,使用它可以向其他Android组件请求操作。Intent的基本用途主要包括:启动 Activity、启动服务、传递广播。Intent分为显式Intent和隐式Intent。下面我通过启动Activity来讲解...

    我们知道,Intent 是一个消息传递对象,使用它可以向其他Android组件请求操作。Intent的基本用途主要包括:启动 Activity、启动服务、传递广播。Intent分为显式Intent和隐式Intent。下面我通过启动Activity来讲解学习Intent。

    Intent对象可以封装传递下面6种信息:

    1. 组件名称(ComponentName)
    2. 动作(Action)
    3. 种类(Category)
    4. 数据(Data)
    5. 附件信息(Extra)
    6. 标志(Flag)

    下面来讲解这些信息

    1、组件名称(CompomentName)

    组件名称指定要访问的组件,但也是构建显式 Intent 的一项重要信息,如下所示:

    Intent intent = new Intent(LoginActivity.this, HomeActivity.class);

    startActivity(intent);

    这样我们就启动了HomeActivity组件。

    通过构造函数指定组件名称是我们常用的方式,此外还可以通过以下三种方法指定组件名称

    Intent setClass (Context packageContext,  Class<?> cls);

    Intent setClassName (Context packageContext, String className);

    Intent setClassName (String packageName, String className);

    Intent setComponent (ComponentName component)

    这里首先需要说明是的CompomentName对象,它定义了一个组件的基本信息,通过Android的源代码我们可以看到,其实不论哪种方法,最终Intent都会创建一个CompomentName对象封装被调用的组件信息。

    其次我们来看一下Intent setClassName (String packageName, String className);这个方法。packageName指的是组件所属APP的包名。也就是AndroidManifest.xml中指定的包名,如下图所示:

    最后,需要说明的是,如果传递字符串形式的className,必须指定类的全名,包括类所属的命名空间。下面给出了一个样例代码:

    Intent intent = new Intent();

    intent.setClassName("com.practise.salary.nvwa", "com.practise.salary.nvwa.HomeActivity");

    startActivity(intent);

    设置Intent的组件名称,调用相关的组件,我们称为显式调用,一般用于调用APP自身的组件,当然,我们也可以通过显式调用其他APP的组件,后面讲解显示调用时,我们在来学习。

    2、动作(Action)

    所谓动作就是与Activity、Service、BroadcastRecvier绑定的一个字符串,通常在AndroidManifest.xml声明组件时,设置动作参数,如下图所示:

    我们可以通过设置Action属性,调用相关的组件,这称为隐式调用。

    一般我们通过Intent的setAction方法设置Intent的动作,这样系统会根据动作中指定的字符串查找匹配的组件。如下所示代码:

    Intent intent = new Intent();

    intent.setAction("android.intent.action.MAIN");

    startActivity(intent);

    当我们定义自己的操作,建议将应用的软件包名称作为前缀,动作名称用大写。

    3、种类(Category)

    运行上面的代码,大家会发现,弹出了一个选择框,选在调用那个组件,如下图所示:

    之所以会出现这种情况,是因为动作“android.intent.action.MAIN”对应的组件不止一个,Android系统无法判断到底调用那个组件(详细的筛选过程将在后面过滤规则中讲解)。

    Intent的Category的就是为了解决这类冲突问题的,Category的设置也是在AndroidManifest.xml文件中完成,如下图所示:

    Category也是一个字符串,我们可以通过addCategory为Intent添加Category,可以添加多个Category,如下面代码所示:

    Intent intent = new Intent();

    intent.setAction("com.practise.salary.nvwa.action.HOME");

    /*

    我们可以不用手动添加android.intent.category.DEFAULT,系统会自动添加这个Category

    */

    intent.addCategory("android.intent.category.DEFAULT");  

    startActivity(intent);

     我们可以通过文件夹、文件类比Category和Action。

     4、数据(Data)

    在Intent的隐式调用中,系统要根据请求对满足条件的组件进行筛选,这就是Intent的筛选机制。筛选条件除了Action、Category外,还有一个就是Data。此外Data还承担了简单的数据传递工作。

    组件Data的申明如下图所示:

    下面我们学习一下Intent的Data属性。

    Data包括MIME Type和URI。

    MIME Type指数据的类型,例如:video/mp4,video/avi通常我们通过

    Intent setType (String type)

    或者

    Intent setTypeAndNormalize (String type)

    完成MINE Type的设置。不同之处在于setTypeAndNormalize可以规范MINE Type。

    URI,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一资源名称的字符串,URI可以表示成如下格式:

    scheme://host:port/path

           其中

    1. scheme:协议表示,如http,https,ftp,content等;
    2. host:主机名称
    3. port:端口号
    4. path:具体的资源路径;

    我们常见的URL地址就是一种特殊的URI。

    我们可以通过

     

    Intent setData (Uri data)

    Intent setDataAndNormalize (Uri data)

    来设置Intent的URI,注意此处需要传递的是一个Uri对象,该对象封装了具体的URI,我们采用如下静态方法江URI字符串转换成URI对象。

    Uri parse (String uriString)

    此外我们还可以调用setDataAndType一次性设置URI和MIME Type。

    Intent setDataAndType (Uri data, String type)

    Intent setDataAndTypeAndNormalize(Uri data, String type)

    需要注意的是,当我们调用setType方法设置MIME Type,会自动清理URI的属性值,当调用setData方法来设置URI时,会自动清理MIME Type的值,如果要同时设置URI和MIMIE Type,必须使用setDataAndType方法。

    关于如何通过Data进行过滤,后面我们会讲到,下面我们通过一个样例来讲解如何通过Data完成简单的数据传递。

    我们通过显示调用Intent同时设置Intent的Data。代码如下:

    Intent intent = new Intent(LoginActivity.this, HomeActivity.class);

    intent.setDataAndType(Uri.parse("content://findUser/20180910"), "nvwa/user");

    startActivity(intent);

           在被调用的HomeActivity中,我们通过getItent()获取传递来的Intent。然后我们就可以通过

    Uri getData ()

    String getDataString ()

    获取URI,有了URI我们就可以解析出其中数据。下面给出被调用的组件的样例代码

    Intent intent = getIntent();

    Uri uri = intent.getData();

    Log.v("URI参数传递", uri.getPath());

    输出结果如下图所示:

    Uri类提供了更多的方法用于处理Uri值,可参考Uri相关的帮助 https://developer.android.google.cn/reference/android/net/Uri

    5、附件信息(Extra)

    通过Data只能传输比较简单的数据,Intent主要通过Extra完成组件之间的数据传递。

    调用方通过intent的putExtra设置数据,被调用的组件通过getXXXExtra获取数据,代码如下所示:

    调用方传递参数

    Intent intent = new Intent(LoginActivity.this, HomeActivity.class);

    intent.putExtra("userName", "zhangw");

    intent.putExtra("loginTime", Calendar.getInstance());

    startActivity(intent);

    被调方获取参数

    Intent intent = getIntent();

    Log.v("Extra数据传递", intent.getStringExtra("userName"));

    我们分析Android代码可以发现,其实通过Exctra传递的是一个Bundle,我们可以把Bundle理解成一个键值对,他通过putXXX设置数据,通过getXXX读取数据。我们可以自己定义一个Bundle对象,进行数据的传递,下面给一个样例程序。

           调用方传递参数

    Bundle bundle = new Bundle();

    bundle.putString("userName", "account");

    bundle.putSerializable("loginTime", Calendar.getInstance());

    intent.putExtras(bundle);

    被调方获取参数

    Intent intent = getIntent();

    Bundle bundle = intent.getExtras();

    Log.v("登录时间", bundle.getSerializable("loginTime").toString());

    输出结果如下图:

    注意,调用方通过intent的getExtras获取传递的来的bundle。

           6、标记(Flag)

          Intent通过

    Intent setFlags (int flags)

    设置标记。   关于标记的用法,后面我们用到后再给大家将,这并不表示这个概念不重要。

    (张伟:2018年9月27日)

    (转载时请注明来源)

    展开全文
  • Intent的基本使用

    万次阅读 2019-06-15 10:53:32
    Intent(意图),Android通信的桥梁,比如我们可以通过: startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity startService(Intent)/bindService(Intent):来启动一个Service ...

    Intent(意图),Android通信的桥梁,比如我们可以通过:

    • startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity
    • startService(Intent)/bindService(Intent):来启动一个Service
    • sendBroadcast:发送广播到指定BroadcastReceiver
    • 另外别忘了我们在注册四大组件时,写得很多的Intent-Filter哦~

    好吧,话不多说,开始本节内容!另外前面我们已经用过Intent了,就不在讲述概念性的东西了~ 
    老规矩,官方API:Intent


    1.显式Intent与隐式Intent的区别

    • 显式Intent:通过组件名指定启动的目标组件,比如startActivity(new Intent(A.this,B.class)); 
      每次启动的组件只有一个~
    • 隐式显式Intent:不指定组件名,而指定Intent的Action,Data,或Category,当我们启动组件时, 
      会去匹配AndroidManifest.xml相关组件的Intent-filter,逐一匹配出满足属性的组件,当不止一个满足时, 
      会弹出一个让我们选择启动哪个的对话框~

    2.Intent的七个属性:


    1)ComponentName(组件名称)


    2)Action(动作)


    3)Category(类别)


    4)Data(数据),Type(MIME类型)

    此处输入图片的描述


    5)Extras(额外)


    6)Flags(标记)


    3.显式Intent使用示例:

    这个用得很多,直接就上例子了:

    例子1:点击按钮返回Home界面: 
    运行效果图:

    核心代码:

    Intent it = new Intent();
    it.setAction(Intent.ACTION_MAIN);
    it.addCategory(Intent.CATEGORY_HOME);
    startActivity(it);
    • 1
    • 2
    • 3
    • 4

    例子2:点击按钮打开百度页面: 
    运行效果图:

    核心代码:

    Intent it = new Intent();
    it.setAction(Intent.ACTION_VIEW);
    it.setData(Uri.parse("http://www.baidu.com"));
    startActivity(it);
    • 1
    • 2
    • 3
    • 4

    4.隐式Intent详解


    1)预定义动作的隐式Intent示例:

    代码示例:点击按钮后,所有Action为VIEW的Activity被筛选出来,由用户进一步选择:

    核心代码:

    建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:

    Intent it = new Intent();
    it.setAction(Intent.ACTION_VIEW);
    startActivity(it);
    • 1
    • 2
    • 3

    最后在第二个Activity的Intent中添加以下代码:

     <activity android:name=".SecondActivity"
                android:label="第二个Activity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>           
     </activity>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行效果图:


    2)自定义动作的隐式Intent示例:

    代码示例:使用自定义的Action与category来激活另一个Activity

    核心代码: 
    建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:

    Intent it = new Intent();
    it.setAction("my_action");
    it.addCategory("my_category");
    startActivity(it);  
    • 1
    • 2
    • 3
    • 4

    最后在第二个Activity的Intent中添加以下代码:

    <activity android:name=".SecondActivity"
            android:label="第二个Activity">
        <intent-filter>
            <action android:name="my_action"/>
            <category android:name="my_category"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>           
    </activity>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意虽然我们自定义了一个category,但是还是要把这个默认的加上,不然会报错的:

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

    5.常用系统Intent合集

    大家贴下常用的系统Intent的合集吧,上面没有的欢迎提出~

    //===============================================================
    //1.拨打电话
    // 给移动客服10086拨打电话
    Uri uri = Uri.parse("tel:10086");
    Intent intent = new Intent(Intent.ACTION_DIAL, uri);
    startActivity(intent);
    
    //===============================================================
    
    //2.发送短信
    // 给10086发送内容为“Hello”的短信
    Uri uri = Uri.parse("smsto:10086");
    Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
    intent.putExtra("sms_body", "Hello");
    startActivity(intent);
    
    //3.发送彩信(相当于发送带附件的短信)
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.putExtra("sms_body", "Hello");
    Uri uri = Uri.parse("content://media/external/images/media/23");
    intent.putExtra(Intent.EXTRA_STREAM, uri);
    intent.setType("image/png");
    startActivity(intent);
    
    //===============================================================
    
    //4.打开浏览器:
    // 打开百度主页
    Uri uri = Uri.parse("http://www.baidu.com");
    Intent intent  = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    //===============================================================
    
    //5.发送电子邮件:(阉割了Google服务的没戏!!!!)
    // 给someone@domain.com发邮件
    Uri uri = Uri.parse("mailto:someone@domain.com");
    Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
    startActivity(intent);
    // 给someone@domain.com发邮件发送内容为“Hello”的邮件
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_EMAIL, "someone@domain.com");
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "Hello");
    intent.setType("text/plain");
    startActivity(intent);
    // 给多人发邮件
    Intent intent=new Intent(Intent.ACTION_SEND);
    String[] tos = {"1@abc.com", "2@abc.com"}; // 收件人
    String[] ccs = {"3@abc.com", "4@abc.com"}; // 抄送
    String[] bccs = {"5@abc.com", "6@abc.com"}; // 密送
    intent.putExtra(Intent.EXTRA_EMAIL, tos);
    intent.putExtra(Intent.EXTRA_CC, ccs);
    intent.putExtra(Intent.EXTRA_BCC, bccs);
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "Hello");
    intent.setType("message/rfc822");
    startActivity(intent);
    
    //===============================================================
    
    //6.显示地图:
    // 打开Google地图中国北京位置(北纬39.9,东经116.3)
    Uri uri = Uri.parse("geo:39.9,116.3");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    //===============================================================
    
    //7.路径规划
    // 路径规划:从北京某地(北纬39.9,东经116.3)到上海某地(北纬31.2,东经121.4)
    Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=39.9 116.3&daddr=31.2 121.4");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    //===============================================================
    
    //8.多媒体播放:
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri uri = Uri.parse("file:///sdcard/foo.mp3");
    intent.setDataAndType(uri, "audio/mp3");
    startActivity(intent);
    
    //获取SD卡下所有音频文件,然后播放第一首=-= 
    Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    //===============================================================
    
    //9.打开摄像头拍照:
    // 打开拍照程序
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(intent, 0);
    // 取出照片数据
    Bundle extras = intent.getExtras(); 
    Bitmap bitmap = (Bitmap) extras.get("data");
    
    //另一种:
    //调用系统相机应用程序,并存储拍下来的照片
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    time = Calendar.getInstance().getTimeInMillis();
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
    .getExternalStorageDirectory().getAbsolutePath()+"/tucue", time + ".jpg")));
    startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE);
    
    //===============================================================
    
    //10.获取并剪切图片
    // 获取并剪切图片
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    intent.putExtra("crop", "true"); // 开启剪切
    intent.putExtra("aspectX", 1); // 剪切的宽高比为1:2
    intent.putExtra("aspectY", 2);
    intent.putExtra("outputX", 20); // 保存图片的宽和高
    intent.putExtra("outputY", 40); 
    intent.putExtra("output", Uri.fromFile(new File("/mnt/sdcard/temp"))); // 保存路径
    intent.putExtra("outputFormat", "JPEG");// 返回格式
    startActivityForResult(intent, 0);
    // 剪切特定图片
    Intent intent = new Intent("com.android.camera.action.CROP"); 
    intent.setClassName("com.android.camera", "com.android.camera.CropImage"); 
    intent.setData(Uri.fromFile(new File("/mnt/sdcard/temp"))); 
    intent.putExtra("outputX", 1); // 剪切的宽高比为1:2
    intent.putExtra("outputY", 2);
    intent.putExtra("aspectX", 20); // 保存图片的宽和高
    intent.putExtra("aspectY", 40);
    intent.putExtra("scale", true);
    intent.putExtra("noFaceDetection", true); 
    intent.putExtra("output", Uri.parse("file:///mnt/sdcard/temp")); 
    startActivityForResult(intent, 0);
    
    //===============================================================
    
    //11.打开Google Market 
    // 打开Google Market直接进入该程序的详细页面
    Uri uri = Uri.parse("market://details?id=" + "com.demo.app");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    //===============================================================
    
    //12.进入手机设置界面:
    // 进入无线网络设置界面(其它可以举一反三)  
    Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);  
    startActivityForResult(intent, 0);
    
    //===============================================================
    
    //13.安装apk:
    Uri installUri = Uri.fromParts("package", "xxx", null);   
    returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
    
    //===============================================================
    
    //14.卸载apk:
    Uri uri = Uri.fromParts("package", strPackageName, null);      
    Intent it = new Intent(Intent.ACTION_DELETE, uri);      
    startActivity(it); 
    
    //===============================================================
    
    //15.发送附件:
    Intent it = new Intent(Intent.ACTION_SEND);      
    it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");      
    it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");      
    sendIntent.setType("audio/mp3");      
    startActivity(Intent.createChooser(it, "Choose Email Client"));
    
    //===============================================================
    
    //16.进入联系人页面:
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(People.CONTENT_URI);
    startActivity(intent);
    
    //===============================================================
    
    
    //17.查看指定联系人:
    Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);//info.id联系人ID
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(personUri);
    startActivity(intent);
    
    //===============================================================
    
    //18.调用系统编辑添加联系人(高版本SDK有效):
    Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT);    
    it.setType("vnd.android.cursor.item/contact");    
    //it.setType(Contacts.CONTENT_ITEM_TYPE);    
    it.putExtra("name","myName");    
    it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY, "organization");    
    it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL,"email");    
    it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone");    
    it.putExtra(android.provider.Contacts.Intents.Insert.SECONDARY_PHONE,"mobilePhone");    
    it.putExtra( android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,"workPhone");    
    it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title");    
    startActivity(it);
    
    //===============================================================
    
    //19.调用系统编辑添加联系人(全有效):
    Intent intent = newIntent(Intent.ACTION_INSERT_OR_EDIT);    
    intent.setType(People.CONTENT_ITEM_TYPE);    
    intent.putExtra(Contacts.Intents.Insert.NAME, "My Name");    
    intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");    
    intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE,Contacts.PhonesColumns.TYPE_MOBILE);    
    intent.putExtra(Contacts.Intents.Insert.EMAIL, "com@com.com");    
    intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE, Contacts.ContactMethodsColumns.TYPE_WORK);    
    startActivity(intent);
    
    //===============================================================
    
    //20.打开另一程序 
    Intent i = new Intent();     
    ComponentName cn = new ComponentName("com.example.jay.test",     
    "com.example.jay.test.MainActivity");     
    i.setComponent(cn);     
    i.setAction("android.intent.action.MAIN");     
    startActivityForResult(i, RESULT_OK);
    
    //===============================================================
    
    //21.打开录音机
    Intent mi = new Intent(Media.RECORD_SOUND_ACTION);     
    startActivity(mi);
    
    //===============================================================
    
    //22.从google搜索内容 
    Intent intent = new Intent();     
    intent.setAction(Intent.ACTION_WEB_SEARCH);     
    intent.putExtra(SearchManager.QUERY,"searchString")     
    startActivity(intent);
    
    //===============================================================
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242

    6.Action在哪里查?

    本来想直接贴以前收集到的Intent Action的,后来想想还是算了,授之以鱼,还不如授之以渔, 
    如果你下载了Android的文档的话,可以在下述路径: 
    sdk–>docs–>reference–>android—>content—>Intent.html 
    找到这个玩意,然后从这个Constants开始就是了:

    遇到陌生的自己来这里查即可~

     

    展开全文
  • Intent详解及其用法

    千次阅读 2019-04-11 14:50:20
    Intent 概述 翻译过来为“意图”,它是一种运行时绑定(run-time binding)机制,可以应用于两个应用间的通讯交互,也能够应用于在同一个应用下不同组件的交互(activity、service、broadcast receiver) 看下面...
  • Intent的详细解析以及用法

    千次阅读 2018-02-08 10:49:37
    Intent的详细解析以及用法  Android的四大组件分别为Activity 、Service、BroadcastReceiver(广播接收器)、ContentProvider(内容提供者),这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个...
  • Intent的用法(初步)

    万次阅读 2018-05-09 15:49:10
    可视化的知识便于复习和查找(注:笔记以学习《androi第一行代码》这本书为基础) 什么是IntentIntent在Android中的核心作用就是“跳转”(Android中的跳转机制),同时可以携带必要的信息,也可以将Intent作为一...
  • intent详解(一)

    万次阅读 多人点赞 2019-09-11 11:58:53
    前言:通过重新翻看android入门书籍,才发现原来自己露掉了那么多基础知道。原以为有了C的基础,快速开发应该是没有问题的了,但没有遇到问题的时候还是海搜,只知道这么写能完成这个功能,但为...《intent详解(二...
  • Intent分为直接Intent和间接Intent /*** * 直接查找法(通过组件名称) * @param v */ public void componentClick(View v){ // Intent intent = new Intent(); // ComponentName componentName = new ...
  • 安卓常用代码片段

    万次阅读 2017-10-17 12:05:44
    常用代码片段 //1.拨打电话 // 给移动客服10086拨打电话 ...Intent intent = new Intent(Intent.ACTION_DIAL, uri); startActivity(intent); //2.发送短信 // 给10086发送内容为“Hello”的短信 Uri uri = Uri.parse
  • Android 文件打开方式

    万次阅读 热门讨论 2011-11-23 09:09:21
    Android打开文件,具体还是看代码吧,代码最能说明...public static Intent openFile(String filePath){ File file = new File(filePath); if(!file.exists()) return null; /* 取得扩展名 */ String end=fi
  • Activity 生命周期     显式 Intent 调用 ... 1 //创建一个显式的 Intent 对象(方法一:在构造函数中... 2 Intent intent = new Intent(Intent_Demo1.this, Intent_Demo1_Result1.class); 3 4 Bundle bundle =
  • Android系统中标准Intent的使用

    万次阅读 2014-04-18 13:07:37
    一 Android系统用于Activity的标准Intent 1 根据联系人ID显示联系人信息 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); //显示联系人信息 intent.setData(Uri.parse("content://...
  • Android中 跳转到系统设置界面方法总结

    万次阅读 多人点赞 2017-06-01 10:51:57
    有时候,我们在开发app时,会有跳转到系统设置界面的需求。例如:检查到网络连接错误,提示用户跳转到网络设置界面去设置网络连接...1. ACTION_ACCESSIBILITY_SETTINGS : // 跳转系统的辅助功能界面 Intent intent = n
  • android之android.intent.category.DEFAULT的用途和使用

    万次阅读 多人点赞 2019-07-27 08:23:25
    1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。 Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: Intent intent= new Intent(this, B....
  • android打开文件,intent的使用
  • 怎么样把数据从一个activity(intent)发送到另一个呢? 我发送数据的代码如下: Intent i=new Intent(context,SendMessage.class); i.putExtra("id",user.getUserAccountId()+""); i.putExtra("name",user...
  • 问题:ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.gnss_rtk/.MainActivity },运行开始即退出 解决:将依赖的项目appcompat包...
  • Android中Intent组件详解

    万次阅读 多人点赞 2011-06-30 10:05:00
    Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件。Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作、与动作有关的数据等。...
  • Android--用intent打开各种文件

    千次阅读 2016-03-02 10:37:01
    import android.content.Intent; import android.net.Uri; import android.net.Uri.Builder; import java.io.File; import android.content.Intent; //自定义android Intent类, //可用于获取打开以
1 2 3 4 5 ... 20
收藏数 303,207
精华内容 121,282
关键字:

intent