java - 检查权限时应用程序无法转换为 android.app.Activity

标签 java android

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

E/AndroidRuntime: FATAL EXCEPTION: main Process: in.welcomeyou.merchant, PID: 14890 java.lang.ClassCastException: android.app.Application cannot be cast to 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);
        }

    });


}

最佳答案

将上下文传递给此适配器时,请使用 ActivityName.this 或 this 。 也许现在你已经通过了

getApplicationContext();

您会收到此异常,因为您无法将应用程序强制转换为 Activity ,因为应用程序不是 Activity 的子类。

关于java - 检查权限时应用程序无法转换为 android.app.Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50911655/

相关文章:

Java - 如何撤消 hashCode() 并读取为字符串?

android - 尽管 Gradle 可调试 : true in Android Studio,ndk-build 仍保持在 NDEBUG=1

Android 样式 : Difference between 'style="@android:style/XYZ "' and ' style ="?android:attr/XYZ"'?

java - JDBC 不返回结果集

java - JUnit:调用每个@Test 方法之前的新实例。有什么好处?

java - 在 save() 方法之后如何知道文档是否保存在 MongoDb 中?

java - JTextField 宽度

android如何从后台通知 Activity

java - 在android中正确处理onTouch和onClick事件

android - 如何在 Android 中通过蓝牙播放文本转语音?