Ошибка при работе с сетью
Добавлено: 19 дек 2014, 15:08
Всем привет, в ходе разработки возникла такая проблема:
есть приложение отправляющее введенные строки на сервер(написан на java, находится на моем компе), так при тестировании на эмуляторе и телефоне подключенном к wifi все работает нормально, однако при подключении через 3G после отправки вылетает, то есть по нажатию кнопки "Отправить" крашится, в чем может быть проблема, логи в данный момент посмотреть не могу, так как данная проблема только на реальных устройствах, а ADB мой тел не видит и логи не показывает.
P.S. может быть проблема в манифесте?
для работы с сетью установил разрешение
Код приложения
Или может проблема в обработчике кнопки (ее код отдельно от остального кода)
есть приложение отправляющее введенные строки на сервер(написан на java, находится на моем компе), так при тестировании на эмуляторе и телефоне подключенном к wifi все работает нормально, однако при подключении через 3G после отправки вылетает, то есть по нажатию кнопки "Отправить" крашится, в чем может быть проблема, логи в данный момент посмотреть не могу, так как данная проблема только на реальных устройствах, а ADB мой тел не видит и логи не показывает.
P.S. может быть проблема в манифесте?
для работы с сетью установил разрешение
Код: Выделить всё
<uses-permission android:name="android.permission.INTERNET"></uses-permission>Код: Выделить всё
public class MainActivity extends ActionBarActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch(id){
case R.id.item_how:
Intent i = new Intent(MainActivity.this, About.class);
startActivity(i);
return true;
case R.id.item_share:
Intent intent = new Intent(MainActivity.this, Share.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
String title;
String content;
String value;
String title_content;
String titleInput;
String contentInput;
BufferedReader reader;
PrintWriter writer;
Socket sock;
Button btnSend;
EditText mEditText;
ListView lvMessage;
String messageInput, messageOutput;
ArrayList<String> messages;
ArrayList<String>contents = new ArrayList<String>(); //используется для хранении информации по каждому пункту списка
ArrayAdapter<String>adapter;
private static final String TAG = "myLog";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
messages = new ArrayList<String>();
lvMessage = (ListView)findViewById(R.id.lvMessage);
lvMessage.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Сообщение")
.setMessage(contents.get(position));
//кнопка закрытия окна просмотра сообщения
builder.setPositiveButton("ОК", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
//кнопка ответа в сообщении
builder.setNegativeButton("Ответить", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final String reply = "Ответ в теме: "+messages.get(position);
/*
* запускаем создание диалогового окна для ответного сообщения
*/
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle(reply);
final EditText input = new EditText(MainActivity.this);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
title = reply;
content = input.getText().toString();
dialog.cancel();
Thread thread = new Thread(new Runnable(){
//указываем какие потоки запускать
@Override
public void run() {
try{
runOnUiThread(send);
}catch(Exception e){
e.printStackTrace();
}
}
});
thread.start();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
AlertDialog alert = builder.create();
alert.show();
Log.e(TAG, "id пункта списка "+position);
}
});
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, messages);
lvMessage.setAdapter(adapter);
mEditText = (EditText)findViewById(R.id.editText1);
btnSend = (Button)findViewById(R.id.button1);
new NetWork().execute();
btnSend.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
content = mEditText.getText().toString();
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Введите тему сообщения");
final EditText input = new EditText(MainActivity.this);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
title = input.getText().toString();
dialog.cancel();
Thread thread = new Thread(new Runnable(){
//указываем какие потоки запускать
@Override
public void run() {
try{
runOnUiThread(send);
}catch(Exception e){
e.printStackTrace();
}
}
});
thread.start();
}
});
AlertDialog alert = builder.create();
alert.show();
new OutputReaderThread().start();
mEditText.setText("");
}
});
}
Runnable send = new Runnable(){
@Override
public void run() {
title_content = content + " / "+title;
try{
writer.println(title_content);
writer.flush();
Log.e(TAG, "Сообщение отправленно");
}catch(Exception e){
e.printStackTrace();
Log.e(TAG, "Сообщение не отправлено метод выдал исключение");
}
}
};
Код: Выделить всё
@Override
public void onClick(View v) {
content = mEditText.getText().toString();
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Введите тему сообщения");
final EditText input = new EditText(MainActivity.this);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
title = input.getText().toString();
dialog.cancel();
Thread thread = new Thread(new Runnable(){
//указываем какие потоки запускать
@Override
public void run() {
try{
runOnUiThread(send);
}catch(Exception e){
e.printStackTrace();
}
}
});
thread.start();
}
});
AlertDialog alert = builder.create();
alert.show();
new OutputReaderThread().start();
mEditText.setText("");
}