android studio implementation包时报错

踩坑初始

使用组件

我在写android studio的实验时想实现点击按钮出现通知,就去android中文官网文档中寻找,官网中的介绍是这样的:
在用户未使用您的应用时,通知可向他们及时提供有关应用事件的简短信息。本页面向您介绍如何针对 Android 4.0(API 级别 14)及更高版本创建具备各种功能的通知。

添加支持库

虽然使用 Android Studio 创建的大部分项目包含使用 NotificationCompat 所必需的依赖项,但您还是应该验证模块级 build.gradle 文件是否包含以下依赖项:

dependencies {
        implementation "com.android.support:support-compat:28.0.0"
    }

添加组件的java代码

首先,您需要使用 NotificationCompat.Builder 对象设置通知内容和渠道。以下示例显示了如何创建包含下列内容的通知:

小图标,通过 setSmallIcon() 设置。这是所必需的唯一用户可见内容。
标题,通过 setContentTitle() 设置。
正文文本,通过 setContentText() 设置。
通知优先级,通过 setPriority() 设置。优先级确定通知在 Android 7.1 和更低版本上的干扰程度。(对于 Android 8.0 和更高版本,必须设置渠道重要性,如下一节中所示。)
当时我的android 版本是API 33,按照文档所说设置了java函数

    public void notify(View view) {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this,CHANNEL_ID)
                .setSmallIcon(R.drawable.xiaocao)
                .setContentTitle("小草神通知您")
                .setContentText("用于安卓课的报告")
                .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    }

然后发现CHANNEL_ID报错,查询了一下发现这个是自己设置的,不影响使用就加随便添加了一个String类型。
接下来在layout新增一个按钮,用来触发事件

    <Button
        android:id="@+id/button2"
        android:layout_width="273dp"
        android:layout_height="51dp"
        android:text="Button"
        android:onClick="notify"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    }

进行编译

点击一下左上角的锤子,进行编译

发现天坑

编译时发现

dependencies {
        implementation "com.android.support:support-compat:28.0.0"
    }

爆红,观察错误提示的解决方法,将下列代码添加到gradle.properties

android.enableJetifier=true

重新编译,发现依然爆红,但是爆错消失了

接下来点击运行,发现运行失败

解决天坑

java代码

开始研究是否是java里的代码不匹配当前版本,于是重新写java

//        获得对象
        NotificationManager notificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//        创建一个构造类
        Notification.Builder builder=new Notification.Builder(this);
//        设置通知内容
        builder.setContentTitle("小草神通知您");
        builder.setContentText("用于安卓课的报告");
        builder.setSmallIcon(R.drawable.xiaocao);
        builder.setPriority(Notification.PRIORITY_DEFAULT);
//        创建,发送通知
        Notification notification=builder.build();
        notificationManager.notify(0,notification);

这个是跳过了CHANNEL_ID,以及.setPriority(NotificationCompat.PRIORITY_DEFAULT);
发现依然不行,于是开始研究是否是导包不行

寻求帮助

于是在老师的帮助之下,发现是这两个在打架

dependencies {
    	implementation 'androidx.appcompat:appcompat:1.3.0'
        implementation "com.android.support:support-compat:28.0.0"
    }

在网络上查找包的替代,可以与下列匹配不冲突

dependencies {
    		implementation 'androidx.appcompat:appcompat:1.3.0'
        	//implementation "com.android.support:support-compat:28.0.0"
            implementation "androidx.core:core:1.0.0"
    }

重新编译,发现版本不匹配,于是开始研究匹配的版本
网络上查找到以下版本

dependencies {
            implementation "androidx.core:core:1.0.0-alpha02"
    }

然后还是不行,根据编译器自带的提示,修改成

dependencies {
            implementation "androidx.core:core:1.7.0-alpha01"
    }

发现没有报错并且可以编译成功

结束语

此次处理成功绝大部分因为版本较少,比较好找,如果版本较多需要一个一个下,比较痛苦

刘星宇 本文连接

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值