android短信管理器SmsManager实例详解

本文实例为大家分享了android短信管理器SmsManager的具体代码,供大家参考,具体内容如下

需要注册的权限

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

群发短信

package com.android.xiong.groupsend; 

import java.util.ArrayList;
import java.util.List; 

import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast; 

public class MainActivity extends Activity { 

  private Button bt1, bt2;
  private EditText ed1, ed2;
  private SmsManager sManger;
  List<String> sendList = new ArrayList<String>(); 

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bt1 = (Button) findViewById(R.id.bt1);
    bt2 = (Button) findViewById(R.id.bt2);
    ed1 = (EditText) findViewById(R.id.ed1);
    ed2 = (EditText) findViewById(R.id.ed2);
    // 获取SmsManger
    sManger = SmsManager.getDefault();
    bt1.setOnClickListener(new OnClickListener() { 

      @Override
      public void onClick(View v) {
        for (String send : sendList) {
          // 创建PendIntent对象
          PendingIntent ped = PendingIntent.getActivity(
              MainActivity.this, 0, new Intent(), 0);
          // 发送信息
          sManger.sendTextMessage(send, null, ed2.getText()
              .toString(), ped, null);
        }
        // 提示消息发送完毕
        Toast.makeText(MainActivity.this, "短信群发完", Toast.LENGTH_LONG)
            .show();
      }
    });
    bt2.setOnClickListener(new OnClickListener() { 

      @Override
      public void onClick(View v) {
        // 查看联系人的电话号码
        final Cursor cursor = getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null, null, null, null);
        BaseAdapter adapter = new BaseAdapter() { 

          @Override
          public View getView(int position, View convertView,
              ViewGroup parent) {
            cursor.moveToPosition(position);
            CheckBox rb = new CheckBox(MainActivity.this);
            // 获取联系人的电话号码 并去掉中间的中画、空格
            String number = cursor
                .getString(
                    cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
                .replace("-", "");
            rb.setText(number);
            // 如果该号码已经加入发送人名单,默认勾选该号码
            if (sendList.contains(number)) {
              rb.setChecked(true);
            }
            return rb;
          } 

          @Override
          public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
          } 

          @Override
          public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
          } 

          @Override
          public int getCount() {
            // TODO Auto-generated method stub
            return cursor.getCount();
          }
        };
        // 加载list.xml布局文件对应的View
        View selectView = getLayoutInflater().inflate(R.layout.item,
            null);
        final ListView listView = (ListView) selectView
            .findViewById(R.id.list1);
        listView.setAdapter(adapter);
        new AlertDialog.Builder(MainActivity.this).setView(selectView).setPositiveButton("确定", new DialogInterface.OnClickListener() { 

          @Override
          public void onClick(DialogInterface dialog, int which) {
            //清空sendList集合
            sendList.clear();
            //遍历listView组件的每个列表项
            for(int i=0;i<listView.getCount();i++){
              CheckBox checkBox=(CheckBox)listView.getChildAt(i);
              //如果该列表项被勾选
              if(checkBox.isChecked()){
                //添加到该列表项中
                sendList.add(checkBox.getText().toString());
                ed1.append(checkBox.getText().toString()+",");
              }
            } 

          }
        }).show();
      }
    });
  } 

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  } 

} 
<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"
  tools:context=".MainActivity" > 

  <EditText
    android:id="@+id/ed1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
  <EditText
    android:id="@+id/ed2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />
  <Button
    android:id="@+id/bt2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="获取联系人"/>
  <Button
    android:id="@+id/bt1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="发送信息"/> 

</LinearLayout> 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" > 

  <ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
  </ListView> 

