

{"id":75356,"date":"2020-02-03T12:24:19","date_gmt":"2020-02-03T06:54:19","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=75356"},"modified":"2021-08-25T13:55:53","modified_gmt":"2021-08-25T08:25:53","slug":"android-broadcast-receiver","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/","title":{"rendered":"Android Broadcast Receiver Tutorial &#8211; A beginner-friendly guide"},"content":{"rendered":"<p>In this tutorial, you will get a complete understanding of the Android broadcast receiver. You will learn about system-generated intents with their working, classes of broadcasts and implementation of broadcast receivers in Android studio.<\/p>\n<h3>What is Android Broadcast Receiver?<\/h3>\n<p>Android Broadcast Receiver is an Android component that is used to broadcast the messages to the system or other applications. The broadcast message is referred to as an Event or Intent. Broadcast receivers, unlike <em><strong>Activities<\/strong><\/em>, have no user interface. It\u2019s working is similar to that of a publish-subscribe design pattern. It\u2019s used for Asynchronous Inter-Process communication.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-75377\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg\" alt=\"Android broadcast receiver tutorial\" width=\"802\" height=\"420\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg 802w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial-520x272.jpg 520w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/a><\/p>\n<p>Some Android broadcast receiver examples &#8211;<em> low battery notification in the notification bar by the system, notification to other applications when something downloads<\/em>, so they can use it when required.<\/p>\n<p>Let us get started with system-generated intents.<\/p>\n<h3>System-generated Intents<\/h3>\n<p>Let us see some system-generated Intents which are important and are generally used:<\/p>\n<ol>\n<li><strong>android.intent.action.BATTERY_CHANGED &#8211;<\/strong> This keeps track of the battery\u2019s charging state, percentage, and other information about the battery.<\/li>\n<li><strong>android.intent.action.BATTERY_LOW &#8211;<\/strong> It indicates the low battery condition.<\/li>\n<li><strong>android.intent.action.POWER_CONNECTED &#8211;<\/strong> It indicates that the power is connected to the device.<\/li>\n<li><strong>android.intent.action.POWER_DISCONNECTED &#8211;<\/strong> The power is disconnected from the device.<\/li>\n<li><strong>android.intent.action.BOOT_COMPLETED &#8211;<\/strong> This broadcast is shown only once when the device boots for the first time.<\/li>\n<li><strong>android.intent.action.CALL &#8211;<\/strong> This intent is to perform a call to some specific person, according to data.<\/li>\n<li><strong>android.intent.action.DATE_CHANGED &#8211;<\/strong> This means the date of the device has changed.<\/li>\n<li><strong>android.intent.action.REBOOT &#8211;<\/strong> This means that the device has rebooted.<\/li>\n<li><strong>android.intent.action.CONNECTIVITY_CHANGE &#8211;<\/strong> This shows the network connectivity of the device has changed.<\/li>\n<li><strong>android.intent.action.BUG_REPORT &#8211;<\/strong> This reports the bugs if there is any.<\/li>\n<li><strong>android.intent.action.CALL_BUTTON &#8211;<\/strong> The user pressed the call button to make a call, which takes them to an appropriate user interface.<\/li>\n<\/ol>\n<h3>Classes of Broadcast in Android<\/h3>\n<p>There are broadly two types of broadcast receivers in Android:<\/p>\n<ol>\n<li>Ordered Broadcasts<\/li>\n<li>Normal Broadcasts<\/li>\n<\/ol>\n<h4>1. Ordered Broadcasts<\/h4>\n<p>Ordered Broadcasts are synchronous broadcasts, and are done in proper order. This order is decided by the <strong>android:priority attribute<\/strong>. The broadcast with the highest priority would execute first and broadcasts with the same priority would not follow any order.<\/p>\n<p>Ordered Broadcasts are done in proper order as they are assigned with some priority. The priority is assigned to the broadcasts using attribute <strong>android:priority<\/strong>. With the help of priority, the broadcast with the highest priority will execute first. If two broadcasts are found to have the same priority then there no order would be followed. Ordered broadcasts are also called as <strong>Synchronous Broadcasts<\/strong>.<\/p>\n<p>In this, one broadcast is delivered only to one receiver at a time. When a receiver receives a broadcast it\u2019s up to the receiver to pass or abort the broadcast. If a receiver wants, it passes the broadcast to the next receiver else the broadcast doesn\u2019t reach the next receiver.<\/p>\n<h4>2. Normal Broadcasts<\/h4>\n<p>Normal broadcasts are asynchronous and unordered. These receivers run unorderly or all at a time, sometimes. That\u2019s why they are efficient, but lack full utilization of the results. These broadcasts are sent using <strong>Context:sendBroadcast<\/strong>.<\/p>\n<p>In normal broadcast, it\u2019s possible that the system sends only one broadcast at a time in order to avoid overhead. It can also abort the broadcast, but those excluding APIs.<\/p>\n<p>Notification that we receive from the applications can also be muted.<\/p>\n<h2>Implementation of Broadcast Receivers in Android<\/h2>\n<p>In order to build a good application, we need to take the utmost care of the Android broadcast receivers. If our application has perfectly working receivers, it\u2019d be good and interactive.<\/p>\n<p>Now to implement a receiver, we would need to register it, which could be done in the following two ways:<\/p>\n<h3>1. Context-registered<\/h3>\n<p>This is also known as the dynamically registering method. In this, the registration is done using<strong> Context.registerReceiver()<\/strong> method.<\/p>\n<p>Let us see the implementation of Context-registered receiver:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">IntentFilter\u00a0filter\u00a0=\u00a0new\u00a0IntentFilter();\u00a0\r\nintentFilter.addAction(getPackageName()+\"android.net.conn.CONNECTIVITY_CHANGE\");\u00a0\r\nMyReceiver\u00a0myReceiver\u00a0=\u00a0new\u00a0MyReceiver();\u00a0\r\nregisterReceiver(myReceiver,\u00a0filter);<\/pre>\n<h3>2. Manifest-registered<\/h3>\n<p>This is also known as the statically registering method. In this, the registration is done in the manifest file, using<strong> &lt;register&gt;<\/strong> tags.<\/p>\n<p>Let us see the implementation of Manifest-registered receiver:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;receiver android:name=\"DataFlairReceiver\" &gt; \r\n                &lt;intent-filter&gt; \r\n                     &lt;action android:name=\"android.net.conn.CONNECTIVITY_CHANGE\" \/&gt; \r\n                &lt;\/intent-filter&gt; \r\n&lt;\/receiver&gt;<\/pre>\n<p>Okay, now we\u2019ll see how to implement BroadcastReceivers in Android Studio.<\/p>\n<p>First of all, we\u2019ll create a new application in Android Studio, we\u2019ll name it as <strong>BroadcastReceiver<\/strong>.<\/p>\n<p>Within the java folder of BroadcastReceiver, create a java file named <strong>MyBroadcastReceiver.java<\/strong>.<\/p>\n<p>Now write the code as follows:<\/p>\n<p>1. Open <strong>AndroidManifest.xml<\/strong> in the folder BroadcastReceiver within apps. In that, write the following code:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;manifest xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n   package=\"com.dataflair.broadcastreceiver\"&gt;\r\n\r\n   &lt;application\r\n       android:allowBackup=\"true\"\r\n       android:icon=\"@mipmap\/ic_launcher\"\r\n       android:label=\"@string\/app_name\"\r\n       android:roundIcon=\"@mipmap\/ic_launcher_round\"\r\n       android:supportsRtl=\"true\"\r\n       android:theme=\"@style\/AppTheme\"&gt;\r\n       &lt;activity android:name=\"com.dataflair.broadcastreceiver.MainActivity\"&gt;\r\n           &lt;intent-filter&gt;\r\n               &lt;action android:name=\"android.intent.action.MAIN\" \/&gt;\r\n\r\n               &lt;category android:name=\"android.intent.category.LAUNCHER\" \/&gt;\r\n           &lt;\/intent-filter&gt;\r\n       &lt;\/activity&gt;\r\n       &lt;receiver android:name=\"com.dataflair.broadcastreceiver.MyBroadcastReceiver\"&gt;\r\n           &lt;intent-filter&gt;\r\n               &lt;action android:name=\"com.dataflair.CUSTOM_INTENT\"&gt;&lt;\/action&gt;\r\n           &lt;\/intent-filter&gt;\r\n       &lt;\/receiver&gt;\r\n   &lt;\/application&gt;\r\n&lt;\/manifest&gt;<\/pre>\n<p>2. In <strong>MainActivity.java<\/strong>, write the code below:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">package com.dataflair.broadcastreceiver;\r\n\r\nimport android.content.Intent;\r\nimport android.os.Bundle;\r\nimport android.view.View;\r\nimport android.widget.EditText;\r\n\r\nimport androidx.appcompat.app.AppCompatActivity;\r\n\r\npublic class MainActivity extends AppCompatActivity {\r\n\r\n   @Override\r\n   protected void onCreate(Bundle savedInstanceState) {\r\n       super.onCreate(savedInstanceState);\r\n       setContentView(R.layout.activity_main);\r\n   }\r\n\r\n   public void onClickShowBroadcast(View view) {\r\n       EditText st = findViewById(R.id.txtMsg);\r\n       Intent intent = new Intent();\r\n       intent.putExtra(\"msg\", (CharSequence) st.getText().toString());\r\n       intent.setAction(\"com.dataflair.CUSTOM_INTENT\");\r\n       sendBroadcast(intent);\r\n   }\r\n}<\/pre>\n<p>3. Then in <strong>activity_main()<\/strong>, write the following code:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n\r\n&lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n   xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\r\n   android:layout_width=\"match_parent\"\r\n   android:layout_height=\"match_parent\"\r\n   tools:context=\".MainActivity\"&gt;\r\n\r\n   &lt;TextView\r\n       android:id=\"@+id\/textView\"\r\n       android:layout_width=\"wrap_content\"\r\n       android:layout_height=\"wrap_content\"\r\n       android:layout_centerHorizontal=\"true\"\r\n       android:layout_marginLeft=\"100dp\"\r\n       android:layout_marginTop=\"150dp\"\r\n       android:text=\"DataFlair \"\r\n       android:textColor=\"#a4c639\"\r\n       android:textSize=\"50dp\" \/&gt;\r\n\r\n   &lt;EditText\r\n       android:id=\"@+id\/textMsg\"\r\n       android:layout_width=\"wrap_content\"\r\n       android:layout_height=\"wrap_content\"\r\n       android:layout_marginLeft=\"100dp\"\r\n       android:layout_marginTop=\"270dp\"\r\n       android:ems=\"10\" \/&gt;\r\n\r\n   &lt;Button\r\n       android:id=\"@+id\/buttonShow\"\r\n       android:layout_width=\"wrap_content\"\r\n       android:layout_height=\"wrap_content\"\r\n       android:layout_marginLeft=\"130dp\"\r\n       android:layout_marginTop=\"310dp\"\r\n       android:onClick=\"onClickShowBroadcast\"\r\n       android:text=\"Show Broadcast\" \/&gt;\r\n&lt;\/RelativeLayout&gt;<\/pre>\n<p>4. Open the java class (<strong>MyBroadcastReceiver.java<\/strong>) that we created earlier and copy the following code:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">package com.dataflair.broadcastreceiver;\r\nimport android.content.BroadcastReceiver;\r\nimport android.content.Context;\r\nimport android.content.Intent;\r\nimport android.widget.Toast;\r\n\r\npublic class MyBroadcastReceiver extends BroadcastReceiver {\r\n   @Override\r\n   public void onReceive(Context context, Intent intent){\r\n       CharSequence iData = intent.getCharSequenceExtra(\"msg\");\r\n       Toast.makeText(context,\"DataFlair Received Message: \"+iData,Toast.LENGTH_LONG).show();\r\n   }\r\n}\r\n<\/pre>\n<p>Then we\u2019ll get the output on the emulator as follows:<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/BroadcastReceiver.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-75378\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/BroadcastReceiver.png\" alt=\"Android Broadcast Receiver\" width=\"225\" height=\"400\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/BroadcastReceiver.png 225w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/BroadcastReceiver-84x150.png 84w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/BroadcastReceiver-169x300.png 169w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><\/a><\/p>\n<h2>Summary<\/h2>\n<p>With the end of this article, we have learned what broadcasts are and how important it is to implement broadcast receivers properly. Android Broadcast receivers allow us to register system or application events. They help us broadcast messages\/ notifications to other applications and systems.<\/p>\n<p><em>Did you face any difficulty in this Android broadcast receiver tutorial? Mention your queries in the comments.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you will get a complete understanding of the Android broadcast receiver. You will learn about system-generated intents with their working, classes of broadcasts and implementation of broadcast receivers in Android studio.&#46;&#46;&#46;<\/p>\n","protected":false},"author":10,"featured_media":75377,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18722],"tags":[21800,21802,21801,21804,21803],"class_list":["post-75356","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","tag-android-broadcast-receiver","tag-android-broadcast-receiver-example","tag-android-broadcast-receiver-tutorial","tag-android-broadcastreceiver-in-activity","tag-types-of-broadcast-receivers-in-android"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Android Broadcast Receiver Tutorial - A beginner-friendly guide - DataFlair<\/title>\n<meta name=\"description\" content=\"Android Broadcast Receiver - Learn about system-generated intents, classes of broadcasts, and implementation of broadcast receivers in Android studio.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android Broadcast Receiver Tutorial - A beginner-friendly guide - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Android Broadcast Receiver - Learn about system-generated intents, classes of broadcasts, and implementation of broadcast receivers in Android studio.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-03T06:54:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-25T08:25:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"802\" \/>\n\t<meta property=\"og:image:height\" content=\"420\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Android Broadcast Receiver Tutorial - A beginner-friendly guide - DataFlair","description":"Android Broadcast Receiver - Learn about system-generated intents, classes of broadcasts, and implementation of broadcast receivers in Android studio.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/","og_locale":"en_US","og_type":"article","og_title":"Android Broadcast Receiver Tutorial - A beginner-friendly guide - DataFlair","og_description":"Android Broadcast Receiver - Learn about system-generated intents, classes of broadcasts, and implementation of broadcast receivers in Android studio.","og_url":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2020-02-03T06:54:19+00:00","article_modified_time":"2021-08-25T08:25:53+00:00","og_image":[{"width":802,"height":420,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33"},"headline":"Android Broadcast Receiver Tutorial &#8211; A beginner-friendly guide","datePublished":"2020-02-03T06:54:19+00:00","dateModified":"2021-08-25T08:25:53+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/"},"wordCount":883,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg","keywords":["android broadcast receiver","android broadcast receiver example","android broadcast receiver tutorial","android broadcastreceiver in activity","types of broadcast receivers in android"],"articleSection":["Android Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/","url":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/","name":"Android Broadcast Receiver Tutorial - A beginner-friendly guide - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg","datePublished":"2020-02-03T06:54:19+00:00","dateModified":"2021-08-25T08:25:53+00:00","description":"Android Broadcast Receiver - Learn about system-generated intents, classes of broadcasts, and implementation of broadcast receivers in Android studio.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/02\/Android-broadcast-receiver-tutorial.jpg","width":802,"height":420,"caption":"Android broadcast receiver tutorial"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/android-broadcast-receiver\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Android Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/android\/"},{"@type":"ListItem","position":3,"name":"Android Broadcast Receiver Tutorial &#8211; A beginner-friendly guide"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team is passionate about delivering top-notch tutorials and resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With expertise in the tech industry, we simplify complex topics to help learners excel. Stay updated with our latest insights.","url":"https:\/\/data-flair.training\/blogs\/author\/dfadteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/75356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=75356"}],"version-history":[{"count":9,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/75356\/revisions"}],"predecessor-version":[{"id":97445,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/75356\/revisions\/97445"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/75377"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=75356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=75356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=75356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}