package uk.ac.cam.tfmw2.stegdroid;
import java.io.File;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.CursorIndexOutOfBoundsException;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.Data;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MultiSend extends ListActivity{
private String[] addresses;
private String[] ids;
private String TAG = "MultiSend";
private String filePath;
private OnClickListener backListener = new OnClickListener(){
@Override
public void onClick(View v) {
MultiSend.this.finish();
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get state info
Bundle extras = getIntent().getExtras();
if(extras !=null) {
filePath = extras.getString("file_path");
}
//Get email addresses
String order = "lower(" + ContactsContract.Groups.TITLE + ") ASC";
String[] groupProjection = new String[] {
ContactsContract.Groups.TITLE,
ContactsContract.Groups._ID
};
Cursor groups = managedQuery(
ContactsContract.Groups.CONTENT_SUMMARY_URI,
groupProjection,
null,
null,
order);
groups.moveToFirst();
int nameColumn = groups.getColumnIndex(ContactsContract.Groups.TITLE);
addresses = new String[groups.getCount()];
ids = new String[addresses.length];
int i = 0;
do {
ids[i] = groups.getString(groups.getColumnIndex(ContactsContract.Groups._ID));
addresses[i++] = String.format("%s", groups.getString(nameColumn).replace("System Group: ", ""));
} while (groups.moveToNext());
//LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
setContentView(R.layout.list_view);
Button back = (Button) findViewById(R.id.back);
back.setOnClickListener(backListener);
ListView lv = (ListView) findViewById(android.R.id.list);
//lv.addHeaderView(li.inflate(R.layout.list_header,lv));
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, addresses));
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//Get ID
String gid = ids[position];
//get all people in this group
String[] projection = new String[]{
ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID
};
Cursor contacts = getContentResolver().query(
Data.CONTENT_URI,
projection,
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=" + gid,
null,
null
);
startManagingCursor(contacts);
String[] emailArray = new String[contacts.getCount()];
int i = 0;
if (contacts.moveToFirst()) {
do {
int cid = contacts.getColumnIndex(ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID);
//get email addresses
String[] nameAndEmailProjection = new String[] {
Email.DATA };
Cursor emails = managedQuery(
Email.CONTENT_URI,
nameAndEmailProjection, Email.CONTACT_ID + "=" + contacts.getString(cid), null, null);
emails.moveToFirst();
int emailColumn = emails.getColumnIndex(
ContactsContract.CommonDataKinds.Email.DATA);
do {
try{
String address = emails.getString(emailColumn);
emailArray[i++] = address;
Log.v(TAG,address);
}catch (CursorIndexOutOfBoundsException e){
//ignore, just means that this contact has no email address.
}
} while (emails.moveToNext());
} while (contacts.moveToNext());
}
// When clicked, show a toast with the TextView text
File toShare = new File(filePath);
Uri uri = Uri.fromFile(toShare);
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_STREAM, uri);
it.putExtra(Intent.EXTRA_EMAIL, emailArray);
it.setType("audio/ogg");
startActivity(it);
}
});
}
}