Intent七大属性

1.Intent的作用

        包装Android的组件

        启动Activity,启动服务,发送广播

         组件之间的传值

2.  Intent

              “显示”意图 :明确指定了要跳转的Activity(通常用于应用程序内容组件的跳转)

              “隐式”意图: 不明确指定要跳转的Activity,而是通过Intent来描述动作(跨应用程序之间的跳转)


3 “显示”意图

   写法1: Intent intent = new Intent(MainActivity.this,InfoActivity.class);

                 startActivity(intent);

  

     写法2: Intent intent = new Intent();

                 intent.setClass(MainActivity.this,InfoActivity.class);

                 startActivity(intent)


   写法3: ComponentName 包装android的组件(用于指定启动的组件)

                 Intent intent = new Intent();

                  ComponentName cName = new ConponentName(MainActivity.this,InfoActivity.class);

                  intent.setComponent(cName);

                 startActivity(intent);


4."隐式"意图

action   表示要启动的Activity想要完成什么动作. 经常用在隐式意图中

代码中可以设置action的意图


注意:   必须保证action在应用单中唯一性




ACTION_MAIN (android:intent.action.MAIN)  : Android程序入口

ACTION_VIEW  (android:intent.action.VIEW) : 显示指定的数据


ACTION_EDIT  (android:intent.action.EDIT) : 编辑指定的数据


ACTION_DIAL  (android:intent.action.DIAL) : 显示拨号面板界面


ACTION_CALL  (android:intent.action.CALL) :  直接呼叫data中所携带的电话号码


ACTION_SEND   (android:intent.action.SEND):  向其他人发送数据(彩信, email)


ACTION_SENDTO  (android:intent.action.SENDTO) : 向其他人发生短信






category  为Action增加附加类别的信息


android.intent.category.LAUNCHER   程序入口, 优先级最高


android.intent.category.DEFAULT    默认的, 普通的Activity





A应用(启动者)




Intent intent = new Intent();


intent.setAction("com.qf.day06_lanuchmode.B");//必须要和被启动的action一致


startActivity(intent);







B应用(被启动者)  需要一个唯一的动作(action)

在清单文件中, <activity/> 标签中, 指定 action + category




<intent-filter>
                 
<action  android:name="com.qf.day06_lanuchmode.B"/>
 
<category android:name="android.intent.category.DEFAULT"/>
 
    </intent-filter>




 data   指定action后, 将必要的数据放入data中


        比如:   拨打电话:  必须要有电话号码


打开网页:   必须要有网址




URI :   统一资源标识符(不同数据有不同的格式)


        拨打电话:  tel:110119120


网址:      http://baidu.com


发送短信:  smsto:10086



type   如果data属性为文件的路径, 那么需要通过type来指定类型




比如:


