Dei uma olhada no código e a solicitação de permissão esta ok
Lembro que o Jeferson demonstra o uso do método onRequestPermissionsResult() para verificar se o usuário permitiu ou não o uso do recurso (mas que não utilizou durante a aula)
Seguindo oque esta no código
toda ligação que você tentar fazer, será verificada a permissão e
Caso o usuário já tenha dado a permissão, a "tela de ligação" será chamada.
Caso o usuário ainda não tenha dado a permissão, ou tenha negado/removido, a permissão será solicitada.
Oque esta acontecendo é , como você não sobrescreveu o método onRequestPermissionsResult(), após o usuário permitir o uso do recurso, nada vai acontecer, pois no momento não existe uma ação definida para isto.
Solução 1
Você pode tentar fazer a ligação, mais uma vez após ter dado a permissão (isto vai funciona durante a aula)
Solução 2
Você pode sobrescrever o método onRequestPermissionsResult() da seguinte forma:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 123:
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent intentLigar = new Intent(Intent.ACTION_CALL);
intentLigar.setData(Uri.parse("tel:" + aluno.getTelefone()));
startActivity(intentLigar);
}
} else {
Toast.makeText(ListaAlunosActivity.this,
"A permissão é necessária",
Toast.LENGTH_LONG).show();
}
break;
}
}
Após isto, você vai precisar criar uma variável membro para ter acesso ao aluno dentro do método onRequestPermissionsResult, neste caso chamei a variável de aluno
public class ListaAlunosActivity extends AppCompatActivity {
private ListView listaAlunos;
private Aluno aluno;
// Restante da classe
}
E precisa atribuir o usuário selecionado a esta variável membro
Como você deve fazer:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, final ContextMenu.ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
aluno = (Aluno) listaAlunos.getItemAtPosition(info.position);
//Restante do método que você já tem
}
Esta é uma forma de resolver seu problema, e só estou te explicando para conhecimento. Seguindo os cursos, você vai aprender com mais detalhes como funciona a solicitação de permissões no android.
Espero ter conseguido te ajudar