在 Android 中 Intent 的概念及应用

来源:互联网 发布:windows虚拟内存 编辑:程序博客网 时间:2024/06/04 20:26

隐式的Intent启动:

首先在AndroidMainfest.xml配置:

<activity
            android:name="com.example.learnintent.SecondMainActivity"
            android:label="@string/title_activity_second_main" >
            <intent-filter >
                <category android:name="android.intent.category.DEFAULT"/>

                //名字任意
                <action  android:name="gaozhen"/>
            </intent-filter>
 </activity>

启动的时候:

findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent("gaozhen"));
}
});
}


因为写这个字符串比较的麻烦,经常这样写 在要启动的activity中public static final String ACTION="gaozhen";

只要配置这个其他的应用也是能访问的,这是activity默认的被访问。

如果一个应用不想让另外的应用访问,可以设置

 <!--android:exported="false"是否能被外部的应用所访问  -->
        <activity
            android:exported="false"
            android:name="com.example.learnintent.SecondMainActivity"
            android:label="@string/title_activity_second_main" >
            <intent-filter >
                <category android:name="android.intent.category.DEFAULT"/>
                <action  android:name="gaozhen"/>
            </intent-filter>
        </activity>


当用App1这个外部应用去访问一个应用的两个activity时,

设置相同的action

 <action  android:name="gaozhen"/>


当两个具有相同的action,要想再启动的时候,启动特定的activity时

需要配置:

要启动的一个外部应用的其中的一个activity:

<activity
            android:name="com.example.learnintent.SecondMainActivity1"
            android:label="@string/title_activity_second_main_activity1" >
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="gaozhen" />
                <data android:scheme="app"/>

            </intent-filter>
</activity>

触发启动事件的一个外部应用的一个activity:

public void onClick(View v) {
//这种能跨应用访问activity
startActivity(new Intent("gaozhen",Uri.parse("app://hello")));
}
});



通过浏览器连接启动本地activity:


对要被访问的activity的配置:

 <activity
            android:name="com.example.launchlocalapp.LoackAppAty"
            android:label="@string/title_activity_loack_app_aty" >
            <intent-filter >

//配置该应用能被浏览器,浏览
                <category android:name="android.intent.category.APP_BROWSER"/>

//是一个本地的activity
                <category android:name="android.intent.category.DEFAULT"/>
                <action android:name="android.intent.action.VIEW"/>
                <data android:scheme="app"/>
            </intent-filter>

 </activity>




通过浏览器链接启动本地 Activity  失败


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