0

我正在处理通知,所以我想在调用 oncreate 方法时在启动应用程序中创建通道。所以当我在应用程序类的应用程序标签中添加应用程序类的名称时。当我删除它运行良好。当人们进入该区域时,我正在使用地理围栏通知,它将生成通知。

如果可以,请你帮助我..

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.googlemap">

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SplashscreenActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Notification.NotificationActivity"></activity>
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"></activity>
        <service android:name=".service.GeofenceTrasitionService" />
    </application>

</manifest>

'''

申请文件

package com.example.googlemap;

import android.app.Application;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Build;

public class App extends Application{

    public static final String CHANNEL_1_ID = "channel1";
    public static final String CHANNEL_2_ID = "channel2";
    @Override
    public void onCreate() {
        super.onCreate();
        createChannels();
    }

    private void createChannels() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            NotificationChannel channel1 = new NotificationChannel(
                    CHANNEL_1_ID,
                    "Channel 1",
                    NotificationManager.IMPORTANCE_HIGH);
            channel1.setDescription("This is channel 1");

            NotificationChannel channel2 = new NotificationChannel(
                    CHANNEL_2_ID,
                    "Channel 2",
                    NotificationManager.IMPORTANCE_LOW);
            channel2.setDescription("This is channel 2");

            NotificationManager manager = getSystemService(NotificationManager.class);
            manager.createNotificationChannel(channel1);
            manager.createNotificationChannel(channel2);
        }
    }
}

错误

07-18 16:08:39.937 3147-3147/com.example.googlemap E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.googlemap, PID: 3147
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.googlemap/com.example.googlemap.SplashscreenActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.googlemap.SplashscreenActivity" on path: DexPathList[[zip file "/data/app/com.example.googlemap-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.googlemap-2, /system/lib]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2119)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2243)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5019)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.googlemap.SplashscreenActivity" on path: DexPathList[[zip file "/data/app/com.example.googlemap-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.googlemap-2, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
4

2 回答 2

0

我认为问题出在SplashscreenActivity

当您在清单中启动 Activity 时定义SplashscreenActivity但没有找到该类。

请检查 ** SplashscreenActivity** 是否存在。

于 2019-07-18T11:45:00.240 回答
0

我通过在应用程序类中添加这个函数来删除这个错误。我试过了,幸运的是它运行良好......

@Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
于 2019-07-18T11:45:50.497 回答