Android中Intent

来源:互联网 发布:网站数据迁移方案 编辑:程序博客网 时间:2024/06/06 10:58

转载请标明出处: http://blog.csdn.net/wu_wxc/article/details/53705181
本文出自【吴孝城的CSDN博客】

Android中从一个Activity跳转到另一个Activity可用Intent(意图)来实现
Intent又分为显式和隐式两种,下面简单介绍下这两和Intent的使用
显示Intent
需要编辑的文件如下
这里写图片描述

主要代码:
点击按钮后启动另一个Activity,在Intent中直接写两个Activity的名字

Intent intent = new Intent(MainActivity.this, SecondAty.class);startActivity(intent);

在AndroidManifest.xml中配置注册Activity

<activity android:name=".SecondAty" />

隐式Intent
区别在于action,action内容可以随便写,但一般用包名+action+类名。

public void click(View v) {    Intent intent = new Intent("cn.wuxiaocheng.intent.action.SecondAty");    startActivity(intent);}
<activity android:name=".SecondAty">    <intent-filter>        <action android:name="cn.wuxiaocheng.intent.action.SecondAty" />        <category android:name="android.intent.category.DEFAULT" />    </intent-filter></activity>

不过一般会在被启动的Activity中定义一个常量,然后在启动它时intent传入被启动类中的这个常量,如下。

public class SecondAty extends Activity {    // 定义一个常量存放action    public static final String ACTION = "cn.wuxiaocheng.intent.action.SecondAty";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);    }}
public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void click(View v) {        // Intent参数传入要启动的Activity定义的常量        Intent intent = new Intent(SecondAty.ACTION);        startActivity(intent);    }}

启动另一个应用
我们还可以用意图来启动另一个应用,在意图中传入要启动的应用界面的action的包名,也可以是其他字符。不过要完全一样。

<activity android:name=".SecondAty">    <intent-filter>    <!--被启动的应用的Activity的action-->    <action android:name="cn.wuxiaocheng.intent.action.SecondAty" />    <category android:name="android.intent.category.DEFAULT" /></intent-filter>
// Intent参数传入要启动的应用的Activity的actionIntent intent = new Intent("cn.wuxiaocheng.intent.action.SecondAty");startActivity(intent);

如果当前应用不想被其他应用启动,我们可以在activity中添加一句:android:exported=”false”
这样其他应用启动时应会报错,为了不让程序报错,我们可以捕获异常处理

<!--添加android:exported="false",这样其他应用就无法启动这个Activity--><activity    android:name=".SecondAty"    android:exported="false">    <intent-filter>        <!--被启动的应用的Activity的action-->        <action android:name="cn.wuxiaocheng.intent.action.SecondAty" />        <category android:name="android.intent.category.DEFAULT" />    </intent-filter></activity>
try {    // Intent参数传入要启动的应用的Activity的action    Intent intent = new Intent("cn.wuxiaocheng.intent.action.SecondAty");    startActivity(intent);} catch (Exception e) {    Toast.makeText(MainActivity.this, "无法启动指定应用", Toast.LENGTH_LONG).show();}

如果有多个个Activity的action是一样的,那么程序在启动时就会弹出选项让你选择其中一个,有仅此一次,也有一直

0 0
原创粉丝点击