• 外部类实现发送短信的监听器


    使用外部类定义事件监听器类的形式比较少见,主要因为如下两个原因:
    1.事件监听器通常属于特定的 GUI 界面,定义成外部类不利于提高程序的内聚性。
    2. 外部类形式的事件监听器不能自由访问创建 GUI 界面的类中的组件,编程不够简洁。
    但如果某个事件监听器确实需要被多个 GUI 界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。

    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="fill_horizontal"
        android:orientation="vertical" >
    
        <EditText
            android:id="@+id/address"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请填写收信号码" />
    
        <EditText
            android:id="@+id/content"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请填写短信内容"
            android:lines="3" />
    
        <Button
            android:id="@+id/send"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="发送" />
    
    </LinearLayout>

    SendMsgListener.java

    /**
     *
     */
    package org.crazyit.event;
    
    import android.app.Activity;
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.telephony.SmsManager;
    import android.view.View;
    import android.view.View.OnLongClickListener;
    import android.widget.EditText;
    import android.widget.Toast;
    
    /**
     * Description: <br/>
     * 网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> <br/>
     * Copyright (C), 2001-2014, Yeeku.H.Lee <br/>
     * This program is protected by copyright laws. <br/>
     * Program Name: <br/>
     * Date:
     * 
     * @author Yeeku.H.Lee kongyeeku@163.com
     * @version 1.0
     */
    public class SendSmsListener implements OnLongClickListener {
        private Activity act;
        private EditText address;
        private EditText content;
    
        public SendSmsListener(Activity act, EditText address, EditText content) {
            this.act = act;
            this.address = address;
            this.content = content;
        }
    
        @Override
        public boolean onLongClick(View source) {
            String addressStr = address.getText().toString();
            String contentStr = content.getText().toString();
            // 获取短信管理器
             SmsManager smsManager = SmsManager.getDefault();
            // 创建发送短信的PendingIntent
            PendingIntent sentIntent = PendingIntent.getBroadcast(act, 0,
                    new Intent(), 0);
            // 发送文本短信
             smsManager.sendTextMessage(addressStr, null, contentStr, sentIntent,
                    null);
            Toast.makeText(act, "短信发送完成", Toast.LENGTH_LONG).show();
            return false;
        }
    }

    SendMsg.java

    package org.crazyit.event;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Button;
    import android.widget.EditText;
    
    /**
     * Description: <br/>
     * site: <a href="http://www.crazyit.org">crazyit.org</a> <br/>
     * Copyright (C), 2001-2014, Yeeku.H.Lee <br/>
     * This program is protected by copyright laws. <br/>
     * Program Name: <br/>
     * Date:
     * 
     * @author Yeeku.H.Lee kongyeeku@163.com
     * @version 1.0
     */
    public class SendSms extends Activity {
        EditText address;
        EditText content;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            // 获取页面中收件人地址、短信内容
             address = (EditText) findViewById(R.id.address);
            content = (EditText) findViewById(R.id.content);
            Button bn = (Button) findViewById(R.id.send);
            bn.setOnLongClickListener(new SendSmsListener(this, address, content));
        }
    }

    Manifest.xml

    添加发送短信的权限。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="org.crazyit.event"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="10"
            android:targetSdkVersion="17" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".SendSms"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
        <uses-permission android:name="android.permission.SEND_SMS" />
    
    </manifest>

    注意是长按动作。

  • 相关阅读:
    mysql 索引
    springboot + maven jar打包和linux部署
    个人项目———Java实现WordCount
    第四周助教观察记录
    第三周助教工作观察记录
    2019年春-软件工程原理与方法-助教总结
    第十五周助教小结
    第十一周助教小结
    团队作业-设计 成绩汇总
    团队作业选题及需求分析成绩汇总
  • 原文地址:https://www.cnblogs.com/AndyGe/p/3435068.html
Copyright © 2020-2023  润新知