簡述
說起Activity推掸,每個(gè)Android開發(fā)人員應(yīng)該都很熟悉熟妓,它是整個(gè)Android application的一個(gè)重要部分。本文主要總結(jié)一下Activity跳轉(zhuǎn)的常用方法豪墅。
1.Intent
a.顯式跳轉(zhuǎn)
/**1. 不帶結(jié)果回調(diào)*/
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
/**2. 帶結(jié)果回調(diào)*/
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, requestCode);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//todo 處理跳轉(zhuǎn)頁面返回的結(jié)果
}
b.隱式跳轉(zhuǎn)
在AndroidManifest.xml文件里配置所跳轉(zhuǎn)到Activity的屬性
<activity
android:name="com.example.android.tst.SecondActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="com.example.android.tst.SecondActivity"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在需要跳轉(zhuǎn)的地方寫
Intent intent=new Intent("com.example.android.tst.SecondActivity");
startActivity(intent);
2.外部H5頁面啟動(dòng)App
清單文件對應(yīng)Activity配置, 其中host, scheme, path自定義即可
<intent-filter>
<!--該頁面的路徑配置-->
<data
android:host="com.admin.example"
android:path="/parameter"
android:scheme="customscheme" />
<!--下面這幾行也必須得設(shè)置-->
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
h5頁面這樣配置
var the_href = "customscheme://com.admin.example/parameter?param1=......"
3.內(nèi)部h5跳轉(zhuǎn)activity
定義一個(gè)類用于js調(diào)用
public class TestInterFace{
Intent intent = null;
private Context mContext;
public TestInterFace(Context context){
this.mContext = context;
}
@JavascriptInterface //這個(gè)必須加到逊,否則不能調(diào)用
public void jump(){
intent = new Intent(mContext, TestActivity.class);
startActivity(intent);
}
}
WebView配置
mWebview.getSettings().setJavaScriptEnabled(true);
mWebview.loadData("", "text/html", null);
mWebview.addJavascriptInterface(new TestInterFace(WebActivity.this),"test");
mWebview.loadUrl("http://www.baidu.com/");
//設(shè)置不用系統(tǒng)瀏覽器打開,直接顯示在當(dāng)前Webview
mWebview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
js調(diào)用
<script>
```
function jumpToAppPages(){
test.jump();
}
```
</script>
4.反射啟動(dòng)activity
/**className 為對應(yīng)的activity的全路徑*/
public static void startActivity(String className){
Intent intent = new Intent();
try {
Class aClass = Class.forName(className);
intent.setClass(MyApplication.getInstance(),aClass);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MyApplication.getInstance().startActivity(intent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}