【Android 开发教程】使用Intent-Filter

来源:互联网 发布:台湾手机网络制式 编辑:程序博客网 时间:2024/05/18 09:10

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


我们已经知道,一个activity通过使用Intent对象调用另外一个activity。为了能让其他activity做出回应,还需要在AndroidManifest.xml中配置<intent-filter>元素,同时指定action和category。例如:

[java] view plaincopy
  1. <intent-filter >  
  2.     <action android:name="com.manoel.SecondActivity" />  
  3.     <category android:name="android.intent.category.DEFAULT" />  
  4. </intent-filter>  

1. 新建一个工程,创建一个类:MyBrowserActivity.java。同时在res/layout中创建一个xml文件:brwoser.xml。

2. AndroidManifest.xml

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.manoel.Intents"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk android:minSdkVersion="14" />  
  8.     <uses-permission android:name="android.permission.CALL_PHONE"/>  
  9.     <uses-permission android:name="android.permission.INTERNET"/>  
  10.     <application  
  11.         android:icon="@drawable/ic_launcher"  
  12.         android:label="@string/app_name" >  
  13.         <activity  
  14.             android:label="@string/app_name"  
  15.             android:name=".IntentsActivity" >  
  16.             <intent-filter >  
  17.                 <action android:name="android.intent.action.MAIN" />  
  18.                 <category android:name="android.intent.category.LAUNCHER" />  
  19.             </intent-filter>  
  20.         </activity>  
  21.           
  22.                 
  23.         <activity android:name=".MyBrowserActivity"  
  24.                   android:label="@string/app_name">  
  25.             <intent-filter>  
  26.                 <action android:name="android.intent.action.VIEW" />  
  27.                 <action android:name="com.manoel.MyBrowser" />  
  28.                 <category android:name="android.intent.category.DEFAULT" />  
  29.                 <data android:scheme="http" />  
  30.             </intent-filter>  
  31.         </activity>  
  32.           
  33.               
  34.     </application>  
  35.   
  36. </manifest>  
3. 在main.xml中添加一个Button元素。
[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <Button  
  8.         android:id="@+id/btn_launchMyBrowser"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:onClick="onClickLaunchMyBrowser"  
  12.         android:text="Launch My Browser" />  
  13.   
  14. </LinearLayout>  
4.IntentsActivity.java
[java] view plaincopy
  1. public class IntentsActivity extends Activity {  
  2.   
  3.     /** Called when the activity is first created. */  
  4.     @Override  
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.main);  
  8.     }  
  9.       
  10.     public void onClickLaunchMyBrowser(View view) {  
  11.         Intent i = new Intent("com.manoel.MyBrowser");  
  12.                 i.setData(Uri.parse("http://www.amazon.com"));  
  13.                 startActivity(i);         
  14.     }  
  15.       
  16. }  
5. browser.xml
[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <WebView  
  8.         android:id="@+id/WebView01"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" />  
  11.   
  12. </LinearLayout>  
6. MyBorwserActivity.java
[java] view plaincopy
  1. public class MyBrowserActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.browser);  
  7.   
  8.         Uri url = getIntent().getData();  
  9.         WebView webView = (WebView) findViewById(R.id.WebView01);  
  10.         webView.setWebViewClient(new Callback());  
  11.         webView.loadUrl(url.toString());  
  12.     }  
  13.   
  14.     private class Callback extends WebViewClient {  
  15.         @Override  
  16.         public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  17.             return (false);  
  18.         }  
  19.     }  
  20. }  
7. 调试。

8. 点击“Launch my Browser”按钮,将会看到一个新的activity,并且显示了Amazon.com网站的网页。