我正在尝试从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'
你们有任何想法如何解决这个问题吗?
答案 0 :(得分:1)
这部分代码就是问题:
<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>
为什么?该服务不是一项活动,也不能具有相同的名称。这两个服务扩展了不同的服务,然后您需要一个类来扩展第一个服务,而另一个类扩展第二个服务,如示例所示:
<强> MyFirebaseInstanceIDService:强>
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService
{
...
}
<强> MyFirebaseMessagingService:强>
public class MyFirebaseMessagingService extends FirebaseMessagingService
{
...
}
然后您的清单将如下所示:
<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个渐变(app和project)。在项目部分中看到两者都需要选择项目视图。
<强> 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'
}
}
如果我帮助了你并且编程很好,请告诉我!