dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:support-v4:25.3.0'
compile 'com.android.support:design:25.3.0'
//https://developers.google.com/android/guides/setup
compile 'com.google.android.gms:play-services-places:10.2.1'
compile 'com.google.android.gms:play-services-maps:10.2.1'
compile 'com.google.android.gms:play-services-location:10.2.1'
compile 'com.google.android.gms:play-services-vision:10.2.1'
compile 'com.google.android.gms:play-services-gcm:10.2.1'
compile 'com.google.firebase:firebase-messaging:10.0.1'
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.google.zxing:core:3.2.0'
compile 'com.journeyapps:zxing-android-embedded:3.5.0'
compile 'com.loopj.android:android-async-http:1.4.9'
testCompile 'junit:junit:4.12'
}
FirebaseMessagingService.java
public class FirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "FCM Service";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
try {
sendNotification(remoteMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
private void sendNotification(final RemoteMessage remoteMessage) throws Exception {
Calendar calendar = Calendar.getInstance();
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("h:mm a");
String strDate = sdf.format(c.getTime());
String contentTitle = "New Push Message";
String contentText = "Received at " + strDate;
Utilities.sendNotification(getApplicationContext(),
getNotificationIcon(),
contentTitle,
contentText,
0,
HomeActivity.class,
Utilities.getNotificationId(getApplicationContext()));
}
公用设施
public static void sendNotification(Context appContext,
int icon,
String title,
String msg,
long when,
Class<? extends Context> classToLaunch,
long processId) {
//Define notification msg
Intent launchIntent = null;
if (classToLaunch != null) {
launchIntent = new Intent(appContext, classToLaunch);
} else {
launchIntent = new Intent();
}
// This is dummy data for just differentiate Pending intent
// only set value that is check IntentFilter
launchIntent.addCategory("CATEGORY" + new Date(System.currentTimeMillis()));
launchIntent.addFlags((int) System.currentTimeMillis());
launchIntent.setAction("ACTION" + new Date(System.currentTimeMillis()));
// also make launch mode to singleTop in manifest for that activity
launchIntent.setFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NEW_TASK);
// intent to be launched when click on notification
PendingIntent pendingIntent = PendingIntent.getActivity(appContext,
0,
launchIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
//Instantiate the notification
NotificationCompat.Builder builder = new NotificationCompat.Builder(appContext); //(icon, msg, when);
builder.setContentTitle(title);
builder.setSmallIcon(icon);
builder.setWhen(when);
builder.setTicker(msg);
builder.setContentText(msg);
builder.setContentIntent(pendingIntent);
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_LIGHTS);
builder.setDefaults(Notification.DEFAULT_SOUND);
NotificationManager notificationManager = (NotificationManager) appContext.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify((int) processId, builder.build());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
Object value = getIntent().getExtras().get(key);
if (BuildConfig.DEBUG_APPLICATION) {
Log.d(TAG, "Key: " + key + " Value: " + value);
}
}
}
}
您应该保持Firebase libraties版本和Google play services库相似。因此,将Firebase libararies的版本号更新为10.2.1:
变化:
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-messaging:10.0.1'
致:
compile 'com.google.firebase:firebase-core:10.2.1'
compile 'com.google.firebase:firebase-messaging:10.2.1'
这似乎是一个基本问题。但在采访前需要澄清。 我在抽象类中有一个非抽象方法。它的具体类重写了该方法。但我想调用父类的原始方法来调用,而不是重写方法。有什么办法吗? 据我所知,没有办法调用原始方法?
问题内容: 我得到了几种解释,但是到目前为止,我还无法理解Java中的抽象类和方法是什么。 有人说它必须与程序的安全性做些关系,另一些人说不是那样。 即使从Dietel&Dietel的书中,我也不明白它的目的。我们何时,何地,为什么使用它? 请像您正在教初学者一样进行解释,非常感谢您的帮助。 问题答案: 抽象类是无法实例化的类。唯一的目的是扩展其他类。 抽象方法是抽象类中的方法(必须声明为抽象),
本文向大家介绍php中的抽象方法和抽象类,包括了php中的抽象方法和抽象类的使用技巧和注意事项,需要的朋友参考一下 1、什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法。所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰。 例如: 2、什么是抽象类? 只要一个类里面
我正在尝试对扩展抽象基的类进行单元测试。以下是“类似的类”,以供说明: 下面是我正在尝试的单元测试: 当我做这个测试的时候 java.lang.NullPointerException 在中 我知道自动连线的“滤水器”没有初始化。但接下来,我只想在我的单元测试中模拟抽象的“非抽象”方法。 我该如何使用EasyMock来实现这一点呢?另外,我不知道和应该做什么。
大家好,我有这个主课堂 错误:(42,8)错误:Home不是抽象的,并且不会覆盖OnFragmentInteractionListener中的onFragmentInteract(String)抽象方法 我创建了一个导航抽屉,并希望有一个新的片段来显示另一个家庭活动的内容。 Android Studio告诉我做个家。类抽象或实现抽象方法。 里面: 我那样做了,但是什么也没有改变。我不能让home类
本文向大家介绍抽象类必须要有抽象方法吗?相关面试题,主要包含被问及抽象类必须要有抽象方法吗?时的应答技巧和注意事项,需要的朋友参考一下 不需要,抽象类不一定非要有抽象方法;但是包含一个抽象方法的类一定是抽象类。 示例代码: 上面代码,抽象类并没有抽象方法但完全可以正常运行。