5.AutoCompleteTextView、自定义广播
新建信息

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="5dp"android:orientation="vertical" >。。。。。<!-- android:completionThreshold="1" 当弹出建议框的时候,actv中输入的字符的个数 --><AutoCompleteTextViewandroid:layout_width="0dp"android:layout_weight="2"android:layout_height="wrap_content"android:id="@+id/actv"android:textColor="@android:color/black"android:completionThreshold="1"android:background="@drawable/et_common_bg"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/select_contact_bg"android:id="@+id/iv_select_contact"/></LinearLayout><EditTextandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="2"android:background="@drawable/et_common_bg"android:id="@+id/et_input_msg"android:gravity="top"//写上top默认就在上面/><Buttonandroid:id="@+id/btn_send_msg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:background="@drawable/btn_common_bg"android:paddingLeft="10dp"android:paddingRight="10dp"android:text="发送短信" /></LinearLayout>
public class NewMessageUI extends Activity implements OnClickListener {private AutoCompleteTextView actv;private ImageView selectContact;private EditText inputMsg;protected void onCreate(android.os.Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_new_message);actv = (AutoCompleteTextView) findViewById(R.id.actv);selectContact = (ImageView) findViewById(R.id.iv_select_contact);inputMsg = (EditText) findViewById(R.id.et_input_msg);selectContact.setOnClickListener(this);findViewById(R.id.btn_send_msg).setOnClickListener(this);adapter = new ACTVAdapter(this, null);actv.setAdapter(adapter);adapter.setFilterQueryProvider(new FilterQueryProvider() {@Override/*** 当actv 中的内容发生改变时,回调此方法* @param constraint* @return*/public Cursor runQuery(CharSequence constraint) {System.out.println(constraint);Cursor cursor = getContentResolver().query(MyConstants.URI_CONTACTS, projection, "data1 like '%"+constraint+"%'", null, null);return cursor;}});}/*** 要查询的列*/private String[] projection = {"_id","data1","display_name"};private final int INDEX_NAME=2;private final int INDEX_NUMBER=1;private ACTVAdapter adapter;class ACTVAdapter extends CursorAdapter{public ACTVAdapter(Context context, Cursor c) {super(context, c);}@Override/*** 该方法在点击actv中弹出的listView时,将返回值设置给 actv*/public CharSequence convertToString(Cursor cursor) {return cursor.getString(INDEX_NUMBER);}@Overridepublic View newView(Context context, Cursor cursor, ViewGroup parent) {View view = View.inflate(context, R.layout.list_item_actv, null);return view;}@Overridepublic void bindView(View view, Context context, Cursor cursor) {TextView name = (TextView) view.findViewById(R.id.tv_name_actv);TextView number = (TextView) view.findViewById(R.id.tv_number_actv);name.setText(cursor.getString(INDEX_NAME));number.setText(cursor.getString(INDEX_NUMBER));}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_send_msg:// 发送短信的按钮String address = actv.getText().toString();if(TextUtils.isEmpty(address.trim())){Toast.makeText(this, "请输入收件人号码", 0).show();return ;}String msg = inputMsg.getText().toString();if(TextUtils.isEmpty(msg.trim())){Toast.makeText(this, "请输入短信内容", 0).show();return ;}// 开始发送短信Tools.sendMessage(this, msg, address);// 清空输入框inputMsg.setText("");break;case R.id.iv_select_contact:// 点击选择联系人的图片Intent intent = new Intent();intent.setAction("android.intent.action.PICK");//不能显示启动,因为有可能系统程序的类名改变了intent.setData(Uri.parse("content://com.android.contacts/contacts"));// startActivity(intent);startActivityForResult(intent, 99);break;default:break;}};@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {String stringExtra = data.getStringExtra("phone");System.out.println("stringExtra::"+stringExtra);Uri uri = data.getData();Cursor cursor = getContentResolver().query(uri, new String[]{"_id"}, null, null, null);// Tools.printCursor(cursor);cursor.moveToNext();// 返回的cursor默认指向-1行 ,int contactId = cursor.getInt(0); // 仅查询一列,所以列的索引值 输入 0Cursor cursor2 = getContentResolver().query(MyConstants.URI_CONTACTS, new String[]{"data1"}, " contact_id = "+contactId, null, null);cursor2.moveToNext();// 返回的cursor默认指向-1行 ,String number = cursor2.getString(0);actv.setText(number);}}
/*** 发送短信* @param ctx* @param msg 短信内容* @param address 收信人的电话号码*/public static void sendMessage(Context ctx, String msg, String address) {SmsManager smsManager = SmsManager.getDefault();//对短信内容进行切割,防止,内容过长。ArrayList<String> msgList = smsManager.divideMessage(msg);//用于启动广播的意图Intent intent = new Intent("com.itheima.smsmanager39.receive.SmsSendSuccessReceiver");PendingIntent sentIntent = PendingIntent.getBroadcast(ctx, 88, intent, PendingIntent.FLAG_ONE_SHOT);for (int i = 0; i < msgList.size(); i++) {String oneMsg = msgList.get(i);smsManager.sendTextMessage(address, // 收信人号码null, // 短信服务中心的号码oneMsg, // 要发送的内容sentIntent, // 我们发送成功后的,隐式意图null); // 对方接收成功后的,隐式意图}insertMsg2msmDb(ctx,msg,address);}/*** 将短信内容插入系统数据库* @param ctx* @param msg 短信内容* @param address 收短信的号码*/private static void insertMsg2msmDb(Context ctx, String msg, String address) {ContentValues values = new ContentValues();values.put("address", address);values.put("body", msg);values.put("type", MyConstants.TYPE_SEND);ctx.getContentResolver().insert(MyConstants.URI_SMS, values);}
public class SmsSendSuccessReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "短信已经发送成功", 0).show();}}
<activityandroid:name="com.itheima.smsmanager39.NewMessageUI"android:label="@string/app_name"android:windowSoftInputMode="adjustResize"></activity>
5.AutoCompleteTextView、自定义广播的更多相关文章
- android 发送自定义广播以及接收自定义广播
发送自定义广播程序: 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- Android(java)学习笔记178:BroadcastReceiver之 自定义广播
广播使用: 电台:对外发送信号.---------电台发送广播(可以自定义) 收音机:接收电台的信号.-----广播接收者 这里,我们就说明自定 ...
- [android] 自定义广播事件
上一节的短信拦截在4.0以上系统中无效,可以使用这种办法实现,定义一个activity,清单文件中指定主题为透明,在onCreate()方法里面直接调用finsh()方法,关掉,这样可以就可以实现了 ...
- android: 发送自定义广播
5.3.1 发送标准广播 在发送广播之前,我们还是需要先定义一个广播接收器来准备接收此广播才行,不然发 出去也是白发.因此新建一个 MyBroadcastReceiver 继承自 Broadca ...
- 自定义广播(BroadcastReceiver)事件 --Android开发
本例演示自定义广播事件.我们需要做的是,在主活动中写发送广播的代码,然后在接收广播的类中写接收广播的代码. 1.主活动中点击按钮后发送广播 MainActivity.java: public clas ...
- Android8自定义广播无法收到消息
在Android 8之前,如果要发送自定义的静态广播,做好其他配置后,只需实例化一个Intent对象intent,然后将其作为参数传入sendBroadcast()方法中即可,例如 Intent in ...
- android中实现自定义广播
自定义广播分两个步骤:1.发送广播 2.接收广播 一.先看如何接收广播: 我使用的是Android Studio,File->New->Other->Broadcast Receiv ...
- MIUI7,Android版本5.0.2,一个程序发送自定义广播,另一个程序没有接收到
对照<第一行代码——Android>进行学习,第五章中说到广播包的相关知识,前面获取广播等程序例程都可以跑的通,但是在5.3.2节中,程序A发送自定义广播,并接收自定义广播,同时程序B也接 ...
- Android(java)学习笔记121:BroadcastReceiver之 自定义广播
广播使用: 电台:对外发送信号.---------电台发送广播(可以自定义) 收音机:接收电台的信号.-----广播接收者 这里,我们就说明自定 ...
随机推荐
- 监控服务器配置(二)-----Grafana安装配置
1.下载grafana安装包(linux版)到 /opt/minitor/grafana . 下载地址:https://download.csdn.net/download/a15565772151/ ...
- redis常用服务安装部署
常用服务安装部署 学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环境: centos7 + vmware + xshell 即将登场的是: mysql(m ...
- java程序员经常使用的Intellij Idea插件
大概从去年年初开始慢慢抛弃习惯多年的eclipse,开始使用Intellij Idea,以下是我使用过的一些Intellij Idea插件: 1.lombok https://plugins.jetb ...
- JAVA课程设计-教学论坛系统
团队课程设计博客 1. 团队名称:教学论坛系统设计团队 团队成员介绍: 郑佳亮(组长):201721123022,查看帖子,点赞,参与度,搜索,管理员删帖的后端,点赞,参与度前端 李于程(组员):20 ...
- 第二阶段第四次spring会议
昨天我将对软件添加了初始页面. 今天我将对软件加上显示时间. try { SkinListBoxItem rt = new SkinListBoxItem(InputForm("请输入&qu ...
- Siamese Neural Networks for One-shot Image Recognition
one-shot learning简介 这是迁移学习的两种极端形式 zero-shot learning 指的是我们之前没有这个类别的训练样本,但是我们可以学习到一个映射X->Y, 如果这个映射 ...
- LeetCode —— 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作, ...
- vue history模式 apache配置
我的服务器apache 版本是2.4.6 看文档上面说加那些代码,但是加上去重启服务器就不能重启,显示代码错误,然后百度查开启mod_rewrite这个重写URL 弄了半天也不会,百度上面的不知道是不 ...
- (28)A practical way to help the homeless find work and safety
https://www.ted.com/talks/richard_j_berry_a_practical_way_to_help_the_homeless_find_work_and_safety/ ...
- hbase常用操纵操作——增删改查
查询某个资金账户的信息 get 'dmp:hbase_tags','资金账号' 创建表 create 'emp', 'personal data', 'professional data' 在HBas ...