android基础-----Intent控件的基本用法

                                          

                                                         Intent控件

基本概念:

------------------------------------------------------------------------------------------------------------------------------------------------------------

        1.IntentAndroid应用程序组件之一,是不同组件之间通信的桥梁。

        2.Intnet对象在Android系统当中表示一种意图

        3.Intent封装了它要执行动作的属性:Action(动作)Data(数据)Category(类别)Type(类型)Component(组件信息)Extras(附加信息)

 

 基本用法:

-------------------------------------------------------------------------------------------------------------------------------------------------------------

                  1.Activity之间可以通过Intent对象传递数据

                   2.使用putExtra()系类方法向Intent对象当中存储数据

                    3.使用getXXXExtra()系类方法从Intent对象当中取出数据

用法实例:

-----------------------------------------------------------------------------------------------------------------------------------------------------------

   1.Intent传值求小米的当前市场价格。

                          第一个Activity的Java文件:

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

importandroid.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

 

publicclassIntentExtra extends Activity {

    Button button;

 

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

           setContentView(R.layout.activity_intent_extra);

       button=(Button)findViewById(R.id.button);

       button.setOnClickListener(new ClickListener());

       

    }

    class ClickListenerimplements OnClickListener{

 

        @Override

        publicvoid onClick(View v) {

           Intent intent =new Intent();

           intent.setClass(IntentExtra.this, Second.class);

           intent.putExtra("com.example.intent_extra.much", 1699);

           intent.putExtra("com.example.intent_extra.name","小米3");

            startActivity(intent);

        }

       

    }

 

 

 

}

   

第二个Activity

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.widget.TextView;

 

publicclassSecond extends Activity {

    TextViewtext;

 

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

        // TODO Auto-generated method stub

        super.onCreate(savedInstanceState);

        setContentView(R.layout.second);

       text=(TextView)findViewById(R.id.text);

       Intentintent=getIntent();

       intmuch=intent.getIntExtra("com.example.intent_extra.much", 999);

       Stringname=intent.getStringExtra("com.example.intent_extra.name");

       text=(TextView)findViewById(R.id.text);

       text.setText(name+"的价格是"+much);

       

    }

 

}

 

            2.拨号程序

                              1.借助于Intent,可以轻松实现拨打电话的应用程序,只需声明一个拨号的Intent对象,并使用startActivity()方法。

                               2.创建Intent对象的代码为 Intent intent=new Intent(action.uri),其中uri是要拨叫的号码数据,通过Uri.parse()方法把"tel:1234"格式的字符串装换为Uri

                                3.URIuniform resource identifier,统一资源标识符。

                                 4.action的两种使用方式:

                                                                           android.permission.CALL_PHONE    直接呼叫

                                                                           Intent.Action_DIAL   启动系统的拨号应用程序

                                   5.AndroidManifest.xml文件中注册拨号权限:

                                    <uses-permission android:name="android.permission.CALL_PHONE"/>

 

      布局略(包含一个button,一个edittext)

      Java代码:

import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

 

publicclass MainActivity extends Activity {

    private Button button;

    private EditText edittext;

 

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        button = (Button)findViewById(R.id.button);

        button.setOnClickListener(new ClickListener());

 

    }

 

    publicclass ClickListener implements OnClickListener {

 

        @Override

        publicvoid onClick(View v) {

            // TODO Auto-generated methodstub

            edittext=(EditText)findViewById(R.id.edittext);

            String number = edittext.getText().toString();

            Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"

                    + number));

            startActivity(intent);

        }

    }

}

完事别忘了注册一下。

        3。发送短信:

                             发送短信使用的是android.telephony.SmsManager类的sendTextMessage方法,该方法参数如下:

                                                                                    destinationAddress:表示接收短信的手机号码

                                                                                   scAddress:短信服务中心号码,设置为null表示使用手机默认的短信服务中心号码

                                                                                   text:要发送的短信内容

                                                                                   sentIntent:当消息成功发送给接收者时,广播该结果

                                                                                    deliveryIntent:当消息被成功发送时,广播该结果

                              最后在AndroidManifest.xml文件中注册该发送短信的权限

                                                                                                                                                                                                                                     

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:gravity="top"

   android:orientation="vertical" >

 

    <TextView

       android:id="@+id/tv01"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:paddingLeft="5dp"

       android:text="对方号码"

       android:textSize="20sp"

       android:textStyle="bold" />

 

    <EditText

       android:id="@+id/smstel"

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       android:textStyle="normal" />

 

    <TextView

       android:id="@+id/tv02"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:padding="5dp"

       android:text="短信内容"

       android:textSize="20sp"

       android:textStyle="bold" />

 

    <EditText

       android:id="@+id/smscontent"

       android:layout_width="match_parent"

       android:layout_height="280dp"

       android:gravity="top|left"

       android:singleLine="false"

       android:textStyle="normal" />

 

    <Button

       android:id="@+id/smssend"

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       android:text="发送短信"

       android:textSize="20sp" />

 

