Intent七大属性

原创 2016年08月29日 19:55:59

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);  

Intent的七大属性

Inten的七大属性

微子学Android之Intent的七大属性

Intent七大属性是指Intent的ComponentName、Action、Category、Data、Type、Extra以及Flag,七个属性,总体上可以分为3类: 第一类:启动,有Comp...

回顾详述Intent的七大属性

Intent七大属性都是一些常用的东西,就是没有总结过,那么今天就来简单总结一下。 Intent七大属性是指Intent的ComponentName、Action、Category、Data、Ty...

转 -- 关于Intent的七大属性 感谢_江南一点雨博主

转载自_江南一点雨  博主 原谅我愚昧,Intent七大属性这个概念我也是昨天才接触到,看了一下,都是一些常用的东西,就是没有总结过,那么今天就来简单总结一下。 Intent七大属性是指I...

Activity的启动模式以及Intent的七大属性

一、Task以及back stack Task(任务)  为了完成一个功能  多个Activity的集合, 当你的应用程序启动时 系统会自动创建Task用于管理Activity Back...

关于Intent的七大属性

原谅我愚昧,Intent七大属性这个概念我也是昨天才接触到,看了一下,都是一些常用的东西,就是没有总结过,那么今天就来简单总结一下。Intent七大属性是指Intent的ComponentName、A...

【幻化万千戏红尘】qianfeng-Android-Day06-Intent七大属性基础学习:

Intent及其七大属性及intent-filter设置   一、知识点回顾:Activity (一)、如何实现Activity页面跳转? 示例代码: //第一种方式: Intent in...

Intent的七大属性:

1.ComponentName(组件):目标组件 2.Action(动作):意图动作 3.Category(类别):表示动作的类别 4.Data(数据):表示动作要操作的数据 5.Type(数...

Activity之Intent七大属性

1、ConponentName ** * 使用ComponentName跳转 */ private void initComponentName() { ...

Intent七大属性

Intent七大属性: (1)ComponentName:组件名称(Intent想启动哪一个组件),显式启动Activity 三个构造器: 1)ComponentName cn = new Co...
  • iblade
  • iblade
  • 2016年01月07日 20:19
  • 320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Intent七大属性
举报原因:
原因补充:

(最多只允许输入30个字)