</LinearLayout> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android中创建多线程管理器实例

    如果你要反复执行一个任务,用不同的数据集(参数不同),但一次只要一个执行(任务是单线程的),IntentService符合你的需求.当需要在资源可用时自动执行任务,或允许多任务同时执行,你需要一个线程管理器管理你的线程.ThreadPoolExecutor,会维护一个队列,当它的线程池有空时,从队列里取任务,并执行.要运行任务,你要做的就是把它加到队列里. 线程池可以并联运行一个任务的多个实例,所以你要保存代码线程安全.能被多线程访问的变量需要同步块.更多信息,见Processes and Th

  • android文件管理器用法详解

    很久没有写东西了,鉴于某某同学文件管理器不会,这里简单介绍一下,同时写一个demon,参考了网上别人写的代码,自己也学习学习,研究研究. 首先所谓文件管理器,看起来就是一个列表,列表里面是文件夹或者文件,首先把布局写出来,我想在最上方的左边显示文件的路径,右边显示该路径下的文件个数,其实还是一个遍历文件,然后用列表显示出来的问题.下面是ListView,用来显示文件列表.下面是运行的效果图: 主界面的布局文件如下: <?xml version="1.0" encoding=&qu

  • android简易文件管理器实例(列表式文件目录)

    核心代码: File fatherFile = new File(path);File[] files = fatherFile.listFiles(); 效果图: 实现这种列表式的目录,用直接读取目录下文件方法会比较简单,但是如果要根据文件类型从所有文件中分类,那就用ContentProvider去查询数据库方式会更有效率: 实现代码: FileListActivity.java package com.example.d_readandwritetextfile; import java.i

  • 浅析Android文件管理器(项目一)

    文件管理器是管理文件的软件,帮助用户处理日常工作,管理储存在本地和网络中的文件.所有文件管理器都提供了基本的操作如创建.打开.查看.编辑.移动和删除文件.许多Android文件管理器还提供了额外功能,如网络连接.应用程序管理.存档和压缩处理.搜索等. 今晚就写了res下面那些文件,因为在编写逻辑的时候如果资源文件夹没有的话,会非常的苦恼的.所以学习的时候总是会先把资源编写完毕,再开始编写逻辑. 然后我自己也总结一下今晚学了什么吧. IDE : Android Studio 惯例,上代码. 先是

  • Android编程实现任务管理器的方法

    本文实例讲述了Android编程实现任务管理器的方法.分享给大家供大家参考,具体如下: 任务管理器可以实现的功能有: 1.查看当前系统下运行的所有的进程 2.可以查看每个进程的进程号.版本号以及内存占用情况 3.杀死进程(可以杀死全部进程或者杀死指定的进程) 4.查看系统剩余内存 效果图: 杀死全部进程 实现思路: ActivityManager类可以获取到当前系统的所有进程,以及每个进程的信息,也可以杀死某个进程, ActivityManager.getRunningAppProcesses(

  • Android开发之简单文件管理器实现方法

    本文实例讲述了Android开发之简单文件管理器实现方法.分享给大家供大家参考,具体如下: 这里运用Java I/O.ListActivity.Dialog.Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件.比较简单,直接看代码: 先看布局文件: layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&q

  • Android使用SmsManager实现短信发送功能

    安卓使用SmsManager实现发送短信,供大家参考,具体内容如下 关键代码实现 package com.example.sms; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.telephony.SmsManager; import android.text.TextUtils; import android.view.View; import

  • android短信管理器SmsManager实例详解

    本文实例为大家分享了android短信管理器SmsManager的具体代码,供大家参考,具体内容如下 需要注册的权限 <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.SEND_SMS"/> 群发短信 package com.android.xiong.grou

  • OpenHarmony实现类Android短信验证码及倒计时流程详解

    目录 1.背景 2.效果预览 3.思路 4.创建应用 5.删除原有代码 6.编写代码实现功能 1.布局拆分 2.实现堆叠布局 3.实现文本展示 4.实现输入框 5.实现短信验证码按钮 6.定时器的实现 7.签名及真机调试 8.源码地址 9.总结 1.背景 倒计时的效果在网站或其他平台看到的很多了吧,今天就让我们来看看在OpenHarmony中如何实现它吧! 2.效果预览 视频效果演示 传送门 开发板:DAYU200 IDE:DevEco Studio 3.0 Release Build Vers

  • Python上下文管理器全实例详解

    Python上下文管理器 简介 最近用到这个,仔细了解了一下,感觉是十分有用的,记录一下 使用场景 当我们需要获取一个临时打开的资源,并在使用完毕后进行资源释放和异常处理,利用try-catch语句可以完成,举个例子. 打开文件: f = None try: print("try") f = open("__init__.py", "r") print(f.read()) except Exception as e: print("ex

  • Android中简单的电话管理与短信管理App编写实例

    android电话管理器(TelephonyManger)实例: TelephonyManger是管理电话状态.网络信息的服务类. 添加权限: <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 逻辑功能:

  • Android中用Bmob实现短信验证码功能的方法详解

    这篇文章主要介绍发送验证码和校验验证码的功能,用到一个第三方平台Bmob,那Bmob是什么呢?Bmob可以开发一个云存储的移动应用软件,他提供了大量的标准的API接口,根据需要接入相关服务,开发者可以更加专注于应用的开发,让产品交付更快速,验证码功能就是其中一个. 一.跟其他第三方一样,我们开发之前要做一些准备工作. 1.首先,去官网注册一个帐号:http://www.bmob.cn/: 2.然后就可以创建应用了:具体怎么做Bmob说得很清楚了(官方操作介绍),如果你不想看,我简单说一下:点击右

  • Android xmlns 的作用及其自定义实例详解

     Android xmlns 的作用及其自定义实例详解 xmlns:Android="http://schemas.android.com/apk/res/android的作用是: 这个是xml的命名空间,有了他,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件.或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它来识别的,如果上面你写错了,不会有任何问题,但是在运行的时候就会有问题,提示你没有指定宽度等什么.这个是不用联

  • Spring boot jpa 删除数据和事务管理的问题实例详解

    今天我们介绍的是jpa删除和事务的一些坑,接下来看看具体内容. 业务场景(这是一个在线考试系统)和代码:根据问题的id删除答案 repository层: int deleteByQuestionId(Integer questionId); service 层: public void deleteChoiceAnswerByQuestionId(Integer questionId) { choiceAnswerRepository.deleteByQuestionId(questionId)

  • Android 通过网络图片路径查看图片实例详解

    Android 通过网络图片路径查看图片实例详解 1.在项目清单中添加网络访问权限 <!--访问网络的权限--> <uses-permission android:name="android.permission.INTERNET"/> 2.获取网络图片数据 /** * 获取网络图片的数据 * @param path 网络图片路径 * @return * @throws Exception */ public static byte[] getImage(Str

  • Android 拦截返回键事件的实例详解

    Android 拦截返回键事件的实例详解 KeyEvent类 Android.View.KeyEvent类中定义了一系列的常量和方法,用来描述Android中的 按键事件和返回键有关的常量和方法有. KeyEvent.KEYCODE_BACK: 表示key类型为返回键 KeyEvent.ACTION_DOWN:表示事件为按下key,如果一直按住不放,则会不停产生此事件. KeyEvent.ACTION_UP:表示事件为为放开key,一次点击key过程只会调用一次. public final in

  • Android 自定义imageview实现图片缩放实例详解

    Android 自定义imageview实现图片缩放实例详解 觉得这个自定义的imageview很好用 性能不错  所以拿出来分享给大家  因为不会做gif图  所以项目效果 就不好贴出来了  把代码贴出来 1.项目结构图 2.Compat.class package com.suo.image; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.view.View; pu

随机推荐