我有一个问题Firebase Notification,如果我在应用程序在屏幕上运行时发送通知,则通知会正确显示,如下所示:
比起当我在后台运行应用程序时发送通知,通知显示如下:
这是我的FirebaseMessagingService课
public class AppFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
sendNotification(remoteMessage);
}
private void sendNotification(RemoteMessage remoteMessage) {
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
int icon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? R.drawable.ic_video_label_white_24dp: R.drawable.ic_launcher;
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setWhen(System.currentTimeMillis());
notificationBuilder.setColor(ContextCompat.getColor(this, R.color.colorPrimary));
notificationBuilder.setSmallIcon(icon);
notificationBuilder.setContentTitle(remoteMessage.getNotification().getTitle());
notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSound(defaultSoundUri);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
Intent resultIntent = new Intent(this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent(pendingIntent);
notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
}
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); …Run Code Online (Sandbox Code Playgroud) 我正在尝试备份/还原我的应用程序的共享首选项,我使用Android备份服务执行了以下步骤:
在Manifest.xml在<application>标签
<meta-data android:name="com.google.android.backup.api_key" android:value="My Key" />
Run Code Online (Sandbox Code Playgroud)
添加了此类:
public class MyBackupAgent extends BackupAgentHelper {
// The name of the SharedPreferences file
static final String PREFS = "my_preferences";
@Override
public void onCreate() {
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
addHelper(Utilities.SETTINGS_KEY, helper);
}
}
Run Code Online (Sandbox Code Playgroud)
当将值设置为共享首选项时,我这样做:
BackupManager backupManager = new BackupManager(context);
backupManager.dataChanged();
Run Code Online (Sandbox Code Playgroud)
但是,如果我卸载/重新安装应用程序,更改将不适用...
我想在Activity托管的PreferenceFragment中使用Snackbar onSharedPreferenceChange().
preference.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="ll_main">
<PreferenceCategory android:title="@string/push_notification">
<SwitchPreference android:title="@string/transectional_notification"
android:key="trans_not"
android:defaultValue="true"
android:summary="@string/get_notified_about_any_changes_related_to_your_transections"/>
<SwitchPreference android:title="@string/promotional_notification"
android:key="prom_not"
android:defaultValue="true"
android:summary="@string/get_notified_about_referalls"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/other_notifications">
<SwitchPreference android:title="@string/email_notifications"
android:defaultValue="true"
android:key="email_not" />
<SwitchPreference android:title="@string/sms_notifications"
android:defaultValue="true"
android:key="sms_not"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/recommendation_setting">
<com.til.recharger.widgets.PhoneEditTextPreference
android:title="@string/mobile_no"
android:inputType="number"
android:summary="8587035342"
android:key="mob_no_edit"/>
<ListPreference android:title="@string/operator"
android:summary="Airtel"
android:key="operator_list"/>
<ListPreference android:title="@string/circle"
android:summary="New Delhi"
android:key="circle_list"/>
<ListPreference
android:title="Plan type"
android:entries="@array/listentries"
android:entryValues="@array/listentries"
android:summary="Postpaid"
android:defaultValue="Prepaid"
android:key="plan_key"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/plan_info">
<com.til.recharger.widgets.NumberPickerPreference
android:title="@string/bill_cycle"
android:summary="2"
android:persistent="true"
android:key="bill_cycle_edit"/>
<com.til.recharger.widgets.CustomEditTextPreference
android:title="@string/monthly_data_limit"
android:summary="%s"
android:inputType="number"
android:key="monthly_limit_edit"/>
<ListPreference
android:title="@string/preffered_network_type"
android:entries="@array/mobiledataoptions"
android:entryValues="@array/mobiledatavalues"
android:summary="3G"
android:defaultValue="3G"
android:key="pref_data_list"/>
</PreferenceCategory>
</PreferenceScreen> …Run Code Online (Sandbox Code Playgroud) 我正在使用Jersey.Am开发一个休息Web服务,这对于webservices来说是一个新的东西.我需要将客户列表作为输入传递给rest webservice.在实现它时遇到了问题.
下面是我的客户对象类
@Component
public class customer {
private String customerId;
private String customerName;
Run Code Online (Sandbox Code Playgroud)
我的终点如下.addCust是调用webservice时调用的方法
@Path("/add")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public String addCust(@Valid customer[] customers){
//And json input is as below
{customers:{"customerId":"1","customerName":"a"},
{"customerId":"2","customerName":"b"}}
Run Code Online (Sandbox Code Playgroud)
但是球衣无法将json阵列转换为客户阵列.它返回400.日志显示"c没有可行的选择".如何将Json数组作为输入传递给webservice并转换为Array或ArrayList.任何帮助赞赏.
我搜索了很多但仍然没有得到解决方案.Plus.PeopleApi.getCurrentPerson()总是返回null.我得到了调试SHA1并释放了SHA1.它们都作为具有正确包名的OAuth 2.0客户端ID添加到控制台.(遗憾的是,我无法发布图片)这是我的GoogleApiClient:
private GoogleApiClient buildGoogleApiClient() {
return new GoogleApiClient.Builder(getContext())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(new Scope(Scopes.PROFILE))
.addScope(new Scope(Scopes.PLUS_LOGIN))
.build();
}
Run Code Online (Sandbox Code Playgroud)
很简单.我从Fragment的onCreateView()中调用它.然后我想找到当前的人:
@Override
public void onConnected(Bundle bundle) {
Plus.PeopleApi.loadVisible(mGoogleApiClient, null).setResultCallback(this);
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String personName = currentPerson.getDisplayName();
String personGooglePlusProfile = currentPerson.getUrl();
}
Run Code Online (Sandbox Code Playgroud)
并且总是空的.mGoogleApiClient工作正常,它连接,它不是null,但仍然.在控制台 - >启用了Apis Google+ API,但"使用情况"标签中没有任何请求.
我尝试了所有可以找到的解决方案而没有任何帮助.我用geny模拟器运行应用程序.拜托,帮帮我,给我任何想法.
补充:这是我几乎完整的Fragment类:
public class AuthorizationFragment2 extends Fragment implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
View.OnClickListener,
ResultCallback {
private static final String KEY_IS_RESOLVING = "is_resolving";
private static final String KEY_SHOULD_RESOLVE = "should_resolve";
/* Request code …Run Code Online (Sandbox Code Playgroud) 我已经有这样的错误,当你尝试执行不合适的匹配(日期到布尔,等等),我已经能够很容易地修复.
但是这一次,我很困惑,因为hibernate拒绝将"数字"Id与Java"Long"相匹配(并且当为Double,Integer,Float,String,int,long等设置setter时它也失败了)
sql-server字段"id"是一个NUMERIC(19,0)
我的DTO是:
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class DtoResult {
private Long id;
private String name;
// ...
public Long getId() {
return id;
}
public void setId(final Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
我的hibernate查询:
final SQLQuery query= getCurrentSession().createSQLQuery(select + from + where);
query.setParameter("manyFields", manyFields);
query
.addScalar("id")
.addScalar("name")
.setResultTransformer(Transformers.aliasToBean(DtoResult.class));
return query.list(); // List<DtoResult>
Run Code Online (Sandbox Code Playgroud)
错误:
IllegalArgumentException occurred while calling setter for …Run Code Online (Sandbox Code Playgroud) 我想知道是否有人对JavaFX 8有很多经验.我正在做一些表格布局并且需要对齐它们(我是用这个东西强调OCD).我知道在Swing中我可以使用GridBagLayout,但是这不再适用了,我可以设置权重而不是,但我不认为我可以用GridPane做到这一点,JavaFX中有没有相同的东西?
我无法发布图片,因此我将其链接到目前的样子,并突出显示了一些不是我想要的区域.
https://gyazo.com/c112ab623ffd66e6f723eb9be1fcaea9
该代码之前也可用
public class ControlsPanel extends GridPane {
private TextField[] buttons;
private TextField[] miscTextFields;
private Label[] labels;
private Button startSimBtn;
private TabPane tabPane;
private Tab cooperatorTab, defectorTab;
private final int PADDING = 5;
private final String[] v =
{
"C_A_N", "C_A_PD",
"C_A_PN", "C_N_N",
"C_N_PD", "C_N_PN",
"D_A_N", "D_A_PD",
"D_A_PN", "D_N_N",
"D_N_PD", "D_N_PN"
};
private final String[] miscTfLabelValues =
{
"Apology cost: ", "Noise level: ", "Punishmment Cost: ", "Punished Cost: "
};
public ControlsPanel()
{
buttons = new …Run Code Online (Sandbox Code Playgroud) 我正在学习,我有问题,我应该从用户那里获得一个IP地址,然后从最右边的数字迭代它,如果那个数字将等于或大于256,那么我应该迭代数字-1的地方在此之前,这个设置为0.
我试图通过简单地创建原始代码来解决它,它只会通过用户输入执行一次,之后我会添加更多复杂性,如原始多次迭代,错误检查并将代码放入propper .java文件和类中.我知道使用ArrayList会更好,但我打算稍后添加ArrayList而不是simple Array.
任何人都可以告诉我为什么当我不试图迭代"我"时,带有条件的循环放在outofarraybound异常?
for (i = 3; i >= 0; i--) {
pomoc = zasobnikIPadresa[i];
if (pomoc > 255) {
zasobnikIPadresa[i] = 0;
zasobnikIPadresa[i-1] = pomoc + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够分析我没有适当的Arrays知识,我认为我的问题的解决方案将帮助我完成我的问题并更好地理解它们.
到目前为止这里是完整的代码:
package com.ipadresa.classes;
import java.util.Scanner;
public class Hlavni {
public static void main(String[] args) {
int i = 0;
int[] zasobnikIPadresa = new int[4];
Scanner ctecka = new Scanner(System.in);
for (i = 0; i < zasobnikIPadresa.length; i++) {
zasobnikIPadresa[i] = ctecka.nextInt();
}
System.out.print("Original IP adress: ");
for …Run Code Online (Sandbox Code Playgroud) java ×6
android ×4
firebase ×1
google-api ×1
hibernate ×1
javafx ×1
jersey ×1
json ×1
rest ×1
sql-server ×1
web-services ×1