I'm trying to implement code that sends an SMS by using the default SMS application but I'm getting null context and I don't understand why.
I already tried with getBaseContext(), getContext(), getApplicationContext with no success.
What am I doing wrong?
I'm testing this code on a Moto E5 Android 8.1 Go.
The code is inside of MainActivity.java
public void sendSMS(String msg)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat
{
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); //<---Line 107 --- Need to change the build to API 19
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, msg);
if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose
// any app that support this intent.
{
sendIntent.setPackage(defaultSmsPackageName);
}
startActivity(sendIntent);
}
else // For early versions, do what worked for you before.
{
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", SMSParameters.getTelefono(this));
smsIntent.putExtra("sms_body",msg);
startActivity(smsIntent);
}
}
Part of HomeFragment class
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_home, container, false);
final Button buttonAusente = view.findViewById(R.id.button_ausente);
buttonAusente.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
String message = null;
//enviarComando AUSENTE
//Line 70 below
message = MessageGenerator.getMessageAusente(_password, _id, SMSParameters.getSecuencia(getContext())); //<-- Line 70
new MainActivity().sendSMS(message);
}
});
final Button buttonDesactivar = view.findViewById(R.id.button_desactivar);
buttonDesactivar.setOnClickListener(new View.OnClickListener() {
public void onClick(View view)
{
String message = null;
//enviarComando DESACTIVAR
message = MessageGenerator.getMessageDesactivar(_password, _id, SMSParameters.getSecuencia(getContext()));
new MainActivity().sendSMS(message);
}
});
final Button buttonPresente = view.findViewById(R.id.button_presente);
buttonPresente.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
String message = null;
// enviarComando PRESENTE
message = MessageGenerator.getMessagePresente(_password, _id, SMSParameters.getSecuencia(getContext()));
new MainActivity().sendSMS(message);
}
});
final Button buttonPanico = view.findViewById(R.id.button_panico);
buttonPanico.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
String message = null;
// enviarComando(Comandos.PANICO);
message = MessageGenerator.getMessagePanico(_password, _id, SMSParameters.getSecuencia(getContext()));
new MainActivity().sendSMS(message);
}
});
setStatusIcon(getContext(), Comandos.AUSENTE, view);
setStatusIcon(getContext(), Comandos.DESACTIVAR, view);
setStatusIcon(getContext(), Comandos.PRESENTE, view);
setStatusIcon(getContext(), Comandos.PANICO, view);
saveViewStatus(view);
return view;
}