600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Android内容提供者(群发短信)

Android内容提供者(群发短信)

时间:2019-02-12 10:25:26

相关推荐

Android内容提供者(群发短信)

工程目录:

Manifests添加读取联系人权限

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

ChooseAdapter

package com.example.app6;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import java.util.HashMap;import java.util.List;import java.util.Map;public class ChooseAdapter extends BaseAdapter {List<Contact> listData;LayoutInflater layoutInflater;HashMap<Integer, View> map = new HashMap<Integer, View>();static final int[] icons = {R.drawable.male, R.drawable.male};static Map<Integer, Boolean> checkResult; //记录勾选结果public ChooseAdapter(Context context, List<Contact> listData) {layoutInflater = LayoutInflater.from(context);this.listData = listData;checkResult = new HashMap<Integer, Boolean>();for (int i = 0; i < listData.size(); i++) {checkResult.put(i, false); //默认未选中}}@Overridepublic int getCount() {return listData.size();}@Overridepublic Object getItem(int position) {return listData.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ListItemView listItemView = null;if (convertView == null) {convertView = layoutInflater.inflate(R.layout.list_item, null);listItemView = new ListItemView();listItemView.iv_PersonPicture = convertView.findViewById(R.id.iv_PersonPicture);listItemView.tv_NameAndPhone = convertView.findViewById(R.id.tv_NameAndPhone);listItemView.checkBox = convertView.findViewById(R.id.checkBox);map.put(position, convertView);convertView.setTag(listItemView);} else {listItemView = (ListItemView) convertView.getTag();}Contact contactInfo = listData.get(position);listItemView.iv_PersonPicture.setImageResource(icons[0]);listItemView.tv_NameAndPhone.setText(contactInfo.getName() + " " + contactInfo.getPhone());listItemView.checkBox.setChecked(checkResult.get(position));return convertView;}//勾选时刷新视图public void refresh(List<Contact> listData) {this.listData = listData;notifyDataSetChanged();}}

Contact

package com.example.app6;class Contact {private String name;private String phone;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "name=" + name + "\n phone=" + phone;}}

ListItemView

