无法解析符号ActivityCompat

3

无法解决符号“ActivityCompat” 我正在尝试通过我的应用程序发送短信。 我已经在AndroidManifest.xml中添加了使用权限

ActivityCompat没有解决,请帮助我。

编译Sdk版本为25

    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, message, null, null);
        if (ContextCompat.checkSelfPermission(sendSMS2.this, Manifest.permission.SEND_SMS)
                != PackageManager.PERMISSION_GRANTED) {
            // Permission is not granted
            // Ask for permision
            ActivityCompat.requestPermissions(this,new String[] { Manifest.permission.SEND_SMS}, 1);
        }

这是 build.gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.0'

    defaultConfig {
        applicationId "com.example.somme.testproj2"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:design:25.0.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:appcompat-v7:+'

}

发布您的Gradle文件。 - pixelatedCat
发布您的应用程序 build.gradle 依赖项。 - Bek
我该如何发布? - Faraz Naeem
like above copy and past - Bek
请检查更新后的帖子。 - Faraz Naeem
3个回答

16

如果有人在转移到AndroidX之后来到这里,导入

androidx.core.app.ActivityCompat;

代替,而非

android.support.v4.app.ActivityCompat;

如果您对哪个新的androidx类替换旧的support库类感到困惑,请参考 androidx迁移类映射,然后搜索您想要替换的类,并将其替换为相应的androidx类。

附言:我知道这并没有直接回答这个问题。只是留在这里给其他因为标题而来到这里的人。


我应该用什么替换 import android.support.v7.app.AppCompatActivity - SeanMC
1
@SeanMC.. 你可以导入这个 - androidx.appcompat.app.AppCompatActivity。 - Derryl Thomas
一般情况下,当你感到困惑时,可以参考我更新的答案中指定的类映射链接 :) - Derryl Thomas
谢谢。我的 Capacitor 问题通过删除 node_modules 文件夹并执行 npm install 解决了。然后所有的类映射都被应用了。不确定,可能是 jetifier 的问题。 - SeanMC

1

在build.gradle中添加了上述库后,仍然找不到com.android.support:collections:28.0.0-alpha3。 - Faraz Naeem
你需要将它与你的所有其他支持库保持一致,因此在导入特定版本时,应将“+”替换为“25.0.0”。 - karan
在添加依赖项后,您是否尝试清理并构建项目? - karan
我还想发送带有4位数字的消息,这意味着收件人将从4位数字接收消息。这怎么可能实现? - Faraz Naeem
你需要将这段代码移到else部分:SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNo, null, message, null, null); - karan
我的应用程序默认具有发送短信的权限,因此在此代码块中我不需要使用IF ELSE。 - Faraz Naeem

1
尝试使用这个,
compile 'com.android.support:support-compat:25.0.0'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接