</LinearLayout>

Java文件:

import android.app.Activity;

import android.os.Bundle;

import android.telephony.SmsManager;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

 

publicclass SmsTest extends Activity {

    private Button button;

    private EditText editText1,editText2;

   

 

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_sms_test);

        button=(Button)findViewById(R.id.smssend);

        button.setOnClickListener(new ClickListener());

       

    }

    class ClickListener implements OnClickListener{

 

        @Override

        publicvoid onClick(View v) {

            // TODO Auto-generated methodstub

            editText1=(EditText)findViewById(R.id.smstel);

            editText2=(EditText)findViewById(R.id.smscontent);

            String number=editText1.getText().toString();

            String letter=editText2.getText().toString();

            if(number.equals("")||letter.equals("")){

                Toast.makeText(SmsTest.this, "输入有误,请检查输入", 1).show();

            }else{

                SmsManagermessage=SmsManager.getDefault();

                message.sendTextMessage(number,null, letter, null, null);

                Toast.makeText(SmsTest.this, "短信发送成功", 1).show();

            }

        }   

    }

}

  4.广播

(Broastcast):

                广播是Android系统中应用程序间通信的手段,当有特定事件发生时,如有来电、有短信、电池电量发生变化等事件发生时,Android系统都会产生特定的Intent对象并且自动进行广播,而处理的形式由用户自己决定。

              在Android系统中,开发者可以定义自己的广播组件,但所有的广播组件都是以一个类的形式出现,而且该类必须继承自BroadcastReceiver类,而后还需向Android系统注册。

             发送广播需要创建Intent对象,可调用sendBroastcast(Intent)方法将广播发出。

              接受广播需要一个继承BroadcastReceiver的类来实现,继承该类后覆写其onReceiver方法,并在该方法中响应事件。

注册方式分为静态和动态:

              静态方式在AndroidManifest.xml文件的Application里面定义Receiver并设置要接收的Action.

             动态方式在Activity里面调用方法来注册.

       

例题:检测手机电量,并动态注册广播接收方式

布局文件xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:orientation="vertical" >

 

    <ToggleButton

       android:id="@+id/button"

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       android:textOff="停止检测"

       android:textOn="检测当前手机电量" />

 

    <TextView

       android:id="@+id/text"

       android:layout_width="match_parent"

       android:layout_height="wrap_content" >

    </TextView>

 

</LinearLayout>

 

java文件:

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.view.Menu;

import android.widget.CompoundButton;

import android.widget.CompoundButton.OnCheckedChangeListener;

import android.widget.TextView;

import android.widget.ToggleButton;

 

publicclass BatteryActivity extends Activity {

    private ToggleButton button;

    private TextView text;

    BroadcastReceiver receiver;

 

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_battery);

        button=(ToggleButton)findViewById(R.id.button);

        text=(TextView)findViewById(R.id.text);

        receiver=new BroadcastReceiver() {

           

            @Override

            publicvoid onReceive(Context context, Intent intent) {

               

                Stringaction=intent.getAction();

               

                if(Intent.ACTION_BATTERY_CHANGED.equals(action)){

                    //获取当前电池的电量

                    intcurrent=intent.getExtras().getInt("level");

                    //获取总电量

                    inttotal=intent.getExtras().getInt("scale");

                    int value=current*100/total;

                    text.setText("当前电量是"+value+"%");

                   

                }

               

            }

        };

        button.setOnCheckedChangeListener(new OnCheckedChangeListener(){

 

            @Override

            publicvoid onCheckedChanged(CompoundButton buttonView,

                    boolean isChecked) {

                // TODO Auto-generated method stub

                if(isChecked){

                    //用于确定当前BroadcastReceiver对象接收的Intent对象的类型

                    IntentFilter filter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

                    //动态注册receiver

                    registerReceiver(receiver, filter);

                   

                   

                }else{

                    //注销注册

                    unregisterReceiver(receiver);

                    text.setText("");

                }

               

            }

           

        });

    }

 

 

 

}+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值