隐式的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 失败