我正在尝试从 Google Firebase 向我的应用推送通知。但是在我的 AndroidManifest.xml 文件中,问题似乎出在
<service
android:name=".MapsActivity">
因为相同的名字出现在我得到错误
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
从教程来看,应该是这样的
android:name=".MyFirebaseMessagingService">
但我正在更改它,因为在我的 MainActivity.java 类中是
public class MapsActivity extends AppCompatActivity
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_stat_ic_notification" />
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorAccent" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".MapsActivity">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".MapsActivity">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
</application>
</manifest>
build.gradle
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.google.android.gms:play-services:9.8.0'
}
apply plugin: 'com.google.gms.google-services'
你们知道如何解决这个问题吗?
最佳答案
这部分代码是问题所在:
<service
android:name=".MapsActivity">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".MapsActivity">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
为什么?服务不能是 Activity ,也不能同名。这两个服务扩展了不同的服务,那么您需要一个类来扩展第一个服务,另一个类来扩展第二个服务,如示例所示:
MyFirebaseInstanceIDService:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService
{
...
}
MyFirebaseMessagingService:
public class MyFirebaseMessagingService extends FirebaseMessagingService
{
...
}
然后您的 list 将如下所示:
<service
android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
对于另一部分,请记住,您有 2 个 gradle(应用程序和项目)。要查看两者,在项目部分需要选择项目 View 。
app.gradle:
apply plugin: 'com.android.application'
android {
// ...
}
dependencies {
// ...
compile 'com.google.firebase:firebase-messaging:9.6.1'
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
和project.gradle:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
让我知道我是否对您有所帮助以及您的编程有帮助!
关于android - Firebase - 无法解析符号 'MyFirebaseMessagingService',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167363/