- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过 PHP 将联系人姓名和号码存储到 MySQL。问题是插入了空值的数据。代码正确吗?主Activity.java
public class Activity extends NavigationActivity {
TextInputEditText name1,mobile1;
private static final String TAG = Activity.class.getSimpleName();
private static final int REQUEST_CODE_PICK_CONTACTS = 1;
private Uri uriContact;
private String contactID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_offers);
name1 = (TextInputEditText) findViewById(R.id.reference_new_connection_name_1);
mobile1 = (TextInputEditText) findViewById(R.id.reference_new_connection_mobile_1);
name1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
{
name1.setText("");
mobile1.setText("");
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,PICK_CONTACT);
}
}
});
//This is a Button
public void sendReference(View view) {
sendContacts(retrieveContactName(),retrieveContactNumber());
sendReference();
}
public void sendContacts(final String name, final String mobile)
{
final ProgressDialog progressDialog = new MyCustomProgressDialog(Activity.this);
progressDialog.setCancelable(false);
progressDialog.show();
if (ConnectivityReceiver.isConnected()) {
deleteCache(Activity.this);
StringRequest login_request = new StringRequest(Request.Method.POST, Config.SEND_REFERENCE_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("Response", response);
progressDialog.dismiss();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
if (error instanceof NoConnectionError) {
noConnection();
} else {
Log.e("Error",error.toString());
}
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<>();
params.put("user_id",id);
params.put("Name",name);
params.put("Mobile",mobile);
return params;
}
};
RequestQueue login = Volley.newRequestQueue(Activity.this);
login.add(login_request);
}
else
{
noConnection();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_PICK_CONTACTS && resultCode == RESULT_OK) {
Log.d(TAG, "Response: " + data.toString());
uriContact = data.getData();
retrieveContactName();
retrieveContactNumber();
name1.setText(retrieveContactName());
mobile1.setText(retrieveContactNumber());
name1.setEnabled(false);
mobile1.setEnabled(false);
}
}
private String retrieveContactNumber() {
String contactNumber = null;
// getting contacts ID
Cursor cursorID = getContentResolver().query(uriContact,
new String[]{ContactsContract.Contacts._ID},
null, null, null);
if (cursorID.moveToFirst()) {
contactID = cursorID.getString(cursorID.getColumnIndex(ContactsContract.Contacts._ID));
}
cursorID.close();
Cursor cursorPhone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER},
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " +
ContactsContract.CommonDataKinds.Phone.TYPE + " = " +
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE,
new String[]{contactID},
null);
if (cursorPhone.moveToFirst()) {
contactNumber = cursorPhone.getString(cursorPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
cursorPhone.close();
return contactNumber;
}
private String retrieveContactName() {
String contactName = null;
Cursor cursor = getContentResolver().query(uriContact, null, null, null, null);
if (cursor.moveToFirst()) {
contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
}
cursor.close();
return contactName;
}
public void sendReference()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Reference Sent..")
.setMessage("Thank You..")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(Activity.this,SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
startActivity(intent);
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
最佳答案
这个方法有很大的问题......这里为每个联系人上传到服务器生成请求。
这可能会给服务器带来不必要的流量
我们可以使用 json 数组:
代码:
private fun getContacts(): JsonArray {
val resolver: ContentResolver = contentResolver
val cursor = resolver.query(
ContactsContract.Contacts.CONTENT_URI, null, null, null,
null
)
val mainJsonArray: JsonArray = JsonArray()
if (cursor!!.count > 0) {
while (cursor.moveToNext()) {
val personJsonObj: JsonObject = JsonObject()
val id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID))
val name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))
//val phoneNumber = (cursor.getString( cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER) )).toInt()
personJsonObj.addProperty("NAME", name.replace("\\", "\\\\").replace("'", "\\'").replace("\"", "\\\""))
val orgCursor = getContentResolver().query(
ContactsContract.Data.CONTENT_URI, null,
ContactsContract.Data.CONTACT_ID + "=?", arrayOf(id), null
)
val phoneJsonArray = JsonArray()
val emailJsonArray = JsonArray()
if (orgCursor!!.count > 0) {
while (orgCursor.moveToNext()) {
if (orgCursor!!.getString(orgCursor.getColumnIndex(ContactsContract.Data.MIMETYPE)).equals(
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE
)
) {
val companyName = orgCursor.getString(orgCursor.getColumnIndex(ContactsContract.Data.DATA1))
val designation = orgCursor.getString(orgCursor.getColumnIndex(ContactsContract.Data.DATA4))
personJsonObj.addProperty(
"ORGANIZATION",
companyName.replace("\\", "\\\\").replace("'", "\\'").replace("\"", "\\\"")
)
personJsonObj.addProperty(
"DESIGNATION",
designation.replace("\\", "\\\\").replace("'", "\\'").replace("\"", "\\\"")
)
} else if (orgCursor!!.getString(orgCursor.getColumnIndex(ContactsContract.Data.MIMETYPE)).equals(
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
)
) {
val phoneNum = orgCursor.getString(orgCursor.getColumnIndex(ContactsContract.Data.DATA1))
phoneJsonArray.add(phoneNum.replace(" ", "").replace("-", ""))
} else if (orgCursor!!.getString(orgCursor.getColumnIndex(ContactsContract.Data.MIMETYPE)).equals(
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
)
) {
val emailAddr = orgCursor.getString(orgCursor.getColumnIndex(ContactsContract.Data.DATA1))
emailJsonArray.add(emailAddr.replace(" ", ""))
}
}
}
orgCursor.close()
personJsonObj.add("EMAIL_LIST", emailJsonArray)
personJsonObj.add("PHONE_NUMBERS", phoneJsonArray)
mainJsonArray.add(personJsonObj)
}
}
cursor.close()
return mainJsonArray
}
生成的 json 数组:
[{
"NAME": "Test User Test User Last Name",
"ORGANIZATION": "Some Company",
"DESIGNATION": "Associate",
"EMAIL_LIST": ["testuser@organiztion.com", "testuser1@org.com"],
"PHONE_NUMBERS": ["123456789", "9808776"]
}, {
"NAME": "User One",
"ORGANIZATION": "Test Company",
"DESIGNATION": "Owner",
"EMAIL_LIST": ["abc1@test.com", "abc2@test.com", "abc3@test.com", "abc4@test.com"],
"PHONE_NUMBERS": ["7777", "8888", "9999"]
}]
关于android - 如何将联系人姓名和电话号码发送到MySQL数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225288/
以下是场景:我有一个可通过移动浏览器访问的网络应用程序。每当用户单击通过网络浏览器访问的应用程序页面中的链接时,我需要检测移动设备 IMEI 和 sim IMSI。这是为了跟踪具有相同 SIM 卡的同
场景如下:我有一个可通过移动浏览器访问的 Web 应用程序。每当用户单击可通过网络浏览器访问的我的应用程序页面中的链接时,我都需要检测移动设备的 IMEI 和 sim IMSI。这是为了跟踪具有相同
我需要在 Phonegap 为 Android 构建 HTML 移动 Web 应用程序中获取 IMEI 号码、手机号码、SIM 号码 最佳答案 你不能直接得到它们。 选项 1) 寻找一些插件,我不确定
我有一个输入框。它可能包含名称或数字。 如果输入至少有一个字母,我们将其作为名称处理,并且其长度应为 11 或更短。因此有效输入可能是 Bob、12Bob 或 Bob23。不允许有空格或其他字符,因此
我有这个要求:从客户表中 - 返回电话号码的前缀。我尝试使用字符串,将全名拆分为名字/姓氏,但它仅适用于数字。完整的nb格式为(258)1231456 最佳答案 SELECT '(258) 12314
我正在开发一个应用程序,用户必须使用手机键盘调用电话并输入验证号码。 我希望能够检测他们输入的数字是否正确。电话系统无法访问有效号码列表,但它会根据算法(如信用卡号码)验证号码。 以下是一些要求: 一
我有一张城市交通卡。我需要知道卡的援助(应用程序标识符)号码是多少。根据 EMV Book 1,我必须使用 List of AIDs 方法(第 141 页)。但是如何呢? 我还有一个 ACR122U
我想使用 javascript 分解数组中的 VIN,可能使用正则表达式,然后使用某种循环... 以下是读取 VIN 的方法: http://forum.cardekho.com/topic/600-
Here我找到了一个非常有用的答案,展示了如何使用 Whatsapp 从网站发送预填充的消息。 我们可以对 Telegram 做同样的事情吗? 最佳答案 您可以尝试使用以下方式打开 Telegram
我需要帮助完成这段代码,以便应用程序在收到推送通知时显示角标(Badge)编号,我可以收到推送通知,但应用程序上没有角标(Badge),这是代码 func application(_ applica
我正在使用 Twilio 进行入站调用,用户可以通过 Twilio-Number(从 Twilio 获得)调用应用程序并将被重定向到管理员。 现在,我们希望管理员使用相同的 Twilio 号码调用用户
C#/.NET 2.0 我需要解析一个字符串,其中包含街道名称和房屋编号的两个独立值。 in: "Streetname 1a" out: "streetname" "1a"
正如你们可能建议的那样,我正在创建一个带有语音命令的 SIRI。现在我确实想添加一个调用功能。例如我有这段代码: Intent call = new Intent(Intent.ACTION_DIAL
我想构建一个 android 应用程序,当设备第一次启动时,它会检测 IMEI 和其他设备信息,并检查是否有 SIM 卡。如果有 SIM 卡,它会发送短信包含特定号码的 IMEI 和其他设备信息。 我
我有这个对象: a = {"formData": { "total": "60.00", "tr0_RTN": "PZH", "tr0_amount": "10.00",
我正在制作一个测试工具,我有 imei 号码,但是否可以简单地或通过 NDK 更改 imei 号码。 谢谢 最佳答案 如何更改 IMEI 取决于硬件/系统,并且它是 - 至少在世界的(大部分)部分 -
我有一个表,其中有子项和父项,父项的 pid 为 0,子项的 pid 为父项的 id。我想选择父级及其子级数。 我的模型: function parent_child() {
抱歉,因为我从 android 开发跳到 IOS 开发,我想知道收到通知时是否有任何函数会触发?或者我应该如何处理通知? 这是我应用中的应用委托(delegate)。问题是每当收到消息时,如果应用程序
我正在开发应用程序,当它收到未接来电或来自手机的消息时自动发送消息。我的问题是当我从私有(private)号码收到未接来电或从私有(private)号码或服务器收到消息时(way2sms,160/2,
我想检查从联系人那里得到的电话号码是手机号码还是固定电话号码。我试过使用正则表达式,但一切都是徒劳的..任何帮助都将非常感激 最佳答案 要按手机号码和固定电话过滤联系人,您需要在数据库中有标准代码列表
我是一名优秀的程序员,十分优秀!