Galaxy Edge for tablets/folds

Hello! is there any way to bring edge panels to tablets and folds?

1 Like

Curious too about this,
I just received my fold 3, I can see and use the edge panel, but the custom edge that I install don’t show up.
I just finished writing an edge panel and released it so kinda stumped that I can’t be used on the fold z3…

Same here on a Tab s7. No option to download from Galaxy Store or to show one homebrewed from Android Studio.

Hi everyone,
3rd party application does not support edge panel on Fold and Tablet as far as I know.

Hi, to the developers. Can you guys please bring back the infinite color option for edge screen light notifications? We don’t like the limited color options. Greatly appreciated!

That’s silly of Samsung they should add ability to do so.

So, if you’re developing edge panel and want to play for your own, you should name your cocktail class

class SinglePlusCocktailProvider : SlookCocktailProvider()

and put it in package

package com.samsung.android.voc.cocktail

After installing, you’ll be able to play with it.

What I want to say. Each build-in tablet edge don’t have “left” help panel. And there’s only one reason for that - “Fold”. When you open edge with help panel on fold’s main screen, you can find out, that there’s almost no space for content and it looks ugly. But usable.

You can’t bring such panels to user using Galaxy Store, but you can try your luck on google play :slight_smile:

No, I tried changing the packagename is cocktail single plus provider only, not showing edge panel.

Have you followed exact package name AND class name? Also don’t forget to reflect changes in manifest.

  <receiver
            android:name="com.samsung.android.voc.cocktail.SinglePlusCocktailProvider"
            android:exported="false">
            <intent-filter>
                <action android:name="com.samsung.android.cocktail.v2.action.COCKTAIL_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="com.samsung.android.cocktail.provider"
                android:resource="@xml/edge_single_plus" />
        </receiver>

Under hood Samsung’s edge panel have build-in list in arrays.xml with full class name and shows only apps with that name of cocktail.

How do i use array xml and make it? still i used code above not work.

Sorry for misleading you. Array.xml is only inside Samsung’s edge app. You don’t need it.

  1. Is your cocktail working on common phone?
  2. Maybe you have several cocktails? I think SinglePlusCocktailProvider should be only one to be able seen by “Edge”.

Let’s check. I have tablet buildFlavour with this package. And it’s only one difference from phone version of edge:
изображение

I’ve inherited class only with new name

In manifest I have only 1 receiver

Nothing else changed in my case, application id can be in a free form.

Yes my edge panel, works on phones.

So I’ve told what I know. Without any your code I don’t know how else can help. I’ve installed my app both Fold 3 and Tab S7+ with this config.















        <meta-data
            android:name="com.samsung.android.cocktail.provider"
            android:resource="@xml/edge_single_plus" />
    </receiver>

package com.samsung.android.voc.cocktail;

import static androidx.core.app.NotificationCompat.EXTRA_NOTIFICATION_ID;
//import gearsoftware.taskedge.ui.CocktailProvider;
import static wills.torch.MainActivity.MAIN;
import static wills.torch.MainActivity.OPEN;
import static wills.torch.MainActivity.TORCH;
import static wills.torch.MainActivity.TORCHOFF;
import static wills.torch.MainActivity.dialog;

import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;

import com.samsung.android.sdk.look.cocktailbar.SlookCocktailManager;
import com.samsung.android.sdk.look.cocktailbar.SlookCocktailProvider;

import wills.torch.MainActivity;
import wills.torch.R;