文本    text/*


图片    image/*


视频    video/*


音频    audio/*

package com.qf.day06_intent;


import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;


public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    public void clickButton(View v)
    {
    Intent intent  = new Intent();
    switch (v.getId()) {
   
case R.id.button_01:

//显示启动1
intent = new Intent(this,InfoActivity.class);

break;


case R.id.button_02:
//显示启动2


intent.setClass(this, InfoActivity.class);

break;

case R.id.button_03:


ComponentName componentName = new ComponentName(this, InfoActivity.class);

//设置Android包装的组件
intent.setComponent(componentName);

break;

case R.id.button_04:


intent.setAction("com.qf.day06_lanuchmode.B");//被启动的页面的清单文件中action中的name需要和这个一样,categary可以设置成默认

break;

case R.id.button_05:

//指定Intent的动作
intent.setAction(Intent.ACTION_VIEW);
//指定必要的数据
intent.setData(Uri.parse("http://baidu.com"));
break;

case R.id.button_06:

intent.setAction(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.parse("file://storage/sdcard/lf.jpg"), "image/*");

break;

case R.id.button_07:

intent.setAction(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.parse("file://storage/sdcard/123.txt"), "text/*");
break;

case R.id.button_08:

intent.setAction(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.parse("file://storage/sdcard/movei.mp4"), "video/*");
break;

case R.id.button_09:

intent.setAction(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.parse("file://storage/sdcard/wlxq.mp3"), "audio/*");

break;

case R.id.button_10:

intent.setAction(Intent.ACTION_SENDTO);

intent.setData(Uri.parse("smsto:110"));

intent.putExtra("sms_body", "为了更好的学习, 咱们分手吧!!!");

break;
}
   
    startActivity(intent);
    }
    
}

附《Intent调用常见系统组件方法》

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 调用浏览器  
  2. Uri webViewUri = Uri.parse("http://blog.csdn.net/zuolongsnail");  
  3. Intent intent = new Intent(Intent.ACTION_VIEW, webViewUri);  
  4.   
  5. // 调用地图  
  6. Uri mapUri = Uri.parse("geo:100,100");  
  7. Intent intent = new Intent(Intent.ACTION_VIEW, mapUri);  
  8.   
  9. // 播放mp3  
  10. Uri playUri = Uri.parse("file:///sdcard/test.mp3");  
  11. Intent intent = new Intent(Intent.ACTION_VIEW, playUri);  
  12. intent.setDataAndType(playUri, "audio/mp3");  
  13.   
  14. // 调用拨打电话  
  15. Uri dialUri = Uri.parse("tel:10086");  
  16. Intent intent = new Intent(Intent.ACTION_DIAL, dialUri);  
  17. // 直接拨打电话,需要加上权限<uses-permission id="android.permission.CALL_PHONE" />  
  18. Uri callUri = Uri.parse("tel:10086");  
  19. Intent intent = new Intent(Intent.ACTION_CALL, callUri);  
  20.   
  21. // 调用发邮件(这里要事先配置好的系统Email,否则是调不出发邮件界面的)  
  22. Uri emailUri = Uri.parse("mailto:zuolongsnail@163.com");  
  23. Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);  
  24. // 直接发邮件  
  25. Intent intent = new Intent(Intent.ACTION_SEND);  
  26. String[] tos = { "zuolongsnail@gmail.com" };  
  27. String[] ccs = { "zuolongsnail@163.com" };  
  28. intent.putExtra(Intent.EXTRA_EMAIL, tos);  
  29. intent.putExtra(Intent.EXTRA_CC, ccs);  
  30. intent.putExtra(Intent.EXTRA_TEXT, "the email text");  
  31. intent.putExtra(Intent.EXTRA_SUBJECT, "subject");  
  32. intent.setType("text/plain");  
  33. Intent.createChooser(intent, "Choose Email Client");  
  34.   
  35. // 发短信  
  36. Intent intent = new Intent(Intent.ACTION_VIEW);  
  37. intent.putExtra("sms_body""the sms text");  
  38. intent.setType("vnd.android-dir/mms-sms");  
  39. // 直接发短信  
  40. Uri smsToUri = Uri.parse("smsto:10086");  
  41. Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);  
  42. intent.putExtra("sms_body""the sms text");  
  43. // 发彩信  
  44. Uri mmsUri = Uri.parse("content://media/external/images/media/23");  
  45. Intent intent = new Intent(Intent.ACTION_SEND);  
  46. intent.putExtra("sms_body""the sms text");  
  47. intent.putExtra(Intent.EXTRA_STREAM, mmsUri);  
  48. intent.setType("image/png");  
  49.   
  50. // 卸载应用  
  51. Uri uninstallUri = Uri.fromParts("package""com.app.test"null);  
  52. Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri);  
  53. // 安装应用  
  54. Intent intent = new Intent(Intent.ACTION_VIEW);  
  55. intent.setDataAndType(Uri.fromFile(new File("/sdcard/test.apk"), "application/vnd.android.package-archive");  
  56.   
  57. // 在Android Market中查找应用  
  58. Uri uri = Uri.parse("market://search?q=愤怒的小鸟");           
  59. Intent intent = new Intent(Intent.ACTION_VIEW, uri);  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值