我怎样才能在Android的编程方式创建一个联络小组?

我想创建一个联络小组,给它一个特定的名称,然后将联系人添加到它。

可以通过使用进行接触RawContacts类,但我不知道该怎么

  1. 创建一个联络小组
  2. 然后将联系人添加到特定的组。

是否有人可以帮助我一些示例代码?

--------------解决方案-------------

组是没有的联系人应用程序/内容提供商/谷歌联系人同步适配器上Android的一部分,但你会需要直接使用谷歌联系人API,见http://code.google.com/apis/contacts/docs/3.0/ developers_guide_protocol.html#CreatingGroups

请使用此代码。 这将帮助一些之一。

package com.example.new_group_and_add_contacts;

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

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {
ListView listView = null;
EditText editText = null;
Cursor cursor = null;
Context context = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

context = this;
listView =(ListView) findViewById(R.id.mylist);
editText = (EditText) findViewById(R.id.textview);

try {
// Create an array of Strings, for List
ArrayAdapter<Model> adapter = new InteractiveArrayAdapter(this,getModel());

// Assign adapter to ListView
listView.setAdapter(adapter);

listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(),
"Click ListItem Number " + position, Toast.LENGTH_LONG)
.show();
}
});

} catch(Exception e) {
Log.d("**** Exception: ",e.getMessage());
}
}

private List<Model> getModel() {
List<Model> list = new ArrayList<Model>();

try {
ContentResolver cr = getContentResolver();
cursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");

cursor.moveToFirst();
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex (ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex (ContactsContract.CommonDataKinds.Phone.NUMBER));
String s = name + "\n" + number;
list.add(get(s));
s = null;
} while (cursor.moveToNext());
}
} catch(Exception e){
Log.d("???????? Error in Contacts Read: ",""+e.getMessage());
}

return list;
}

private Model get(String s) {
return new Model(s);
}

public void onClick(View v) {
switch(v.getId())
{
case R.id.mybutton:
String s="";
for(int i=0; i<InteractiveArrayAdapter.list.size(); i++) {
if(InteractiveArrayAdapter.list.get(i).isSelected()) {
s = s+i+" ";
}
}
String s1 = null;
s1 = editText.getText().toString();

// Check the edittext is empty or not
if(s1.equals("")){
Toast.makeText(MainActivity.this, "Please Enter Any Text", Toast.LENGTH_SHORT).show();
return;
}

// Check the Group is available or not
Cursor groupCursor = null;
String[] GROUP_PROJECTION = new String[] { ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
groupCursor = this.managedQuery(ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, ContactsContract.Groups.TITLE+ "=?", new String[]{s1}, ContactsContract.Groups.TITLE + " ASC");
Log.d("*** Here Counts: ","** "+groupCursor.getCount());

if(groupCursor.getCount() > 0){
Toast.makeText(MainActivity.this, "Group is already available", Toast.LENGTH_SHORT).show();
return;
}
else {
Toast.makeText(MainActivity.this, "Not available", Toast.LENGTH_SHORT).show();

//Here we create a new Group
try {
ContentValues groupValues = null;
ContentResolver cr = this.getContentResolver();
groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, s1);
cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
Log.d("########### Group Creation Finished :","###### Success");
}
catch(Exception e){
Log.d("########### Exception :",""+e.getMessage());
}
Toast.makeText(MainActivity.this, "Created Successfully", Toast.LENGTH_SHORT).show();
}

groupCursor.close();
groupCursor = null;

Log.d(" **** Contacts add to Groups...","**** Fine");

String groupID = null;
Cursor getGroupID_Cursor = null;
getGroupID_Cursor = this.managedQuery(ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, ContactsContract.Groups.TITLE+ "=?", new String[]{s1}, null);
Log.d("**** Now Empty Cursor size:","** "+getGroupID_Cursor.getCount());
getGroupID_Cursor.moveToFirst();
groupID = (getGroupID_Cursor.getString(getGroupID_Cursor.getColumnIndex("_id")));
Log.d(" **** Group ID is: ","** "+groupID);

getGroupID_Cursor.close();
getGroupID_Cursor = null;

for(int i=0; i<InteractiveArrayAdapter.list.size(); i++) {
if(InteractiveArrayAdapter.list.get(i).isSelected()) {
cursor.moveToPosition(i);
String contactID = cursor.getString(cursor.getColumnIndex (ContactsContract.CommonDataKinds.Phone.CONTACT_ID));

long contact = Long.parseLong(contactID);
long group = Long.parseLong(groupID);

addToGroup(contact, group);

String name = cursor.getString(cursor.getColumnIndex (ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
Log.d(" **** Contact Added: ","* :"+name);
Toast.makeText(MainActivity.this, name+" Added Successfully", Toast.LENGTH_SHORT).show();
}
}

break;
}
}

public Uri addToGroup(long personId, long groupId) {

ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
personId);
values.put(
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
groupId);
values
.put(
ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);

return this.context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

}

}

