Добавление кнопки в строке состояния - PullRequest
0 голосов
/ 24 января 2020

Я разрабатываю приложение android, в которое я хочу добавить кнопку телефона в строке состояния. Могу ли я добавить кнопку «Телефон» в строке состояния?

example

Я хочу добавить кнопку, показанную на изображении выше. Я пытался сделать с уведомлением, но размер значка уведомления слишком мал. Как мне это сделать? Любая идея?

Ответы [ 2 ]

1 голос
/ 24 января 2020

Я думаю, что это противоречит рекомендациям по дизайну - помещать кнопку в строке состояния, поскольку она должна содержать только уведомления и системные значки. См. https://material.io/design/platform-guidance/android-bars.html#status -bar .

Вместо этого попробуйте всплывающее уведомление (https://developer.android.com/guide/topics/ui/notifiers/notifications.html). Вы можете поместить кнопку в области действия уведомления (https://material.io/design/platform-guidance/android-notifications.html#anatomy -of-a-messages ).

0 голосов
/ 24 января 2020

Похоже, вам нужен сервис переднего плана со значком уведомления - здесь

Пример кода для службы переднего плана -

public class ExampleService extends Service {

@Override
public void onCreate() {
    super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    String input = intent.getStringExtra("inputExtra");

    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this,
            0, notificationIntent, 0);

    Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
            .setContentTitle("Example Service")
            .setContentText(input)
            .setSmallIcon(R.drawable.ic_android)
            .setContentIntent(pendingIntent)
            .build();

    startForeground(1, notification);

    //do heavy work on a background thread
    //stopSelf();

    return START_NOT_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
}

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

}

...