Что я хочу сделать: Я хочу открыть номеронабиратель с номером телефона, который есть в списке.
В чем проблема: До увольнения Intent.ACTION_CALL
Намеренно, мне нужно спросить разрешения, кажется, onRequestPermissionsResult
не вызывается.
То, что я пытался: Ниже приведен мой код.
ApplicantsDataAdapter.java
public class ApplicantsDataAdapter extends RecyclerView.Adapter<ApplicantsDataAdapter.ApplicantsViewHolder>
implements
ActivityCompat.OnRequestPermissionsResultCallback {
private static final int REQUEST_CODE = 100;
private Context mContext;
private String mMobileNum;
private List<DashboardStatusBean> mDataList;
private OnApplicantItemClickListener mListener;
public ApplicantsDataAdapter(Context context, List<DashboardStatusBean> dataList, OnApplicantItemClickListener listener) {
mListener = listener;
mContext = context;
mDataList = dataList;
}
@Override
public ApplicantsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_applicant_new, parent, false);
return new ApplicantsViewHolder(itemView);
}
@Override
public void onBindViewHolder(ApplicantsViewHolder holder, int position) {
holder.bindView(position);
holder.mCardView.setOnClickListener(v -> mListener.onApplicantSelected(position));
}
@Override
public int getItemCount() {
return mDataList.size();
}
public interface OnApplicantItemClickListener {
void onApplicantSelected(int position);
}
public class ApplicantsViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.cv_item)
CardView mCardView;
@BindView(R.id.tv_item_applicant_status)
TextView mApplicantStatusTextView;
@BindView(R.id.tv_item_applicant_mobile)
TextView mApplicantMobileNumber;
@BindView(R.id.iv_call)
ImageView mCallImage;
ApplicantsViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
void bindView(int position) {
mApplicantStatusTextView.setText(mDataList.get(position).getStatus());
mApplicantMobileNumber.setText(mDataList.get(position).getMobileNumber());
mCallImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mMobileNum = mDataList.get(position).getMobileNumber().substring(2);
Log.e("click", "mob: " + mMobileNum);
phoneIntent();
}
});
}
}
private void phoneIntent() {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + mMobileNum));
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions((AppCompatActivity) mContext,
new String[]{Manifest.permission.CALL_PHONE}, REQUEST_CODE);
return;
}
mContext.startActivity(callIntent);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
Log.e("click", "onRequestPermissionsResult");
switch (requestCode) {
case REQUEST_CODE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.e("click", "PERMISSION_GRANTED");
phoneIntent();
} else {
Log.e("click", "NOT PERMISSION_GRANTED");
Toast.makeText(mContext, "Call Permission Not Granted!", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
PS: я трижды проверил, добавил ли я разрешение <uses-permission android:name="android.permission.CALL_PHONE" />
в файл манифеста.
Буду признателен за любую помощь.