Android将所选联系人保存到SharedReferences

Android将所选联系人保存到SharedReferences,android,sharedpreferences,android-contacts,Android,Sharedpreferences,Android Contacts,对于我的应用程序,我允许用户在编辑文本中输入要发送的消息。同时,我通过单击按钮动态生成3个编辑文本视图。对于每个编辑文本视图,用户都可以从电话簿中获取联系人。现在,我想保存获取的联系人和自定义消息以保存在共享首选项中。消息部分已经完成。我想保存联系人 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.

对于我的应用程序,我允许用户在编辑文本中输入要发送的消息。同时,我通过单击按钮动态生成3个编辑文本视图。对于每个编辑文本视图,用户都可以从电话簿中获取联系人。现在,我想保存获取的联系人和自定义消息以保存在共享首选项中。消息部分已经完成。我想保存联系人

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // for saving text that user can change as per need
    final SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(this);

    message = (EditText) findViewById(R.id.et_message);
    // loads the text that has been stored to SP and set it to Edit Text
    message.setText(prefs.getString("autoSave", ""));
    message.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            prefs.edit().putString("autoSave", s.toString()).commit();

        }
    });

    // setting up the dialog box for GPS Settings
    // checking if GPS is already on or not. If not then displaying the
    // dialog requesting user to On GPS.
    boolean isGPSEnabled = false;
    // Declaring a Location Manager
    LocationManager locationManager;

    locationManager = (LocationManager) getApplicationContext()
            .getSystemService(LOCATION_SERVICE);

    // getting GPS status
    isGPSEnabled = locationManager
            .isProviderEnabled(LocationManager.GPS_PROVIDER);

    if (!isGPSEnabled) {
        // no GPS provider is enabled
        // creating alertdialog
        AlertDialog.Builder builder = new AlertDialog.Builder(c);

        builder.setTitle("Settings");
        builder.setMessage("Enable GPS for the Application");

        builder.setPositiveButton("GPS Setting",

        new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                startActivity(new Intent(
                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));

                dialog.dismiss();
            }

        });

        builder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        new AlertDialog.Builder(MainActivity.this)
                                .setTitle("How to use Application")
                                .setMessage(
                                        "You must enable the GPS in order to use this application. Press Activate and then press Power Button twice in order to send the alert message to the selected contacts")
                                .setNeutralButton(
                                        "OK",
                                        new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(
                                                    DialogInterface dialog,
                                                    int which) {
                                                // do something
                                                // for returning back to
                                                // application
                                                dialog.cancel();

                                            }
                                        }).show();
                        dialog.dismiss();

                    }
                });

        builder.show();

    } else {
        // GPS provider is enabled
    }

    // defining button elements for picking contacts from phone-book
    btn_cntct = (Button) findViewById(R.id.bpickperson);
    btn_cntct.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            // using Intent for fetching contacts from phone-book
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
            startActivityForResult(intent, REQUESTCODE);
        }

    });

    // defining button and edit-text values for adding mutli edit-texts
    // views
    temp = 1;
    linearLayoutSec = (LinearLayout) findViewById(R.id.linearlayoutSec);
    ScrView = (ScrollView) findViewById(R.id.ScrView);
    btn_addmore_cntct = (Button) findViewById(R.id.baddmorecontacts);
    btn_addmore_cntct.setOnClickListener(OnClick());
    // EditText editview = new EditText(this);

}

// implementing OnClickListener OnClick() method for "btn_addmore_cntct"
// button
private OnClickListener OnClick() {
    // TODO Auto-generated method stub
    // changing return type "null" to "new OnClickListner"
    return new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (temp <= 2) {
                EditText tab = new EditText(getApplicationContext());
                tab.setLayoutParams(new LayoutParams(
                        LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
                tab.setEnabled(false);
                tab.setFocusable(false);
                linearLayoutSec.addView(tab, 0);
                temp++;
            } else {
                // Print message to user Cant add more editText.
                Toast.makeText(getApplicationContext(), "No More Contacts",
                        Toast.LENGTH_SHORT).show();
            }

            // two functions of alert button defined - send sms and send
            // location
            b_alert = (Button) findViewById(R.id.balert);
            b_alert.setOnClickListener(new Button.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub

                    // for sending google maps location

                    /**
                     * Intent intentgooglemaps = new Intent(
                     * android.content.Intent.ACTION_VIEW,
                     * Uri.parse("http://maps.google.com/?q=<lat>,<lng>"));
                     * startActivity(intentgooglemaps);
                     **/

                    // for sending message via sms

                    /**
                     * String smsNumber = tab.getText().toString();
                     * 
                     * String smsText =
                     * "I am in danger.Please follow my location";
                     * 
                     * Uri uri = Uri.parse("smsto:" + smsNumber); Intent
                     * intent = new Intent(Intent.ACTION_SENDTO, uri);
                     * intent.putExtra("sms_body", smsText);
                     * 
                     * startActivity(intent);
                     * 
                     * 
                     * // try implementing this loop for sending sms to
                     * every // selected number
                     * 
                     * /** if (MobNumber != null) {
                     * 
                     * for (int i = 0; i < tab.size(); i++) { String message
                     * = MessageText.getText().toString(); String
                     * tempMobileNumber = MobNumber.get(i).toString();
                     * sendSMS(tempMobileNumber, message); }
                     **/

                }

            });

        }
    };

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