另外两个类ListView控件。

package com.example.new_group_and_add_contacts;

import java.util.List;
import android.app.Activity;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;

public class InteractiveArrayAdapter extends ArrayAdapter<Model> {

public static List<Model> list = null;
private final Activity context;

public InteractiveArrayAdapter(Activity context, List<Model> list) {
super(context, R.layout.rowbuttonlayout, list);
this.context = context;
this.list = list;
}

static class ViewHolder {
protected TextView text;
protected CheckBox checkbox;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;

if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.rowbuttonlayout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) view.findViewById(R.id.label);
viewHolder.text.setText("Select Ringtone");

viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Model element = (Model) viewHolder.checkbox
.getTag();
element.setSelected(buttonView.isChecked());
}
});

view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}

ViewHolder holder = (ViewHolder) view.getTag();
holder.text.setText(list.get(position).getName());

holder.checkbox.setChecked(list.get(position).isSelected());

return view;
}
}

package com.example.new_group_and_add_contacts;

public class Model {

private String name;
private boolean selected;

public Model(String name) {
this.name = name;
selected = false;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public boolean isSelected() {
return selected;
}

public void setSelected(boolean selected) {
this.selected = selected;
}

}

和XML文件是,这个XML文件名为main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/layoutexample"
android:background="#000000"
>

<EditText
android:id="@+id/textview"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:hint="Enter Group Name"
android:textColor="#000000"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
/>

<ListView
android:id="@+id/mylist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#552244"
android:cacheColorHint="#00000000"
android:layout_margin="10dp"
>
</ListView>

<Button
android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Create New Group"
android:onClick="onClick"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
/>

</LinearLayout>

对于ListView的另一个XML文件,名称是rowbuttonlayout.xml。

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

<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</CheckBox>

<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
android:textSize="15dp"
android:textColor="#FF0000"
>
</TextView>

</LinearLayout>

本规范工作Andoid2.2起手机。

分类:机器人 时间:2012-01-01 人气:0
本文关键词: 机器人
分享到:

相关文章

  • 机器人:“buttonSelectableBackground”背景=,什么“?” 手段? 2012-01-01

    在XML的Andr​​oid的布局. 什么?"机器人:背景="buttonSelectableBackground""的意思? 我konw"机器人:背景="@绘制/ buttonSelectableBackground""的意思,但我不知道 <LinearLayout android:id="@id/titlebar_icon_layout" android:layout_width="wr

  • 为什么我要多个消息发送到我的Jabber机器人前,将注销? 2012-01-02

    我努力使自己的Jabber机器人,但我遇到了一个小麻烦. 我已经得到了我的机器人但响应的消息,如果我试图改变机器人的存在,那么它好像你发送给机器人的消息得到推迟. 当我运行的脚本,我改变的存在,所以我可以看到,它是在线我的意思是. 后来,当我向它发送一个消息,它有三个回调例程我已经建立了消息被调用之前. 经过thirrd消息发送和聊天子程序调用它仍然处理我发来的第一条消息. 这确实没有构成太大的不同之处在于我把它设置为登录时,我发送邮件"注销"和它必须跟两个更多的消息,以退出的问题.

  • 是OpenEars TTS机器人探测? 2012-01-02

