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

系统 1903 0

本章节翻译自《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。例如:

  1. <intent-filter>
  2. <actionandroid:name= "com.manoel.SecondActivity" />
  3. <categoryandroid:name= "android.intent.category.DEFAULT" />
  4. </intent-filter>

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

2. AndroidManifest.xml

  1. <?xmlversion= "1.0" encoding= "utf-8" ?>
  2. <manifestxmlns:android= "http://schemas.android.com/apk/res/android"
  3. package = "com.manoel.Intents"
  4. android:versionCode= "1"
  5. android:versionName= "1.0" >
  6. <uses-sdkandroid:minSdkVersion= "14" />
  7. <uses-permissionandroid:name= "android.permission.CALL_PHONE" />
  8. <uses-permissionandroid:name= "android.permission.INTERNET" />
  9. <application
  10. android:icon= "@drawable/ic_launcher"
  11. android:label= "@string/app_name" >
  12. <activity
  13. android:label= "@string/app_name"
  14. android:name= ".IntentsActivity" >
  15. <intent-filter>
  16. <actionandroid:name= "android.intent.action.MAIN" />
  17. <categoryandroid:name= "android.intent.category.LAUNCHER" />
  18. </intent-filter>
  19. </activity>
  20. <activityandroid:name= ".MyBrowserActivity"
  21. android:label= "@string/app_name" >
  22. <intent-filter>
  23. <actionandroid:name= "android.intent.action.VIEW" />
  24. <actionandroid:name= "com.manoel.MyBrowser" />
  25. <categoryandroid:name= "android.intent.category.DEFAULT" />
  26. <dataandroid:scheme= "http" />
  27. </intent-filter>
  28. </activity>
  29. </application>
  30. </manifest>
3. 在main.xml中添加一个Button元素。
  1. <?xmlversion= "1.0" encoding= "utf-8" ?>
  2. <LinearLayoutxmlns: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. <Button
  7. android:id= "@+id/btn_launchMyBrowser"
  8. android:layout_width= "fill_parent"
  9. android:layout_height= "wrap_content"
  10. android:onClick= "onClickLaunchMyBrowser"
  11. android:text= "LaunchMyBrowser" />
  12. </LinearLayout>
4.IntentsActivity.java
  1. public class IntentsActivity extends Activity{
  2. /**Calledwhentheactivityisfirstcreated.*/
  3. @Override
  4. public void onCreate(BundlesavedInstanceState){
  5. super .onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. }
  8. public void onClickLaunchMyBrowser(Viewview){
  9. Intenti= new Intent( "com.manoel.MyBrowser" );
  10. i.setData(Uri.parse( "http://www.amazon.com" ));
  11. startActivity(i);
  12. }
  13. }
5. browser.xml
  1. <?xmlversion= "1.0" encoding= "utf-8" ?>
  2. <LinearLayoutxmlns: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. <WebView
  7. android:id= "@+id/WebView01"
  8. android:layout_width= "wrap_content"
  9. android:layout_height= "wrap_content" />
  10. </LinearLayout>
6. MyBorwserActivity.java
  1. public class MyBrowserActivity extends Activity{
  2. /**Calledwhentheactivityisfirstcreated.*/
  3. @Override
  4. public void onCreate(BundlesavedInstanceState){
  5. super .onCreate(savedInstanceState);
  6. setContentView(R.layout.browser);
  7. Uriurl=getIntent().getData();
  8. WebViewwebView=(WebView)findViewById(R.id.WebView01);
  9. webView.setWebViewClient( new Callback());
  10. webView.loadUrl(url.toString());
  11. }
  12. private class Callback extends WebViewClient{
  13. @Override
  14. public boolean shouldOverrideUrlLoading(WebViewview,Stringurl){
  15. return ( false );
  16. }
  17. }
  18. }
7. 调试。

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

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


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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论