I want to automatically launch my app on TV startup. i.e. when the user power on the TV, TV will powerup and my app will start.
I have followed multiple links on internet and tried to implement it but no activity is shown on startup. Followed How to start/ launch application at boot time Android
As I was not getting any response on start, followed Android-Boot Completed is not working in Broadcastreceiver
I have extensively searched web and stackoverflow, it is strange that I cannot find a solution to make it work till now. Don't know what am I doing wrong...
here is my code...
MainActivity.java
public class MainActivity extends FragmentActivity {
public WebView mWebview;
private android.content.Context Context;
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    String url = "http://www.test.com";
    if (!DetectConnection.checkInternetConnection(this)) {
        Toast.makeText(getApplicationContext(), "No Internet Connection!", Toast.LENGTH_LONG).show();
        finish(); //Calling this method to close this activity when internet is not available.
    } else {
        WebView webView = (WebView) findViewById(R.id.main_fragment);
        webView.getSettings().setJavaScriptEnabled(true);
        CookieManager.getInstance().setAcceptCookie(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        WebSettings webSettings = webView.getSettings();
        webSettings.setDomStorageEnabled(true);
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSettings.setUseWideViewPort(true);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl(url);
    }
}
StartAppOnBoot.java
public class StartAppOnBoot extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction() == null) {
        return;
    }
    //if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        boolean startupAfterBoot = prefs.getBoolean("serenity_boot_startup", false);
        if (startupAfterBoot) {
            Intent i = new Intent(context, MainActivity.class);
            //i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }
}
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.test.tv2"
tools:ignore="MissingLeanbackLauncher">
<uses-feature
    android:name="android.software.leanback"
    android:required="false" />
<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />
<application
    android:usesCleartextTraffic="true"
    android:allowBackup="true"
    android:icon="@drawable/ic_banner"
    android:label="TV2"
    android:supportsRtl="true"
    tools:ignore="GoogleAppIndexingWarning"
    android:banner="@mipmap/tv_banner_foreground">
    <activity android:name="com.test.tv2.MainActivity"
        android:screenOrientation="landscape"
        android:theme="@style/Theme.Leanback"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name="com.test.tv2.StartAppOnBoot"
        android:enabled="true"
        android:exported="true">
        <intent-filter android:priority="1000">
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />
        </intent-filter>
    </receiver>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>