    我想开发使用TTS iOS应用程序,我很好奇OpenEars. 我FLITE几年前尝试了,这是非常冠冕堂皇的机器人. 这是仍然OpenEars的情况下(因为它使用FLITE)? 有没有人对应用程序商店,或任何样品的演示应用程序的声音怎么听起来像? --------------解决方案------------- 我一直在尝试与OpenEars并创建了一个相当简单的应用程序,演示了OpenEars库的各个方面. 我没有推论坛我的应用程序的意图,我只提供,因为你已经问了演示应用程序的链接. http:

  • 从PC通过机器人发送短信 2012-01-05

    我是新来的Andr​​oid和我的Arch Linux用户. 我想编写一个程序,让我在我的电脑输入短信,并通过机器人发送. 我以为我可以系绳我的Andr​​oid与PC机做套接字编程. 但它卸载从我的电脑的SD卡. 如果有任何其他方式,或者如果我在错误的方向我要去,有人可以帮我告诉在哪里读,读什么书? 谢谢. --------------解决方案------------- 而你真的需要SD卡从您的PC为这个安装? 您还可以创建一个服务,等待传入的连接. 那么你的电脑上的一个小程序,允许您连接到您

  • 对于谷歌API任务的机器人样品固定依赖 2012-01-06

    我试图编译和运行谷歌的API网站任务Android的示例代码. 我无法得到它与Maven工作,所以我结束了下载的所有jar文件. 下面是我做的步骤: 1)导入下载任务的机器人样品项目到Eclipse 2)google-api-java-client-1.4.1-beta.zip jar文件添加到我的项目(​​建设路,添加外部JAR) 3)下载任务的API jar文件并导入到我的项目:http://code.google.com/p/google-api-java-client/wiki/APIs

  • 的robots.txt和Meta标签机器人 2012-01-06

    我想确保我明白这一点: 这样的: <meta content="noindex, nofollow" name="robots" />在<head>网页的 是相同的: Disallow: /example-page.html中Robots.txt 权利? --------------解决方案------------- in the <head> of a webpage is the same as:是的,如果你正在谈论<h

  • 如何编写代码,用PHP来保护一个页面上显示的电子邮件ID从垃圾邮件机器人的保护 2012-01-08

    我显示存储在使用PHP页面上的数据库中的电子邮件地址. 页面上的电子邮件地址显示如下: 电子邮件:test@example.com 现在在页面上显示的电子邮件地址,应该使用JS垃圾邮件防护,以防止垃圾邮件机器人隐藏它. --------------解决方案------------- 尝试电子邮件编码器,或者实现一个在你的脚本. 你可以尝试使用图像(和PHP-GD库)写一个图像,然后展现这一点. (如Facebook) 这里有一些很好的资源来看待: 防止垃圾邮件机器人隐藏电子邮件 显示电子邮件的用

  • 编程的机器人提交HTML表单 2012-01-08

    我想在Android的编程方式提交表单. 我不想用Web浏览器的任何用户交互. 用户将提供一个EditField中输入,然后输入将通过HTTPwebmethod提交通过HTTP POST方法. 但我没有得到任何相同的成功. 请指教. 我已经使用在的HtmlUnit的Java,但它不工作的机器人. final WebClient webClient = new WebClient(); final HtmlPage page1 = webClient.getPage("http://www.mai

  • 如何定制机器人框架的测试报告 2012-01-11

    我想自定义机器人框架的测试报告,以满足我的需要. 我在哪里可以找到处理此功能相关的Python源? 或者我需要建立一个第三方库来处理呢? --------------解决方案------------- 一种解决方案是从头开始创建自己的报表. XML输出​​很容易解析. 您可以关闭的命令行选项报告的生成(如: --log NONE and --report NONE ). 然后,创建生成你想要的任何类型的报告的脚本. 一种方法,一种跛脚,但可行的,是使用关键字,"设置测试消息". 这可以

  • 动画机器人? 2012-01-12

    我是新来android.I需要知道基本的动画在Android中的视图的,并查看Group's.Can人提供一些参考线来学习它! 提前致谢... --------------解决方案------------- 你可以通过阅读动画官方指南开始 对于未来游客我想你需要尝试这个nineoldandroids机器人动画 它使用起来非常简单. 不要忘记阅读的文档. 下载的zip,使用src拷贝到你的主文件夹src文件夹中,也可以使一个jar文件出来,或使其库.至于我,我抄在src到我的SRC. packag

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.366 (s). 10 q(s)