public class CocktailSinglePlusProvider extends SlookCocktailProvider{

@Override
public void onUpdate(Context context, SlookCocktailManager cocktailManager, int[] cocktailIds) {
    panelUpdate(context, cocktailManager, cocktailIds);
}

public void panelUpdate(Context context, SlookCocktailManager manager, int[] cocktailIds) {
    int layoutId = R.layout.sample_edge_single_plus;
    RemoteViews rv = new RemoteViews(context.getPackageName(), layoutId);



    if (cocktailIds != null) {
        for (int id : cocktailIds) {
            try {
                rv = new RemoteViews(context.getPackageName(), layoutId);

// Intent intentss = new Intent(Intent.ACTION_MAIN);
// intentss.setClassName(“com.google.android.apps.photos”, “com.google.android.apps.photos.home.HomeActivity”);
//
// intentss.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//
//
//
// PendingIntent pendingIntentss = PendingIntent.getActivity(
// /* context = / context,
// /
requestCode = / 0,
// /
intent = / intentss,
// /
flags = */ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
// );
//
// // Get the layout for the widget and attach an on-click listener
// // to the button.
//
// rv = new RemoteViews(context.getPackageName(), layoutId);
// rv.setOnClickPendingIntent(R.id.imageView3, pendingIntentss);

//
// Intent intent = new Intent(context, MainActivity.class);
// PendingIntent pendingIntent = PendingIntent.getActivity(
// /* context = / context,
// /
requestCode = / 0,
// /
intent = / intent,
// /
flags = */ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
// );
//
// // Get the layout for the widget and attach an on-click listener
// // to the button.
// rv = new RemoteViews(context.getPackageName(), layoutId);
// rv.setOnClickPendingIntent(R.id.imageView, pendingIntent);
// Intent snoozeIntentss = new Intent(context, MainActivity.Broadcastd.class);
//// snoozeIntent.addCategory(Intent.CATEGORY_LAUNCHER);
//// snoozeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
// snoozeIntentss.setAction(OPEN);
//
// PendingIntent snoozePendingIntents =
// PendingIntent.getBroadcast(context, 0, snoozeIntentss, PendingIntent.FLAG_IMMUTABLE);
//
// // snoozeIntent.putExtra(EXTRA_NOTIFICATION_ID, 0);
//
//
// rv.setOnClickPendingIntent(R.id.imageButton5, snoozePendingIntents);
Intent snoozeIntentS = new Intent(context, MainActivity.Broadcasts.class);
// snoozeIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// snoozeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
snoozeIntentS.setAction(TORCHOFF);
//snoozeIntent.putExtra(TORCHOFF, 0);

                PendingIntent snoozePendingIntentS =
                        PendingIntent.getBroadcast(context, 0, snoozeIntentS, PendingIntent.FLAG_IMMUTABLE);
                // Tell the AppWidgetManager to perform an update on the current app widget.
                //    appWidgetManager.updateAppWidget(appWidgetId, views);

                Intent snoozeIntent = new Intent(context, MainActivity.Broadcast.class);

// snoozeIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// snoozeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
snoozeIntent.setAction(TORCH);

                PendingIntent snoozePendingIntent =
                        PendingIntent.getBroadcast(context, 0, snoozeIntent, PendingIntent.FLAG_IMMUTABLE);

                //   snoozeIntent.putExtra(EXTRA_NOTIFICATION_ID, 0);


                rv.setOnClickPendingIntent(R.id.imageButton2, snoozePendingIntent);
                Intent snoozeIntentSs = new Intent(context, MainActivity.Broadcasts.class);

// snoozeIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// snoozeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
snoozeIntent.setAction(TORCHOFF);
//snoozeIntent.putExtra(TORCHOFF, 0);

                PendingIntent snoozePendingIntentSs =
                        PendingIntent.getBroadcast(context, 0, snoozeIntentSs, PendingIntent.FLAG_IMMUTABLE);

                //  snoozeIntentS.putExtra(EXTRA_NOTIFICATION_ID, 0);

                // Get the layout for the widget and attach an on-click listener
                // to the button.
                rv.setOnClickPendingIntent(R.id.imageButton, snoozePendingIntentSs);


                manager.updateCocktail(id, rv);

               // Intent  snoozeIntentSh = new Intent(Intent.ACTION_MAIN);
                Intent snoozeIntentSh = new Intent(context, MainActivity.Broadcastsapp.class);

// snoozeIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// snoozeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
snoozeIntent.setAction(MAIN);
snoozeIntentSh.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//snoozeIntentSh.setClassName(“com.sec.android.app.music”, “com.sec.android.app.music.common.activity.MusicMainActivity”);

//“wills.torch”, “wills.torch.MainActivity”
// “com.sec.android.app.music”, “com.sec.android.app.music.common.activity.MusicMainActivity”
PendingIntent snoozePendingIntentSh =
PendingIntent.getBroadcast(context, 0, snoozeIntentSh, PendingIntent.FLAG_IMMUTABLE);

                //  snoozeIntentS.putExtra(EXTRA_NOTIFICATION_ID, 0);

                // Get the layout for the widget and attach an on-click listener
                // to the button.
                rv.setOnClickPendingIntent(R.id.button, snoozePendingIntentSh);

try {

} catch (Exception e){
rv.setOnClickPendingIntent(R.id.button, snoozePendingIntentSh);
dialog();
}
manager.updateCocktail(id, rv);
} catch (Exception e){
dialog();
e.printStackTrace();
}

    }
}

}

}

f.txt (5.6 KB)

Thanks for showing code.

Your class is named CocktailSinglePlusProvider but you have to rename it EXACTLY to SinglePlusCocktailProvider

Thankyou it worked now showing

I have an issue, I used one edge screen for my app, worked, then two edge screens, from two different apps I made, they both worked perfectly, now is showing duplicates then not showing at all then 1 stopped working, a bit other one stopped working didn’t work at al, then both not work no matter what I tried.

What errors do you have in logcat? Duplicates can be shown when you have several cocktail providers. If they crash, edge can hide them from user. Then you should make clean install of your edges and look at the logcat to find out what’s happening.