Android 之 Intent(意图)

  Intent是 Android中重要的桥梁之一,它分为显式意图和隐式意图。接下来分别针对这两种意图进行讲解。

  • 显式意图:通过指定一组数据或动作,激活应用内部的 activity;(相比隐式意图,此做法更安全)
Intent intent = new Intent();
intent.setClass(MainActivity.this,Main2Activity.class); //第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity
startActivity(intent); //如果没有回调的时候直接这样就OK
或者
Intent intent = new Intent();
intent.setClassName("com.sd.study.test_01","com.sd.study.test_02"); //第一个参数指的就是要跳转的那个Activity的包名;第二个指的是跳到的那个Activity的包名
startActivity(intent);
或者
Intent intent = new Intent(this,Main2Activity.class);//第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity
startActivity(intent);

  

  • 隐式意图:通过指定具体的包名和类名,打开另一个程序的 Activity。
//实现跳转的功能
Intent intent = new Intent();
//设置跳转的动作
intent.setAction(" 清单文件中目标activity的name ");
//设置 category
intent.addCategory(" 清单文件中目标activity的category ");
//开启 Activity (如果需要加权限记得加上)
startActivity(intent);

//实现拨打电话的功能
Intent intent = new Intent();
//设置拨打的动作
intent.setAction(" 清单文件中目标activity的name");
//设置拨打的数据
intent.setData(Uri.parse("tel:"+119));
//开启 Activity (如果需要加权限记得加上)
startActivity(intent);

  

//清单文件
<application
    android:name=".MyApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Main2Activity"> // " 清单文件中目标activity的name "
                                             // " 清单文件中目标activity的category "
    </activity>
</application>

  • Android数据传递与回传
//第一个Activity
public class MainActivity extends Activity {
private Button btn ;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button)findViewById(R.id.button);
        //设置单击事件
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(mainActivity.this,main2Activity.class); //第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity
                intent.putExtra("str1", "hello world");
                intent.putExtra("str2", "你好,世界");
                //如果没有回调也不用重写这个方法
                startActivityForResult(intent, 1);
            }
        });
    }
}

//第二个Activity
public class Main2Activity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         btn = (Button)findViewById(R.id.button);
         Intent intent = this.getIntent();
         Bundle bundle = intent.getExtras();
         //根据"键值对"取值
         String str1 = bundle.getString("str1");
         String str2 = bundle.getString("str2");
         //按钮的点击事件
         btn.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
                 Intent intent = new Intent();
                 intent.putExtra("str3", "Back Data");
                 setResult(0, intent); //设置返回值
                 finish(); //调用这个方法,此Activity关闭,并把它从栈中移除。然后进入到前一个Activity
            }
        });
    }
} 
    • 数据传递
      • putExtra(); //可以传递8种基本数据类型;
      • Bundle(); //可以传递8种基本数据类型;
    • 回传数据  
      • a. 调用者Activity开启新的界面选用  startActivityForResult();
startActivityForResult(intent, 1); //如果没有回调则不用重写这个方法
      • b. 在新开启的Activity中设置返回值    
Intent intent = new Intent();
intent.putExtras();
setResult();//设置返回值
      • c. 操作关闭  finish();    
      • d. 在调用者Activity 中调用onActivityResult(); 方法    
时间: 2025-01-08 02:45:19

Android 之 Intent(意图)的相关文章

今天把疯狂的Android 的 Intent(意图) 这章看了。总结了一些知识点

Intent ---  表达自己的意图 通过 Intent 可以启动 (activity.service.BroadcastReceiver)   Intent 是程序组件之间通信的重要媒介 一个Intent 对象只能包含一个Action Intent属性:Component.Action.Category.Data.Type.Extra.Flag      |---Component            用于指定需要启动的目标组件            Component 属性需要接受一个C

Android必备:Activity 活动 和 Intent 意图 的学习整理

看这里:Android必备:Activity 活动 和 Intent 意图 的学习整理 在Android必备:Android UI控件的了解与学习中, 对Android UI做了初步的了解和学习,本篇继续进行Android开发学习的整理.Android应用通常由一个或多个基本组件组成,最常用的就是 Activity,本篇我们就来整理一下Activity活动的相关知识,以及Activity之间相互通信的Intent意图. 首先,我们来简单的介绍一下Activity 活动,如图所示(来自百度百科):

Android开发:显式/隐式Intent意图跳转Activity总结

显式跳转 在已知包名和类名的情况下常用的跳转方法: 是 nt mIntent = new Intent(); mIn Int etent.setClassName("com.android.settings","com.android.settings.Settings"); mContext.startActivity(mIntent); 我们也常这么用: y.class); startActivity(intent); 这是跳转到当前应用的某个Activity,

Android中的Intent(意图)的使用

概述: Intent(意图)主要是解决Android应用的各项组件之间的通讯.Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦. 分类: 隐式意图 不用指定要打开的activity, 通过动作和数据的组合去查找系统中, 能处理指定动作和数据的界面,因此

android之intent显式,显式学习

intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction                                            跳转到其他应用:setClassName setData 跳转到自己应用:setClass addCategory(当为DEFAULT时可无) 一.无参时的显式.隐式举例 显式-到自己应用(最简单情况): /*

android隐式意图激活自定义界面

我们也可以使用隐士意图激活自定义的界面,并且可以携带数据: 效果: 点击第二个按钮后: 附代码: 主窗体的代码: 1 package com.yy.twoactivity; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.net.Uri; 6 import android.os.Bundle; 7 import android.view.View; 8 9 public clas

Android Activity Intent

首先定义一个LifeCycleActivity的类,继承Activity,重写onCreat() onStart()  onResume()  onPause()  onStop()  onDestroy() 1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.util.Log; 4 5 public class LifeCycleActivity extends Activity{ 6 7 @O

android隐式意图激活浏览器

在有些时候,我们可能想打开某个不确定的应用,比如,我们想要通过浏览器打开百度的站点,但是我们并不强调必须要使用哪一个浏览器,那么这种情况我们使用显示意图可能不太好,更好的做法是使用隐式意图打开网站. 效果: 点击按钮后: 附代码: 1 package com.yy.activity; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.net.Uri; 6 import androi

android的Intent

        //通过制定setComponent来启动组件 public void start(View view){ //创建一个意图 //Intent intent=new Intent(this,MainActivity2.class); Intent intent=new Intent(); //创建组件,通过组件响应,直接Intent ComponentName component=new ComponentName(this, MainActivity2.class); inte