アプリで作業していて、奇妙なエラーが発生しています。これまでにアプリのテストに使用された 3 台のデバイスのうち 2 台は、ログイン ボタンがタップされて新しいアクティビティが開始されると、完全に機能します。動作する 2 台の電話は両方とも Ice Cream Sandwhich で動作し、3 台目の電話 (私に問題を引き起こしている電話) は JellyBean で動作しています。
JellyBean フォンを使用してログイン ボタンをタップすると、次のようになります。
Java (登録ページ)
// Register button
TextView main_body_register_button = new TextView(this);
main_body_register_button.setBackgroundResource(R.drawable.register_btn);
main_body_register_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Post to the MySQL database
class sendtask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... url) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://website.com/register.php");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("number", ""+main_body_phone_input.getText().toString()));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
httpClient.execute(httpPost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
protected void onPostExecute(String result) {
if (main_body_phone_input.getText().toString().compareTo("012-345-6789")==0) {
// Phone number: Empty
Intent base_account_register = new Intent(base_account_register.this,base_account_register.class);
startActivity(base_account_register);
} else if (main_body_phone_input.getText().toString().compareTo("012-345-6789")!=0) {
// Switch to main page
Intent TellATextActivity = new Intent(base_account_register.this,TellATextActivity.class);
ownAddress = ""+main_body_phone_input.getText().toString();
startActivity(TellATextActivity);
}
}
}
new sendtask().execute("Registration form");
// End
}
});
// END
Java (OnCreate TellATextActivity)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Global variables
Bundle bundle = getIntent().getExtras();
final String ownAddress = bundle.getString("session_number");
// MAIN
TextView main_message = new TextView(this);
// Select and parse the most recent message
Uri uriSMS = Uri.parse("content://sms/");
Cursor cur = getContentResolver().query(uriSMS, null, null, null, null);
// EDIT IN
if (cur != null && cur.moveToFirst()) {
do {
// Inflate your data
} while (cur.moveToNext());
}
cur.close()
// END
// EDIT OUT
cur.moveToNext();
cur.moveToNext();
// END
String body = cur.getString(cur.getColumnIndex("body"));
String add = cur.getString(cur.getColumnIndex("address"));
reply_address = "" +add;
String time = cur.getString(cur.getColumnIndex("date"));
String protocol = cur.getString(cur.getColumnIndex("protocol"));
String contactName = "";
Uri personUri = Uri.withAppendedPath( ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(add));
Cursor c = getContentResolver().query(personUri, new String[] { PhoneLookup.DISPLAY_NAME }, null, null, null );
if( c.moveToFirst() ) {
int nameIndex = c.getColumnIndex(PhoneLookup.DISPLAY_NAME);
contactName = c.getString(nameIndex);
}
c.close();
cur.close();
String out = "";
Date d = new Date(Long.valueOf(time));
// End
// Determine status of message
if (protocol == null)
out = ""+body;
else
out = ""+body;
// End
// Create output
main_message.setHeight(400);
main_message.setWidth(510);
main_message.setPadding(10,15,10,0);
main_message.setTextSize(23);
main_message.setTextColor(Color.rgb(100,100,100));
main_message.setText(out);
// End
// END
TextView bottom_reply = new TextView(this);
bottom_reply.setBackgroundResource(R.drawable.reply);
bottom_reply.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Compose a reply
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" +reply_address));
intent.putExtra("compose_mode", true);
startActivity(intent);
}
});
// END
}
AndroidManifest.xml
<activity
android:name=".TellATextActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android-dir/mms-sms" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
クラッシュレポート
java.lang.RuntimeException: Unable to start activity
ComponentInfo{tellatext.sms.app/tellatext.sms.app.TellATextActivity}:
android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2083)
at android.app.ActivityThread.access$600(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4697)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:407)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
at android.database.CursorWrapper.getString(CursorWrapper.java:114)
at tellatext.sms.app.TellATextActivity.onCreate(TellATextActivity.java:82)
at android.app.Activity.performCreate(Activity.java:4539)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2013)
... 11 more
ここで誰かが私を正しい方向に向けることができますか? 私はすべての選択肢を使い果たしました。この問題について他の誰かの視点が必要です。
ありがとうございました。