Всем привет. Есть магазин по продаже ICQ номеров разной длины. Суть в том, что бы пользователь андроида QR кодом скачивал приложение, нажимал на кнопку, которая отправляет смс и взамен получает UIN и пароль. Проблема в том, что номер, на который отправляется смс, так же текст сообщения находятся в 2х текстовых файлах на удалённом сервере. Это сделано мне для удобства. Вот предоставляю код, который активити моего приложения, но он почему то не работает. Если присвоить значения строкам номера и сообщения, то всё прекрасно работает, но вот считывать из файлов эти значения не хочет. в тоаст значения хорошо выводятся, но этот метод мне не подошёл. Полный код активити | Код | package ru.example.uinpass;
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.net.URLConnection; import java.nio.charset.Charset;
import ru.example.uinpass.R; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import android.content.BroadcastReceiver; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo;
public class MainActivity extends Activity {
Button btnSend; @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_main);
final Button btnSend = (Button)this.findViewById(R.id.btnSend); btnSend.setOnClickListener(new View.OnClickListener() { public void onClick(final View v) { new Thread(new Runnable() { @Override public void run() { try { final URL myURL = new URL("http://адрес-сайта.ру/number.txt"); final URLConnection connection = myURL.openConnection(); connection.setDoInput(true); final Reader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")));
final URL myURL2 = new URL("http://адрес-сайта.ру/message.txt"); final URLConnection connection2 = myURL2.openConnection(); connection2.setDoInput(true); final Reader reader2 = new BufferedReader(new InputStreamReader(connection2.getInputStream(), Charset.forName("UTF-8"))); try { final char [] buffer1 = new char[1024]; final StringBuilder msg = new StringBuilder(); final char [] buffer2 = new char[1024]; final StringBuilder msg2 = new StringBuilder(); int readCount; do { readCount = reader.read(buffer1); msg.append(buffer1); } while ( readCount >= buffer1.length);
int readCount2; do { readCount2 = reader2.read(buffer2); msg2.append(buffer2); } while (readCount2 >= buffer2.length); MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() {
String phoneNumber = new String(msg); String message = new String(msg2); Send(phoneNumber, message);
} });
} catch (final IOException ex) { Log.d("IOException", ex.getMessage()); } finally { reader.close(); reader2.close(); } } catch (final Exception ex) { Log.d("Some exception", ex.getMessage()); } } }).start();
} });
}
private void Send(String phoneNumber, String message) { { String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "Ваш запрос отправляется", Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(), "Ошибка отправки", Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(), "Ошибка отправки, попробуйте позднее", Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(), "Ошибка отправки, попробуйте позднее", Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(), "Ошибка отправки, попробуйте позднее", Toast.LENGTH_LONG).show(); break; } } }, new IntentFilter(SENT)); registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "Спасибо! Смотрите UIN и пароль во входящем смс!", Toast.LENGTH_LONG).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getBaseContext(), "Ошибка доставки", Toast.LENGTH_LONG).show(); break; } } }, new IntentFilter(DELIVERED)); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); } } }
|
Конечно, в манифесте отправку и приём смс, а так же доступ в интернет разрешил. Прошу подробно рассказать новичку, в чём проблема.
|