0
私の電話のすべての電話番号をJSONに変換して1つのポストでmysql dbにアップロードしようとしています。私は、今のAndroidの側面に焦点を当てています - PHPは後になります。あなたはlogcatでそれらのすべてを見ることができますbuttonCheck
ボタンをクリックすると、すべての後、私はまだ私alContacts
配列によって認識されていないメソッドsize
とlength
を読んだ -ArraylistをJSONに変換してMySQLに投稿するにはどうすればよいですか?
だから、私はすべての数字の配列リストを作ります。私はそれがJSON(?)に変換するために取るべきだと考えています。ここに私のコードは次のとおりです。
public class MainActivity extends AppCompatActivity {
// this is the php file name where to select from the database, the user's phone number
private static final String CHECKPHONENUMBER_URL = "http://www.example.com/myfile.php";
//we are posting phoneNo, which in PHP is phonenumber
public static final String KEY_PHONENUMBER = "phonenumber";
//alContacts is a list of all the phone numbers
public static final ArrayList<String> alContacts = new ArrayList<String>();
Button buttonCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonCheck = (Button) findViewById(R.id.buttonCheck);
//get the names and phone numbers of all contacts in phone book
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts._ID));
if (cur.getInt(cur.getColumnIndex(
ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
String phoneNo = pCur.getString(pCur.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
alContacts.add(phoneNo);
// break;
}
pCur.close();
}
}
}
buttonCheck.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
System.out.println("Print the contacts array : ");
System.out.println(alContacts);
CheckifUserisContact();
}
});
}
// send the numbers in one POST to the mySql db with Volley
private void CheckifUserisContact() {
StringRequest stringRequest = new StringRequest(Request.Method.POST, CHECKPHONENUMBER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.equals("failure")) {
Toast.makeText(MainActivity.this, "failed", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "succeeded", Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
}
}) {
//********* HAVING TROUBLE HERE *******************
// JSONObject jsonObject=new JSONObject();
JSONArray jsonArray = new JSONArray();
// jsonObject.put("alContacts",jsonArray);
//for(int i=0;i<=alContacts.size;i++){}
//*****************************************************
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put(KEY_PHONENUMBER, jsonArray.toString());
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
を助ける私はあなたのコードブロックが私の 'public void onR Response.ErrorListenerではなく、「応答」の部分です。今、素晴らしい作品、ありがとう! – CHarris
私の喜び:)....ベストプラクティスは、文字列/ JSONObjectリクエストを作成する前にJSONをビルドすることです。あなたのonResponseでは、あなたのconatct JSONデータがサーバーに送信された場合、サーバーからの応答JSONを取得します。 – FAT