package com.example.app6;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.TextView;public class ListItemView {ImageView iv_PersonPicture; //头像TextView tv_NameAndPhone; //姓名和手机号CheckBox checkBox; //复选框}

MainActivity

package com.example.app6;import androidx.annotation.NonNull;import androidx.appcompat.app.ActionBar;import androidx.appcompat.app.AlertDialog;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;import android.Manifest;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageManager;import android.database.Cursor;import .Uri;import android.os.AsyncTask;import android.os.Bundle;import android.provider.ContactsContract;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ImageView;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener {final Uri uri=ContactsContract.Contacts.CONTENT_URI; //内容提供者手机URIListView listView;ChooseAdapter myAdapter;List<Contact> contacts;List<String> receiverName = new ArrayList<String>();List<String> receiverPhone = new ArrayList<String>();String receiverPhones;ImageView backBtn;ImageView imageButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActionBar bar = getSupportActionBar();if (bar != null) {bar.hide();}if (ContextCompat.checkSelfPermission(this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_CONTACTS},1);}else {new GetContact().execute();}backBtn = findViewById(R.id.back);backBtn.setOnClickListener(this);imageButton = findViewById(R.id.imageButton);imageButton.setOnClickListener(this);contacts = new ArrayList<Contact>();}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode){case 1:if(grantResults.length>0){for(int result : grantResults){if(result != PackageManager.PERMISSION_GRANTED){Toast.makeText(this, "权限不足!", Toast.LENGTH_SHORT).show();finish();return;}}}new GetContact().execute(); //执行异步线程break;}}@Overridepublic void onClick(View arg0) {switch (arg0.getId()) {case R.id.back:finish();break;case R.id.imageButton:setMessageToSome();break;}}class GetContact extends AsyncTask<String, Integer, String> {@Overrideprotected void onPreExecute() {super.onPreExecute();Toast.makeText(MainActivity.this, "联系人信息加载中,稍候...", Toast.LENGTH_SHORT).show();}@Overrideprotected String doInBackground(String... arg0) {getContacts();return null;}@Overrideprotected void onPostExecute(String result) {super.onPostExecute(result);initView();}}private void getContacts() {Contact tmpContact;contacts.clear();//联系人查询按本地语言名字进行排序Cursor cursor =getContentResolver().query(uri,null,null,null,ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");if (cursor.moveToFirst()) {do{tmpContact = new Contact();//获得联系人IDint idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);String contactId = cursor.getString(idColumn);//获得联系人姓名int displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);String disPlayName = cursor.getString(displayNameColumn);int phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));tmpContact.setName(disPlayName);if (phoneCount > 0) {// 获得联系人的电话号码Cursor phones = getContentResolver().query(monDataKinds.Phone.CONTENT_URI,null,monDataKinds.Phone.CONTACT_ID+" = " + contactId, null, null);if (phones.moveToFirst()) {String tmpPhone = phones.getString(phones.getColumnIndex(monDataKinds.Phone.NUMBER));if(tmpPhone.length() >= 11&&tmpPhone.substring(0, 1).equals("1"))tmpContact.setPhone(tmpPhone);}}if(tmpContact.getPhone()!= null) {contacts.add(tmpContact);Log.i("zlm",tmpContact.toString());}else{Log.i("zlm","none");}} while (cursor.moveToNext());}}void initView() {listView = findViewById(R.id.listView);myAdapter = new ChooseAdapter(this, contacts);listView.setAdapter(myAdapter);listView.setItemsCanFocus(false);listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {ListItemView listItemView = (ListItemView) view.getTag();boolean check = listItemView.checkBox.isChecked();//复选框勾选与取消if (check) {listItemView.checkBox.setChecked(false);check = false;} else {listItemView.checkBox.setChecked(true);check = true;}ChooseAdapter.checkResult.put(position, check);}});if (contacts.size()>0) {listView.setClickable(true);myAdapter.refresh(contacts);}else{Toast.makeText(MainActivity.this, "无联系人或URI错误!", Toast.LENGTH_SHORT).show();finish();}}public void setMessageToSome() {receiverName.clear();receiverPhone.clear();for (int i = 0; i < ChooseAdapter.checkResult.size(); i++) {if (ChooseAdapter.checkResult.get(i)) {receiverName.add(contacts.get(i).getName());receiverPhone.add(contacts.get(i).getPhone());}}if (receiverName.size() == 0) {new AlertDialog.Builder(this).setTitle("请选择联系人!").setPositiveButton("确定", null).show();} else {StringBuilder sb = new StringBuilder();sb.append("收信人:" + receiverName.get(0));receiverPhones = receiverPhone.get(0);for (int i = 1; i < receiverName.size(); i++) {sb.append("," + receiverName.get(i));receiverPhones += ";" + receiverPhone.get(i);}new AlertDialog.Builder(this).setTitle("确认发送").setMessage(sb).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {Intent intent=new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse("sms:"+receiverPhones+"?body=群发短信"));startActivity(intent);}}).setNegativeButton("取消", null).show();}}}

check_box_style.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:drawable="@drawable/check_true" android:state_checked="true"/><item android:drawable="@drawable/check_false"></item><item android:drawable="@drawable/check_true" android:state_selected="true"/><item android:drawable="@drawable/check_true" android:state_pressed="true"/></selector>

activity_main.xml

<LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="#ffffff"android:clickable="true"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="45dp"android:background="#117CF4"><ImageViewandroid:id="@+id/back"android:layout_width="30dp"android:layout_height="fill_parent"android:clickable="true"android:src="@drawable/btnclose" /><TextViewandroid:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:gravity="center_vertical|center_horizontal"android:text="群发消息"android:textColor="#ffffff"android:textSize="22sp" /><ImageButtonandroid:id="@+id/imageButton"android:layout_width="30dp"android:layout_height="fill_parent"android:layout_marginRight="10dp"android:background="#117CF4"android:src="@drawable/ic_action_summit" /></LinearLayout><ListViewandroid:id="@+id/listView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:divider="#DEDEDE"android:dividerHeight="2dp"/></LinearLayout>

list_item.xml

<LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_gravity="top"android:background="#ffffff"android:gravity="center"android:orientation="horizontal"><ImageViewandroid:id="@+id/iv_PersonPicture"android:layout_width="72dp"android:layout_height="50dp"android:src="@drawable/person" /><TextViewandroid:id="@+id/tv_NameAndPhone"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="1"android:gravity="center_vertical"android:text=""android:textAppearance="?android:attr/textAppearanceSmall"android:textColor="#000000" /><CheckBoxandroid:id="@+id/checkBox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="10dp"android:background="@drawable/check_box_style"android:button="@null"android:checked="false"android:clickable="false"android:focusable="false" /></LinearLayout>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。