检查权限时,无法将应用程序强制转换为android.app.Activity

时间:2018-06-18 14:23:51

标签: java android

我正在创建一个调用应用程序我为Recycler视图创建了一个适配器,请求CALL_PHONE显示错误

  

E / AndroidRuntime:FATAL EXCEPTION:main进程:in.welcomeyou.merchant,PID:14890 java.lang.ClassCastException:android.app.Application无法强制转换为android.app.Activity

@Override
public void onBindViewHolder(EnquiryViewHolder holder, int position) {
    Enquiry enquiry = enquiryList.get(position);
    holder.domainTextView.setText(enquiry.getDomain());
    holder.nameTextView.setText(enquiry.getName());
    holder.commentsTextView.setText(enquiry.getComments());
    holder.dateTextView.setText(enquiry.getDate());

    holder.callBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            if (ActivityCompat.checkSelfPermission(mCtx, CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

                ActivityCompat.requestPermissions(MainActivity.this,
                        new String[]{Manifest.permission.CALL_PHONE},
                        Constants.CALL_PHONE);
                return;
            }

            Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:123456"));
            mCtx.startActivity(intent);
        }

    });


}

2 个答案:

答案 0 :(得分:1)

请写下面的

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:123456"));
((YourActivityName)mContext).startActivity(intent);

答案 1 :(得分:1)

将上下文传递给此适配器的位置使用ActivityName.this或this。 也许现在你通过了

getApplicationContext();

您得到此异常是因为您无法将Application强制转换为Activity,因为Application不是Activity的子类。