Android学习课程---Intent

时间:2022-07-25 16:27:17

Intent是意图的意思.有两种表现形式.一个是显示的显示,这种方式指明了意图,或者说是意向

还有一种是隐士的去制定,常用的应用场景是当我们分享一篇文章时,会提示我们分享到微信,qq,人人等一系列具有同种功能的一类活动

在隐式的意图中,我们没有明确的地址,所以我们需要对我们想要的意图进行过滤筛选.

筛选:

<application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme">

        <activity

            android:name=".MainActivity"

            android:label="@string/app_name">

            <intent-filter>

                 <actionandroid:name="com.lanou.huangyanli"/>

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

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


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

            </intent-filter>

        </activity>

        <activity 

            android:name="com.example.intent_finsh.BackAcivity"

            android:label="BackAcivity"

            >

            <intent-filter>

                <actionandroid:name="com.lanou.huangyanli"/>

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

            </intent-filter>

            

        </activity>

    </application>

这里是选择了DEFAULT  

代码实现:两个布局文件,便于查看视图效果

<LinearLayoutxmlns: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/goToBtn"

        android:layout_height="wrap_content"

        android:layout_width="wrap_content"

        android:text="跳转"

        />

    

    <Button 

        android:id="@+id/goBtn"

        android:layout_height="wrap_content"

        android:layout_width="wrap_content"

        android:text="隐式跳转"

        />


</LinearLayout>

第二个布局文件:放一张图片

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

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    <ImageView 

        android:layout_height="wrap_content"

        android:layout_width="wrap_content"

        android:src="@drawable/ic_launcher"

        

        />


</LinearLayout>

需要两个java文件,一个MainActivity 一个MyActivity

首先是:MainActivity.java

public class MainActivityextends Activity implements OnClickListener {


private ButtongoToBtn;

private ButtongoBtn;


@Override

protectedvoid onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();// 调用初始化方法


}


/**

* 初始化页面

**/

private void initView() {

goToBtn = (Button) findViewById(R.id.goToBtn);

goToBtn.setOnClickListener(this);

goBtn = (Button) findViewById(R.id.goBtn);

goBtn.setOnClickListener(this);

}


@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.goToBtn:

// 通过启动显示intent启动MyActivity页面

Intent intent = new Intent(this, MyActivity.class);

intent.putExtra("name","张三");//相当于是键值

intent.putExtra("age", 20);


startActivity(intent);

finish();// 关闭当前activity 销毁 

//调用finish方法的作用是当我们的程序中有多个页面同时打开,

//我对当前的页面finish就可以直接返回到主页面,相当于使用back健

break;

case R.id.goBtn:

// 隐式的intent设置一个条件 在注册表中注册的action"com.lanou.Huangyanli"

// 添加一个默认的启动<categroy

Intent intent2 = new Intent(Intent.ACTION_VIEW);// 调用访问页面


// Uri data = Uri.parse("http://www.baidu.com");//跳转的浏览器地址

Uri data = Uri.parse("tel:155");

intent2.setData(data);


startActivity(intent2);


break;


default:

break;

}


}


}

第二个用于加载布局

public class MyActivityextends Activity{

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_my);

}