小编Pie*_*aly的帖子

将Android会议室数据库与Firebase实时数据库相关联

我正在使用Android Room Database为我的Android应用程序创建数据库.它在本地完美适用于我,但我无法链接到服务器以使其在线.我正在使用Firebase进行身份验证.我正在尝试使用Firebase实时数据库从Room保存整个数据库对象,并根据经过身份验证的用户在应用启动时加载正确的数据库.

我想问一下这是否可行?如果我可以保存Room数据库的整个实例,或者我需要在Firebase上重新创建数据库并逐项保存我的数据?

我似乎也无法访问Room的数据库数据,因为当我得到AppDatabase类的对象时,它并没有真正传递数据.而且我不知道如何做相反的事情,将以后从Firebase检索到的数据分配给保存的本地数据?

此外,如果使用Firebase无法实现,您是否对我可以使用Room的其他服务器有任何建议?

database android database-connection firebase-realtime-database android-room

12
推荐指数
2
解决办法
4377
查看次数

java.lang.IllegalStateException:尝试运行RingtoneService时不允许启动服务意图

我正在创建一个包含许多功能的管理器应用程序,其中一个是警报,而在大多数情况下尝试启动警报时,我都会收到此异常“ java.lang.IllegalStateException:不允许启动服务意图”,因为它是在后台运行(有时会延迟运行)!我广泛地寻找答案,并尝试了以下方法,但均无济于事:-JobScheduler:我遇到相同的异常-bindService()并在onServiceConnected()中编写代码:它从未命中过onServiceConnected()

以下是我的代码的重要部分:

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {

        Intent serviceIntent = new Intent(context, RingtonePlayingService.class);
        context.startService(serviceIntent);
    }
}
Run Code Online (Sandbox Code Playgroud)

来自以下活动的广播电话:

Intent intent = new Intent(AddAlarm.this, AlarmReceiver.class)
                .putExtra("ALARM_ON", true);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

以下服务类别:

public class RingtonePlayingService extends Service {

    // Player
    MediaPlayer player;
    boolean isRunning;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        if …
Run Code Online (Sandbox Code Playgroud)

service android exception android-mediaplayer android-studio

2
推荐指数
1
解决办法
7213
查看次数

cancelAll() 和 cancel() 不会忽略我的通知

我已经面临这个问题很长时间了,我有一个具有很多功能的应用程序,其中之一就是闹钟

尽管我正在从通知管理器中调用cancelAll()/cancel()autoCanceltrue ,但我的通知只是停留在那里并且永远不会消失,我也已设置为!它还保持可点击,我只需要它在触发操作后消失!

(我正在使用 Android Studio 的模拟器上进行测试,不确定这是否是问题所在)

我搜索了很多并尝试了很多东西但没有任何效果,所以我将不胜感激您的帮助:)

我已将通知设置如下:

notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

// ...

private void initNotification() {
    setNotificationChannel();

    notificationBuilder = new NotificationCompat.Builder(getApplicationContext(), notificationChannel.getId());

    Intent click_intent = new Intent(getApplicationContext(), RingtonePlayingService.class)
            .putExtra("intent_action", "click")
            .putExtra("REQUEST_CODE", alarmRequestCode)
            .putExtra("ID", alarmId);
    PendingIntent click_pending = PendingIntent.getService(this, MainActivity.getRequestCode(), click_intent, PendingIntent.FLAG_UPDATE_CURRENT);

    Intent dismiss_intent = new Intent(getApplicationContext(), RingtonePlayingService.class)
            .putExtra("intent_action", "dismiss")
            .putExtra("REQUEST_CODE", alarmRequestCode)
            .putExtra("ID", alarmId);
    PendingIntent dismiss_pending = PendingIntent.getService(getApplicationContext(),MainActivity.getRequestCode(), dismiss_intent, PendingIntent.FLAG_UPDATE_CURRENT);

    Intent snooze_intent = new Intent(getApplicationContext(), RingtonePlayingService.class)
            .putExtra("intent_action", "snooze")
            .putExtra("REQUEST_CODE", alarmRequestCode) …
Run Code Online (Sandbox Code Playgroud)

android notificationmanager android-notifications android-studio notification-channel

2
推荐指数
1
解决办法
3323
查看次数