Web上のPHPプログラムによるユーザーの友人データベースの更新がうまくいかず四苦八苦して 何とかうまく動作しました。たぶん、POSTのデータの処理のarray_spliceの前後がおかしかったと思います。 下記が最新版です。 ユーザーが友人登録した場合、すでに登録済みのデータは配列から削除、新規データを挿入という手順になります。 =0;$i--){//完全にミスでした。削除するときは逆回転ですね。お恥ずかしい次第で foreach($aa as $data_1){ $aaaa=explode("<>",$data_1); if(ereg(".*".$_POST["key"]."<>".$aaaa[0].".*",$lines[$i])||ereg(".*".$_POST["key"]."<>".$_POST["key"].".*",$lines[$i])){ array_splice($lines,$i,1); } } } foreach($aa as $data_1){ $data_count++; $aaaa=explode("<>",$data_1); $data_10=$data_count."<>".$date_in ." ".$time_in."<>".$_POST["key"]."<>".$aaaa[0]."\r\n"; array_unshift($lines,$data_10); } $ff_data=$data_count."<>".$date_in ." ".$time_in."<>".$_POST["key"]."<>".$_POST["key"]."<>".$_POST["score"]."\r\n"; array_unshift($lines,$ff_data); $ff=fopen("smartphone_data.dat","w"); for($j=0;$j",$aa[$i]); echo "TO::".$aaa[1]."\r\n"; } ?> InfoActivityも変更したような、しないような??三日間程あがいていましたので。念のため最新版を 次に記載しておきます。 package kureishi.example.nationaldefence; import java.io.*; import java.util.*; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.util.SparseBooleanArray; import android.widget.Toast; import kureishi.example.nationaldefence.DatabaseHelper; import android.database.sqlite.SQLiteDatabase; public class InfoActivity extends Activity { public String[] listSample; public ArrayList mail =new ArrayList(); public String[] nickName; public String[] nickName_1; public String[] mailList_1; public ArrayList nick =new ArrayList(); public StringBuilder sb= new StringBuilder(); public String[] listSample_1; public String[] listSample_1_1; private ListView listView; private TextView text; public String URL_PAGE= "http://upupup.kir.jp/test/test.php"; String str=""; public String mailAddress; public String mailAddress_1; private DatabaseHelper mDbHelper; private SQLiteDatabase mDb; public Cursor c; public String str_max_point; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.info); Intent intent=getIntent(); mailAddress=intent.getStringExtra("mailAddress"); if(mailAddress.length()>8 ){ mailAddress_1="発信::"+mailAddress; text=(TextView)findViewById(R.id.textView5); text.setText(mailAddress_1); }else{ return; } //ユーザーが登録している友人のデータを取得する(mailとnick) ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); while(cursor.moveToNext()){ String contactsId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String contactsMail = ""; String contactsName = ""; Cursor cMail = resolver.query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ? ", new String[]{contactsId}, null); while(cMail.moveToNext()) { contactsMail = cMail.getString(cMail.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA1)); contactsName = cMail.getString(cMail.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); mail.add(contactsMail); nick.add(contactsName); } cMail.close(); } //mailとnickをString[]型に(listSampleとnickName) listSample=new String[mail.size()-1]; for(int i=0;i"+nickName[i]; } //登録している友人のデータの一覧を表示、複数選択可 listView = (ListView)findViewById(R.id.ListView10); // アダプタの作成 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice,nickName); listView.setAdapter(adapter); int max_score=getMaxPoint(); str_max_point=String.valueOf(max_score); // mDb.close(); //getFriend(); // } public void onClickSend(View v){ SparseBooleanArray checked = listView.getCheckedItemPositions(); //チェックした友人のデータを取得しています //int j=0; for (int i = 0; i < checked.size(); i++) { if(checked.valueAt(i)){ int key = checked.keyAt(i); //sb.append("POSITION:"+checked.keyAt(i)+" "+"VALUE:"+listSample_1[key]+"\n"); str=str+listSample_1[key]+","; //listSample_1_1[j]=listSample_1[key]; //j++; } } //Toast.makeText(getApplicationContext(), sb, Toast.LENGTH_SHORT).show(); //if(str!=""){ getFriend();//SQLiteにデータ保存 exec_post();//に接続 //}else{ //Toast.makeText(getApplicationContext(),"友人リストを選択して下さい", Toast.LENGTH_SHORT).show(); //return; //} } private void exec_post() { // 非同期タスクを定義 HPostTask task = new HPostTask( this, URL_PAGE, // タスク完了時に呼ばれるUIのハンドラ new PHandler(){ @Override public void onPostCompleted(String response) { // 受信結果をTextView5に表示 text.setText( response ); } @Override public void onPostFailed(String response) { text.setText( response ); } } ); //本人メールアドレス task.addPostParam( "key",mailAddress); //友人のメールアドレス task.addPostParam( "value", str); // task.addPostParam( "value", "aaa@ccc,ggg@ppp"); // 最高得点 task.addPostParam( "score", str_max_point); //task.addPostParam( "score", "2345"); // 実行 task.execute(); } public int getMaxPoint(){ mDbHelper =new DatabaseHelper(this); if(mDb==null){ mDb=mDbHelper.getWritableDatabase(); } //データの読み込み c=fetchAll(); c.moveToFirst(); int ii=c.getCount(); int max_point=0; for(int i=0;i=0){ if(max_point"); mailList_1[i+1]=str_1[0]; nickName_1[i+1]=str_1[1]; } //入力されているデータを一旦削除 mDb.delete(DatabaseHelper.TABLE_NAME_1, null, null); //SQLiteにデータ保存 ContentValues values; for(int i=0;i adapter; private TextView text; public String[] mail_nick; public ArrayList res; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.friend); //SQLiteデータベース接続 mDbHelper =new DatabaseHelper(this); mDb=mDbHelper.getWritableDatabase(); //データの読み込み c=fetchAll(); startManagingCursor(c); c.moveToFirst(); int ii=c.getCount(); mail_list=new String[ii]; nickName=new String[ii]; for(int i=0;i=0&&cl>=0){ mail_list[i]=c.getString(col); nickName[i]=c.getString(cl); } c.moveToNext();//ポインタの移動これが無いと駄目 } mDb.close(); mail_nick=new String[nickName.length]; for(int i=0;i"+friend_mail_list; } exec_post(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.defence, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void onClickGameStart(View v){ //Intent intent=new Intent(FriendActivity.this,NationalDefenceActivity.class); //startActivity(intent); } public void onClickShowMyPoint(View v){ Intent intent=new Intent(FriendActivity.this,RecordActivity.class); startActivity(intent); } public void onClickInfoFriends(View v){ Intent intent=new Intent(FriendActivity.this,TourokuActivity.class); startActivity(intent); } private Cursor fetchAll(){ String[] cols={"_id","_mail","_nickname"}; return mDb.query(DatabaseHelper.TABLE_NAME_1,cols,null,null,null,null,"_id"); } @Override protected void onPause(){ super.onPause(); if(mDb!=null){ mDb.close(); } View v=this.getCurrentFocus(); returnTodo(v); } public void returnTodo(View v){ Intent intent=new Intent(FriendActivity.this,DefenceActivity.class); if(mDb!=null){ mDb.close(); } startActivity(intent); } private void exec_post() { // 非同期タスクを定義 HPostTask task = new HPostTask( this, URL_PAGE, // タスク完了時に呼ばれるUIのハンドラ new PHandler(){ @Override public void onPostCompleted(String response) { //受信データが","つなぎで送られてくるのでそれを分割 String[] data_echo=response.split(","); String data_echo_2=""; String[] data_echo_list=new String[2]; String[] mn=new String[2]; //ここは難しい for(int i=0;i"+data_echo_list[1]+"\n"+data_echo_2; } } } // 受信結果を処理しTextView5に表示 text.setText(data_echo_2); } @Override public void onPostFailed(String response) { //text.setText( response ); } } ); //本人メールアドレスをWebに送信PHPファイルが受け取る task.addPostParam( "key",mailAddress); //友人のメールアドレスをWebに送信PHPファイルが受け取る task.addPostParam( "value", friend_mail_list); // 最高得点をWebに送信PHPファイルが受け取る task.addPostParam( "score", str_max_point); // 実行 task.execute(); } } frind.xmlファイルを次に示します。ListViewは不要かも。