// calling onActivityResult when contacts has been selected from the
// phone-book, giving back the REQUESTCODE i started it with, the RC it
// returned with
// any additional data from it.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    if (data != null) {
        Uri uri = data.getData();
        Log.i("data", uri.toString());
        if (uri != null) {
            Cursor c = null;
            try {
                c = getContentResolver()
                        .query(uri,
                                new String[] {
                                        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                                        ContactsContract.CommonDataKinds.Phone.NUMBER,
                                        ContactsContract.CommonDataKinds.Phone.TYPE },
                                null, null, null);

                if (c != null && c.moveToFirst()) {
                    String name = c.getString(0);
                    String number = c.getString(1);
                    int type = c.getInt(2);

                    showSelectedNumber(name, number, type);
                }
            } finally {
                if (c != null) {
                    c.close();
                }
            }
        }
    }
}

// defining showSelectedNummber to display selected contact from phone-book
// to Edit-Text View
String selectedNum = " ";

public void showSelectedNumber(String name, String number, int type) {
    if (linearLayoutSec == null) {
        Log.i("layoutLinear is null", "null");
    } else {
        Log.i("layoutLinear is not  null", "not null");

    }

    EditText userNumber = (EditText) linearLayoutSec.getChildAt(0);
    if (userNumber == null) {
        Log.i("edittext is null", "null");
    } else {
        Log.i("edittext is not  null", "not null");

    }
    String typeNumber = (String) ContactsContract.CommonDataKinds.Phone
            .getTypeLabel(getResources(), type, "");
    // preventing number duplicacy and raising toast
    if (selectedNum.contains(number)) {
        // do nothing
        // alert user that number is already selected
        Toast.makeText(getApplicationContext(),
                "Selected Contact Already Exists", Toast.LENGTH_SHORT)
                .show();
    } else
        userNumber.setText(name + ":" + number + " " + typeNumber);
    selectedNum = selectedNum + number;

}

@Override
public void onLocationChanged(Location arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderDisabled(String arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    // TODO Auto-generated method stub

}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//用于保存用户可以根据需要更改的文本
最终SharedReferences prefs=首选项管理器
.GetDefaultSharedReferences(本文件);
message=(EditText)findViewById(R.id.et_message);
//加载已存储到SP的文本,并将其设置为编辑文本
message.setText(prefs.getString(“autoSave”,“autoSave”);
message.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列,int start,int before,
整数计数){
//TODO自动生成的方法存根
}
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
//TODO自动生成的方法存根
prefs.edit().putString(“自动保存”,s.toString()).commit();
}
});
//设置GPS设置对话框
//检查GPS是否已打开。如果未打开,则显示
//对话框,请求用户在GPS上导航。
布尔值isGPSEnabled=false;
//声明位置管理器
地点经理地点经理;
locationManager=(locationManager)getApplicationContext()
.getSystemService(位置服务);
//获取GPS状态
isGPSEnabled=位置管理器
.isprovidenabled(LocationManager.GPS\U提供商);
如果(!isGPSEnabled){
//没有启用GPS提供程序
//创建alertdialog
AlertDialog.Builder=新建AlertDialog.Builder(c);
builder.setTitle(“设置”);
builder.setMessage(“为应用程序启用GPS”);
builder.setPositiveButton(“GPS设置”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
星际触觉(新意图)(
android.provider.Settings.ACTION_LOCATION_SOURCE_Settings));
dialog.dismise();
}
});
builder.setNegativeButton(“取消”,
新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
新建AlertDialog.Builder(MainActivity.this)
.setTitle(“如何使用应用程序”)
.setMessage(
“您必须启用GPS才能使用此应用程序。按Activate,然后按Power按钮两次,以便向选定的联系人发送警报信息”)
.setNeutralButton(
“好的”,
新建DialogInterface.OnClickListener(){
@凌驾
公共空间点击(
对话框接口对话框,
int(其中){
//做点什么
//为了回到
//应用
dialog.cancel();
}
}).show();
dialog.dismise();
}
});
builder.show();
}否则{
//GPS提供程序已启用
}
//定义用于从通讯录中选取联系人的按钮元素
btn_cntct=(按钮)findViewById(R.id.bpickperson);
btn_cntct.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
//使用Intent从电话簿中提取联系人
意向意向=新意向(意向.行动\u获取\u内容);
intent.setType(ContactsContract.CommonDataTypes.Phone.CONTENT\u ITEM\u TYPE);
startActivityForResult(意图、请求代码);
}
});
//定义用于添加多编辑文本的按钮和编辑文本值
//观点
温度=1;
linearLayoutSec=(LinearLayout)findViewById(R.id.linearLayoutSec);
ScrView=(滚动视图)findViewById(R.id.ScrView);
btn_addmore_cntct=(按钮)findViewById(R.id.baddmorecontacts);
btn_addmore_cntct.setOnClickListener(OnClick());
//EditText editview=新的EditText(此);
}
//为“btn\u addmore\u cntct”实现OnClickListener OnClick()方法
//钮扣
私有OnClickListener OnClick(){
//TODO自动生成的方法存根
//将返回类型“null”更改为“new OnClickListner”
返回新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根

if(temp)声明方法之外的编辑文本n使用gettext方法访问nme n编号,并按照存储名称的方式存储名称n numbrmessage@Rat-a-tat-a-tatratotouille你在说什么方法?显示所选号码??