nexxPLAY
Search…
⌃K

android Widget

Basic Integration

Make the following changes to your Projects build.gradle
...
allprojects{
repositories{
maven { url "https://www.myget.org/F/3qnexx/maven" }
}
}
...
add the following dependencies
dependencies {
implementation "tv.nexx.android:widget:2.+"
}
Configure the Widget by adding the following Settings to your values/strings.xml:
<resources>
<string name="widget_domain" translatable="false">YOUR_DOMAIN_ID</string>
<string name="widget_feed_hash" translatable="false">YOUR_FEED_HASH</string>
<string name="widget_launchactivity" translatable="false">YOUR_LAUNCH_ACTIVITY</string>
<!-- only needed, if the Feed is secured with a Secret -->
<string name="widget_feed_secret" translatable="false">YOUR_FEED_SECRET</string>
<!-- this Parameter can be obtained from 3Q nexx or nexxOMNIA -->
<string name="widget_app" translatable="false">YOUR_APP_ID</string>
<!-- only needed for android 12+ -->
<string name="widget_description">Widget Description</string>
</resources>
Handle the System Intents by adding a receiver to src/main/AndroidManifest.xml:
<receiver
android:name="tv.nexx.android.widget.Widget"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
</receiver>
Prepare the necessary Image Assets (Icon and Preview PNGs) and place them under src/main/res/drawable/
Asset
Dimensions
Usage
widget_icon.png
512x512px
Icon to be shown on the Widget as App Reference
widget_preview.png
660x400px
Icon for Widget Selection Dialogue in android

Handling Intent

Once a User clicks on any Item of the Widget, the App is called directly (if the receiver has been configured correctly).
The App now is responsable to collect all necessary details in order to navigate to the Target of this Intent:
...
@Override
public void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
//make sure, this Intent comes from the Widget
if(action.equals("tv.nexx.android.widget.OPEN"){
//the Widget sends all available Item Identifiers in the Extra Bundle for easy access.
appDoNavigate(intent.getStringExtra("streamtype"), intent.getStringExtra("itemID"));
}
}
}
The available Item Identifiers are:
  • itemID
  • itemHash
  • globalID
  • refnr
  • slug
  • link (if configured in nexxOMNIA)
  • domainID
  • streamtype

Enhanced Methods

It is possible to update/refresh/reconfigure all Widget Instances from your App directly with the following Methods:
import tv.nexx.android.widget.Widget;
import tv.nexx.android.widget.WidgetConfiguration;
public class MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Widget widget = new Widget();
//simple force all Widget Instances to refresh the Feed
widget.updateWidgets(this.getContext());
//update the Configuration and refresh the Feed
WidgetConfiguration config=new WidgetConfiguration(
new HashMap<String, Object>() {{
put("language","es");
put("feedUpdateInterval", 30);
}}
);
widget.updateConfiguration(this.getContext(),config);
}
}
For a detailed Overview of the Meaning of the given Configuration, please take a look here: