Я работаю над функцией SMS для андроида, и я могу отправить местоположение и адрес пользователей через sms ограниченному числу контактов в качестве своего требования к моим приложениям, теперь я хочу реализовать Прогресс поэтому, когда пользователи нажимают кнопку отправки, должен появляться диалог выполнения и после отправки смс всем контактам диалог прогресса должен исчезнуть.
Я искал alot для этого, но это заставляло меня очень смущать, как это сделать для моего приложения, потому что я новичок в android!Прогресс Диалог для AsyncTask Реализация при отправке нескольких смс
может кто-нибудь, пожалуйста, помогите мне о том, как реализовать onPreExecute(), onPostExecute() и doInBackground() методы в моем классе, здесь я в том числе мой Java-класс для отправки смс.
package com.example.ghaznavi.myapp;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.telephony.SmsManager;
import android.util.Log;
import android.widget.Toast;
import android.content.IntentFilter;
public class SmsHandler{
Settings setObj=new Settings();
double latitude,longitude;
public SmsHandler() {
}
public void SendSms(final Context hcontext)
{
GPSService mGPSService = new GPSService(hcontext);
LocationAddress locObj=new LocationAddress();
mGPSService.getLocation();
latitude = mGPSService.getLatitude();
longitude = mGPSService.getLongitude();
StringBuilder sb = new StringBuilder(160);
String addd= locObj.getAddressFromLocation(latitude,longitude,hcontext);
sb.append("Hi, I m in trouble, Please Help!\n\n");
if ((latitude != 0.0) && (longitude!= 0.0)) {
sb.append("Map Link:").append("\n").append("https://maps.google.com/maps?q=").append(latitude).append("%2C").append(longitude).append("\n\n");
}
if (addd != null) {
sb.append("Address: ").append(addd).append("\n\n");
}
sb.append("- My Application");
setObj.Initialize(hcontext);
if (setObj.GetContactListCount()!=0)
{
for(int i=0;i<setObj.GetContactListCount();i++)
{
try
{
String SENT = "SMS_SENT";
PendingIntent sentPI = PendingIntent.getBroadcast(hcontext, 0, new Intent(
SENT), 0);
BroadcastReceiver sendSMS = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(hcontext, "SMS sent Successfully",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(hcontext, "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(hcontext, "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(hcontext, "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(hcontext, "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
};
SmsManager localSmsManager = SmsManager.getDefault();
if (sb.toString().length() <= 160) {
hcontext.registerReceiver(sendSMS, new IntentFilter(SENT));
localSmsManager.sendTextMessage(setObj.GetContactListNumber()[i], null, sb.toString(), sentPI, null);
} else {
hcontext.registerReceiver(sendSMS, new IntentFilter(SENT));
localSmsManager.sendTextMessage(setObj.GetContactListNumber()[i], null, sb.toString().substring(0, 159),sentPI, null);
localSmsManager.sendTextMessage(setObj.GetContactListNumber()[i], null, sb.toString().substring(160),sentPI, null);
}
}
catch (SecurityException localSecurityException)
{
Log.e("Error", "Security Exception, SMS permission denied");
return;
}
}
}
else
{
Toast.makeText(hcontext,"please select a number",Toast.LENGTH_SHORT).show();
}
}
}
Любая помощь будет высоко ценится, спасибо заранее!
Взгляните на [эту асинхронную задачу] (https://github.com/selcukcihan/tahlil/blob/master/app/src/main/java/com/selcukcihan/android/tahlil/HttpPerformingTask.java), которая выполняет HTTP-запрос. Вы в основном создаете класс, расширяющий 'AsyncTask', а затем в' onPreExecute' вы создадите диалог прогресса, который вы должны «уволить» в обработчике 'onPostExecute'. 'AsyncTask' вызовет ваш' SmsHandler' внутри 'doInBackground'. –