Intent

1.http://blog.csdn.net/daogepiqian/article/details/50606474

2.http://blog.csdn.net/wulianghuan/article/details/8508848

3.Activity中的action和category可以都相同,这样启动intent时如下

4.部分代码如下:

 <activity android:name=".Second_Activity">
            <intent-filter>
                <action android:name="com.android.activity.MY_ACTION" />

                <category android:name="android.intent.category.my" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name=".Third_Activity">
            <intent-filter>
                <action android:name="com.android.activity.MY_ACTION" />

                <category android:name="android.intent.category.my" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

  

text1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent();
                it.setAction("com.android.activity.MY_ACTION");
                it.addCategory("android.intent.category.my");
                startActivity(it);

            }
        });

  

 5.Intent调用另外一个app的界面

<1>

 Intent it=new Intent();
        /**
         * 参数:
         * 包名
         * 包名+Activity名称
         * */
        it.setClassName("com.example.customview05imageview", "com.example.customview05imageview.MainActivity");
        startActivity(it);

  

 <2>

 try{
            Intent intent = new Intent();
            intent.setAction("android.intent.action.MAIN");
            intent.addCategory("com.tupian");
            startActivity(intent);
             }
            catch (Exception e)
            {
                Toast.makeText(this,"请先安装该app",Toast.LENGTH_SHORT).show();
   
             }

  

 <category 必须加上Default,否则找不到该Acitivity>

 <activity android:name=".Main2Activity">
            <intent-filter>
                <action android:name="android.intent.action.myMainActivity2"/>
                <category android:name="com.tupian2" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

  

6. 效果图:

不同的app,activity,只要action相同。那么通过隐式intent就可以打开app的特定Activity。

 

 

7.小结:

一个Activity可以有多个action,也能有多个category。 使用隐式Intent,如果使用了addcategory(),那样activity的配置中除去添加的category,必须要加上category的default值,否则找不到该activity。

 

当intent使用setaction时,如果多个activity的action相同,则会同时启动调用。

 

如下代码:则可以启动activity2,activity3的

        Intent intent = new Intent("eee") ;  // eee 为action
        startActivity(intent);

  

     //  如果加上category则需要action和category都相同才能启动
     Intent intent = new Intent("eee") ;
        intent.addCategory("cate");
        startActivity(intent);   

  

 

  <activity android:name=".Main2Activity">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.SENDTO" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="eee" />
                <action android:name="ss" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>


        <activity android:name=".Main3Activity">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="eee" />
                <action android:name="android.intent.action.SENDTO" />
                <category android:name="cate" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

  

 一个activity中可以配置多个<intent-filter>,只需要与其中一个相同,activity即可启动。

posted @ 2016-12-27 17:29  咖喱不见不散啊  阅读(189)  评论(0)    收藏  举报