Contacts, Progress Dialog, No Group, Integration
- Using Android 2.0 API for contacts lookup - Progress dialogue with progress bar when sending SMS - Desactive Group as they are not using Android2.0 API (Sync and so on...) - Every SMS sent are registrer in the sysem DB so they are available for the MMS App
This commit is contained in:
parent
6a69514a10
commit
465b131420
@ -21,9 +21,10 @@
|
||||
</receiver>
|
||||
<provider android:authorities="com.openwide.android" android:name="EntryContentProvider"></provider>
|
||||
</application>
|
||||
<uses-sdk android:minSdkVersion="3" />
|
||||
<uses-sdk android:minSdkVersion="5" />
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
|
||||
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
|
||||
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
|
||||
|
||||
<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>
|
||||
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
|
||||
</manifest>
|
||||
|
@ -7,7 +7,7 @@ import android.database.SQLException;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.net.Uri;
|
||||
import android.provider.Contacts.Phones;
|
||||
import android.provider.ContactsContract.PhoneLookup;
|
||||
import android.util.Log;
|
||||
|
||||
public class DeliveryDbAdapter {
|
||||
@ -237,12 +237,16 @@ public class DeliveryDbAdapter {
|
||||
|
||||
|
||||
public String nameFromNumber(String number) {
|
||||
Uri contactUri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(number));
|
||||
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
|
||||
Cursor c = mCtx.getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME},null, null, null);
|
||||
/*Uri contactUri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(number));
|
||||
Cursor c = mCtx.getContentResolver().query(contactUri, new String[] { Phones.DISPLAY_NAME }, null, null, null);
|
||||
*/
|
||||
|
||||
if(c != null) {
|
||||
c.moveToFirst();
|
||||
if(c.isFirst()) {
|
||||
return c.getString(c.getColumnIndex(Phones.DISPLAY_NAME));
|
||||
return c.getString(c.getColumnIndex(PhoneLookup.DISPLAY_NAME));
|
||||
}else {
|
||||
return "";
|
||||
}
|
||||
|
@ -10,10 +10,13 @@ import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.ContentValues;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.telephony.PhoneNumberUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
@ -41,12 +44,62 @@ public class MultiSmsSender extends Activity {
|
||||
private static final int SENDING_DIALOG_KEY = 0;
|
||||
private static final int INSERT_ID = Menu.FIRST;
|
||||
|
||||
private static final int DIALOG_PROGRESS = 0;
|
||||
private static final int DIALOG_FINISHED = 1;
|
||||
private static final int DIALOG_NONUMBER = 2;
|
||||
|
||||
public static final String PARAM_NUMBERS_LIST = "param number list";
|
||||
public static final String PARAM_FLUSH = "param flush";
|
||||
public static final String PARAM_ENTRY_ID = "entry_id";
|
||||
|
||||
|
||||
public static final String DEBUG_TAG="MultiSmsSender";
|
||||
|
||||
final Handler mHandler = new Handler() {
|
||||
public void handleMessage(Message msg) {
|
||||
int type = msg.getData().getInt("ORIGIN");
|
||||
switch (type) {
|
||||
case DIALOG_PROGRESS:{
|
||||
int total = msg.getData().getInt("total");
|
||||
Log.d(DEBUG_TAG, "========= total is "+total);
|
||||
mSendingDialog.setProgress(total);
|
||||
}
|
||||
break;
|
||||
|
||||
case DIALOG_FINISHED:{
|
||||
dismissDialog(SENDING_DIALOG_KEY);
|
||||
int total = msg.getData().getInt("total");
|
||||
new AlertDialog.Builder(MultiSmsSender.this).setPositiveButton(
|
||||
getResources().getString(R.string.ok),
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
|
||||
}
|
||||
}).setMessage(
|
||||
total + " "
|
||||
+ getResources().getString(R.string.message_sent))
|
||||
.show();
|
||||
break;
|
||||
}
|
||||
|
||||
case DIALOG_NONUMBER:{
|
||||
new AlertDialog.Builder(MultiSmsSender.this).setPositiveButton(
|
||||
getResources().getString(R.string.ok),
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
|
||||
}
|
||||
}).setMessage(
|
||||
getResources().getString(R.string.enter_number)).show();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -74,13 +127,17 @@ public class MultiSmsSender extends Activity {
|
||||
mSend.setOnClickListener(new OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
sendMessage();
|
||||
showDialog(SENDING_DIALOG_KEY);
|
||||
MessageSenderThread sender = new MessageSenderThread(mHandler);
|
||||
sender.start();
|
||||
//sendMessage();
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void selectNumbers() {
|
||||
//startActivityForResult(new Intent(Intent.ACTION_PICK, People.CONTENT_URI), 0);
|
||||
Intent i = new Intent(this, PhoneNumberSelection.class);
|
||||
String rawNumbers = mContacts.getText().toString();
|
||||
String[] numbers = rawNumbers.split(",");
|
||||
@ -88,14 +145,28 @@ public class MultiSmsSender extends Activity {
|
||||
startActivityForResult(i, ACTIVITY_EDIT);
|
||||
}
|
||||
|
||||
public void sendMessage() {
|
||||
|
||||
|
||||
private class MessageSenderThread extends Thread{
|
||||
|
||||
Handler mHandler;
|
||||
|
||||
public MessageSenderThread( Handler h) {
|
||||
mHandler = h;
|
||||
}
|
||||
public void run() {
|
||||
sendMessage(mHandler);
|
||||
}
|
||||
|
||||
}
|
||||
public void sendMessage(Handler handler) {
|
||||
MySMSManager manager = new MySMSManager();
|
||||
String message = mEditor.getText().toString();
|
||||
|
||||
|
||||
if("".equals(message)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
String[] numbers = mContacts.getText().toString().split(",");
|
||||
HashSet<String> allreadySend = new HashSet<String>();
|
||||
int size = numbers.length;
|
||||
@ -105,14 +176,14 @@ public class MultiSmsSender extends Activity {
|
||||
int messageCount = messages.size();
|
||||
|
||||
//showDialog(SENDING_DIALOG_KEY);
|
||||
mSendingDialog = new ProgressDialog(this);
|
||||
/*mSendingDialog = new ProgressDialog(this);
|
||||
mSendingDialog.setTitle(R.string.sending);
|
||||
mSendingDialog.setMessage(getResources().getString(R.string.wait));
|
||||
mSendingDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
||||
mSendingDialog.setIndeterminate(true);
|
||||
mSendingDialog.setCancelable(false);
|
||||
mSendingDialog.setMax(size);
|
||||
mSendingDialog.show();
|
||||
mSendingDialog.show();*/
|
||||
|
||||
if (haveDeliveryReports) {
|
||||
deliveryId = mDbHelper.createDelivery(message.substring(0, Math.min(30, message
|
||||
@ -126,7 +197,13 @@ public class MultiSmsSender extends Activity {
|
||||
|
||||
if (!newN.equals("")
|
||||
&& PhoneNumberUtils.isWellFormedSmsAddress(newN)) {
|
||||
mSendingDialog.setProgress(i / size);
|
||||
Message msg = handler.obtainMessage();
|
||||
Bundle b = new Bundle();
|
||||
b.putInt("ORIGIN", DIALOG_PROGRESS);
|
||||
b.putInt("total", (i*100)/size);
|
||||
msg.setData(b);
|
||||
handler.sendMessage(msg);
|
||||
//mSendingDialog.setProgress( i/ size);
|
||||
|
||||
if (!allreadySend.contains(newN)) {
|
||||
allreadySend.add(newN);
|
||||
@ -134,9 +211,14 @@ public class MultiSmsSender extends Activity {
|
||||
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>(messageCount);
|
||||
ArrayList<PendingIntent> sentIntents = null;
|
||||
|
||||
|
||||
|
||||
|
||||
if (haveDeliveryReports) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put("address", newN);
|
||||
values.put("body", message);
|
||||
getContentResolver().insert(Uri.parse("content://sms/sent"), values);
|
||||
|
||||
long entryId = mDbHelper.createEntry(mDbHelper.nameFromNumber(newN), newN, deliveryId);
|
||||
Log.d(DEBUG_TAG, "entry is "+entryId);
|
||||
for (int j = 0; j < messageCount; j++) {
|
||||
@ -154,30 +236,20 @@ public class MultiSmsSender extends Activity {
|
||||
}
|
||||
}
|
||||
}
|
||||
mSendingDialog.dismiss();
|
||||
new AlertDialog.Builder(this).setPositiveButton(
|
||||
getResources().getString(R.string.ok),
|
||||
new DialogInterface.OnClickListener() {
|
||||
Message msg = handler.obtainMessage();
|
||||
Bundle b = new Bundle();
|
||||
b.putInt("ORIGIN", DIALOG_FINISHED);
|
||||
b.putInt("total", allreadySend.size() );
|
||||
msg.setData(b);
|
||||
handler.sendMessage(msg);
|
||||
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
|
||||
}
|
||||
}).setMessage(
|
||||
allreadySend.size() + " "
|
||||
+ getResources().getString(R.string.message_sent))
|
||||
.show();
|
||||
} else {
|
||||
new AlertDialog.Builder(this).setPositiveButton(
|
||||
getResources().getString(R.string.ok),
|
||||
new DialogInterface.OnClickListener() {
|
||||
Message msg = handler.obtainMessage();
|
||||
Bundle b = new Bundle();
|
||||
b.putInt("ORIGIN", DIALOG_NONUMBER);
|
||||
msg.setData(b);
|
||||
handler.sendMessage(msg);
|
||||
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
|
||||
}
|
||||
}).setMessage(
|
||||
getResources().getString(R.string.enter_number)).show();
|
||||
}
|
||||
|
||||
}
|
||||
@ -190,7 +262,6 @@ public class MultiSmsSender extends Activity {
|
||||
mSendingDialog.setTitle(R.string.sending);
|
||||
mSendingDialog.setMessage(getResources().getString(R.string.wait));
|
||||
mSendingDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
||||
mSendingDialog.setIndeterminate(true);
|
||||
mSendingDialog.setCancelable(false);
|
||||
|
||||
return mSendingDialog;
|
||||
@ -246,7 +317,7 @@ public class MultiSmsSender extends Activity {
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
menu.add(0, INSERT_ID, 0, R.string.add_group);
|
||||
//menu.add(0, INSERT_ID, 0, R.string.add_group);
|
||||
menu.add(0, INSERT_ID + 1, 0, R.string.delivery);
|
||||
return true;
|
||||
}
|
||||
|
@ -7,12 +7,14 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Contacts.Phones;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Phone;
|
||||
import android.provider.ContactsContract.Contacts;
|
||||
import android.provider.ContactsContract.Data;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.SimpleCursorAdapter;
|
||||
@ -27,6 +29,7 @@ public class PhoneNumberSelection extends ListActivity
|
||||
private static final int SELECT_ALL_ID = Menu.FIRST + 1;
|
||||
private static final int DESELECT_ALL_ID = Menu.FIRST + 2;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -70,18 +73,30 @@ public class PhoneNumberSelection extends ListActivity
|
||||
}
|
||||
|
||||
private void fillData() {
|
||||
Cursor c = getContentResolver().query(Phones.CONTENT_URI, null, null, null, Phones.NAME);
|
||||
|
||||
|
||||
Cursor c = getContentResolver().query(Data.CONTENT_URI,
|
||||
new String[] {Data._ID, Data.MIMETYPE, Phone.NUMBER, Phone.TYPE, Phone.LABEL, Contacts.DISPLAY_NAME},
|
||||
Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
|
||||
null, Contacts.DISPLAY_NAME);
|
||||
startManagingCursor(c);
|
||||
mAdpater = new PhoneDataListAdapter(this, R.layout.number_row, c, new String[] {
|
||||
Contacts.DISPLAY_NAME, Phone.NUMBER
|
||||
}, new int[] {R.id.name, R.id.phone}, mSelectedSet);
|
||||
|
||||
/*Cursor c = getContentResolver().query(Phones.CONTENT_URI, null, null, null, Phones.NAME);
|
||||
startManagingCursor(c);
|
||||
mAdpater = new PhoneDataListAdapter(this, R.layout.number_row, c, new String[] {
|
||||
Phones.NAME, Phones.NUMBER
|
||||
}, new int[] {R.id.name, R.id.phone}, mSelectedSet);
|
||||
}, new int[] {R.id.name, R.id.phone}, mSelectedSet);*/
|
||||
|
||||
setListAdapter(mAdpater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
menu.add(0, INSERT_ID,0, R.string.add_group);
|
||||
//menu.add(0, INSERT_ID,0, R.string.add_group);
|
||||
menu.add(0, SELECT_ALL_ID, 0, R.string.select_all);
|
||||
menu.add(0, DESELECT_ALL_ID, 0, R.string.deselect_all);
|
||||
return true;
|
||||
@ -94,8 +109,16 @@ public class PhoneNumberSelection extends ListActivity
|
||||
display_group_list();
|
||||
return true;
|
||||
case SELECT_ALL_ID:
|
||||
Cursor c = getContentResolver().query(Phones.CONTENT_URI, null, null, null, Phones.NAME);
|
||||
|
||||
/*Cursor c = getContentResolver().query(Phones.CONTENT_URI, null, null, null, Phones.NAME);
|
||||
int numberIdx = c.getColumnIndex(Phones.NUMBER);
|
||||
*/
|
||||
Cursor c = getContentResolver().query(Data.CONTENT_URI,
|
||||
new String[] {Data._ID, Data.MIMETYPE, Phone.NUMBER, Phone.TYPE, Phone.LABEL, Contacts.DISPLAY_NAME},
|
||||
Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
|
||||
null, null);
|
||||
int numberIdx = c.getColumnIndex(Phone.NUMBER);
|
||||
startManagingCursor(c);
|
||||
c.moveToFirst();
|
||||
for (int i = 0; i < c.getCount(); i++) {
|
||||
mSelectedSet.add(c.getString(numberIdx));
|
||||
@ -144,8 +167,8 @@ public class PhoneNumberSelection extends ListActivity
|
||||
public PhoneDataListAdapter(Context context, int layout, Cursor c,
|
||||
String[] from, int[] to, HashSet<String> selected) {
|
||||
super(context, layout, c, from, to);
|
||||
nameidx = c.getColumnIndex(Phones.NAME);
|
||||
numberidx = c.getColumnIndex(Phones.NUMBER);
|
||||
nameidx = c.getColumnIndex(Contacts.DISPLAY_NAME);
|
||||
numberidx = c.getColumnIndex(Phone.NUMBER);
|
||||
mContext = context;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user