Android-Intent简单学习

来源:互联网 发布:日有所思夜有所梦 知乎 编辑:程序博客网 时间:2024/06/11 19:58
  • 新建一个Android项目
  • 将MainActivity活动布局activity_main.xml文件夹的具体代码修改如下:
    这里写图片描述

界面:这里写图片描述
- 新建一个layout文件(布局文件)
这里写图片描述
其代码:
这里写图片描述

  • 在主活动包中在新建一个活动类(java类)
    这里写图片描述
    其代码:
package com.example.activitytest;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class Act2 extends Activity{    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.atc2_layout); //加载活动界面        TextView tv = (TextView)findViewById(R.id.textView1);  //实例化一个TextView        String s = this.getIntent().getExtras().getString("words"); //接受Intent实例传递过来的数据        tv.setText(s); //tv显示接受的数据    }}
  • 修改主活动(新建项目时默认的活动)代码:
package com.example.activitytest;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Log.d("life cycle onCreate", "onCreate");    }    //响应按钮单击事件    public void onClick(View view) {         Intent intent = new Intent(this, Act2.class);        intent.putExtra("words", "hi,The message com from MainActivity"); //传递数据给Act2        startActivity(intent); //传递intent对象到Act2    }}
  • Intent的简单学习(以下大部分内容来自lingdududu 的BLOG):

一. Intent的介绍
Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯, Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。
intent 分为两类Explicit Intents(直接意图)和Implicit Intents(间接意图)两种方式:
直接意图:指定了要调用的组件,一般用在程序内部,或者明确知道组件名,上面例子便是用的直接组件

Intent i = new Intent(this, ActivityTwo.class);i.putExtra("value", "This value one for ActivityTwo");

间接意图:没有指定具体组件,这些Intent包含足够的信息,系统根据这些信息,调用某些组件。

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://developer.android.com"));startActivity(i);

二. Intent的属性
Intent有以下几个属性:
动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中最常用的是Action属性和Data属性。这里只是讲一下Extra:
Intent的Extra属性是添加一些组件的附加信息。实现不同Activity之间的信息传递:
intent提供putExtra()方法, 和getExtra();
—————————————————————————————————————
例二:间接意图

  • 主活动界面代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="say hi to Act2"         android:onClick="onClick" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Baidu"        android:onClick="onClick1" /></LinearLayout>
  • 主活动java代码
package com.example.activitytest;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Log.d("life cycle onCreate", "onCreate");    }    //响应按钮单击事件  直接意图    public void onClick(View view) {         Intent intent = new Intent(this, Act2.class);        intent.putExtra("words", "hi,The message com from MainActivity"); //传递数据给Act2        startActivity(intent); //传递intent对象到Act2    }    //响应按钮单击事件  直接意图    public void onClick1(View view) { //浏览网页        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));        startActivity(intent);     }    public void onClick2(View view) { //打电话        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:(+86)10086"));        startActivity(intent);     }    public void onClick3(View view) { //拨号        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:(+86)10086"));        startActivity(intent);     }    public void onClick4(View view) { //写短信        Intent intent = new Intent(Intent.ACTION_VIEW);        intent.putExtra("sms_body", "The SMS text");        intent.setType("vnd.android-dir/mms-sms");        startActivity(intent);     }    public void onClick5(View view) { //发短信        Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:10086"));        intent.putExtra("sms_body", "The sms message");        startActivity(intent);     }    public void onClick6(View view) { //照相机        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");        startActivity(intent);     }}
  • 在AndroidMainfest.xml中注册使用权限,输入以下内容:
<uses-permission android:name="android.permission.INTERNE" />

这里写图片描述

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));//浏览网页Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:(+86)10086"));//打电话Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:(+86)10086"));//拨号Intent intent = new Intent(Intent.ACTION_VIEW);intent.putExtra("sms_body", "The SMS text");intent.setType("vnd.android-dir/mms-sms");//写短信Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:10086));intent.putExtra("sms_body", "The sms message");//发短信Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");//照相机

下面是注册权限

<uses-permission android:name="android.permission.INTERNE" />  //网络权限<uses-permission android:name="android.permission.CAMERA" /> //照相机权限<uses-permission android:name="android.permission.SEND_SMS" /> //发短信权限<uses-permission android:name="android.permission.WRITE_SMS" /> //打电话权限<uses-permission android:name="android.permission.CALL_PHONE" /> //写短信权限
原创粉丝点击