Android之Intent的概念与应用

android中,不同的activity实例可能运行在一个进程中,也可能运行在不同进程中,因此我们需要一种机制帮助我们在activity之间传递消息。android中通过intent对象表示一条消息,一个intent对象不仅包含这个消息的目的地,还可以包含消息的内容。对于一个intent对象,消息的目的地是必须的,内容则是可选的。

一、显式intent

显式intent用法即之前在启动另一个activity时用到的

1、在onCreate()方法中创建intent对象:Intent I = new Intent(currentActivity,goleActivity.class);

2、启动另一个activitystartActivity(i);

【注】需要在AndroidManifest.xml中配置目标activity<activityandroid:name="xxx"/>

 

二、隐式intent

        隐式intent指:创建intent,且不指定被启动的activity

        即在创建intent对象时,不指明目标activity,或者说目标activity是另一个appactivity

 

   1、在AndroidManifest.xml中配置:

            

<activity

android:name=".Atv">

<intent-filter>

<action android:name="com.abc.xxx.intent.action.Atv"/>   约定成俗的格式:包名.intent.action.activity名称

<category android:name="android.intent.category.DEFAULT"/>  DEFAULT意味着该intent的行为方式为一个activity

</intent-filter>

</activity>

 

   2、在被启动的activity中添加静态常量:

            public static finalACTION = "com.abc.xxx.intent.action.Atv";

 

   3、在调用的activityonCreate()的方法中:

     startActivity(new intent(Atv.ACTION));

 

 

   (1)若要启动其他appactivity,则在另一个appactivity中直接: startActivity(newintent("com.abc.xxx.intent.action.Atv"));

   (2)activity只允许其所在的app访问,不能被其他app访问,则

      首先把AndroidManifest.xml中改为:         

        <activity android:name=".Atv" android:exported="false">//需要捕获异常

     然后在onClick()方法中使用try-catch捕获异常:

                   try{

              startActivity(newintent(Atv.ACTION));

        }catch(Exception e){

                Toast.makeText(….);

        }

   

 

三、intent过滤相关选项

          如果多个activity拥有同样的intent action,在启动时使用同一个action时,情况如何呢

         1、再新建一个activity,在AndroidManifest.xml中配置,且action与之前使用的为同一个

         2、启动这三个activity

                  此时在主activity中,点击按钮后会出现 选择activity的对话框

 

         也可通过在AndroidManifest.xml中配置:在<intent-filter>中加

               <dataandroid:schema="app"/>

 

四、通过浏览器链接启动本地Activity

     1、新建一个本地的activity

     2、在AndroidManifest.xml中配置:

      

<activity

android:name=".LocalAtv">

<intent-filter>

<action android:name="android.intent.action.VIEW"/>   约定成俗的格式:包名.intent.action.activity名称

<category android:name="android.intent.category.DEFAULT"/>  DEFAULT意味着该intent的行为方式为一个activity

<category android:name="android.intent.category.BROWSABLE"/>

<data android:schema="app"/>

</intent-filter>

</activity>

  3、编写浏览器页面(WebStorm)

          <ahref="app://hello">Launch my app</a>

    4、在android浏览器中输入URL,点击链接即可启动本地的activity

  5、在LocalAtv中通过intent获取到与其相关的对象:

           Uri uri = getIntent.getData();//然后通过uriget方法获取信息,本例中uri的内容为"app://hello"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值