关闭

Android之Intent的概念与应用

标签: android
92人阅读 评论(0) 收藏 举报
分类:

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"

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2130次
    • 积分:69
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:2篇
    • 评论:0条
    文章分类
    文章存档