अपवाद जो तब फेंका जाता है जब कोई एप्लिकेशन अपने मुख्य थ्रेड पर नेटवर्किंग ऑपरेशन करने का प्रयास करता है।
यह केवल हनीकॉम्ब एसडीके या उच्चतर को लक्षित करने वाले अनुप्रयोगों के लिए फेंका गया है। एसडीके के पुराने संस्करणों को लक्षित करने वाले अनुप्रयोगों को उनके मुख्य ईवेंट लूप थ्रेड्स पर नेटवर्किंग करने की अनुमति है, लेकिन यह अत्यधिक हतोत्साहित किया जाता है।
कृपया इस अपवाद को ठीक करने के लिए नीचे दिया गया उदाहरण प्रोग्राम देखें -
यह उदाहरण दर्शाता है कि मैं android.os.NetworkOnMainThreadException को कैसे ठीक करूं।
चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2 − निम्नलिखित कोड को res/layout/activity_main.xml में जोड़ें।
चरण 3 - निम्न कोड को src/MainActivity.java में जोड़ें
import androidx.appcompat.app.AppCompatActivity;import android.os.AsyncTask;import android.os.Bundle;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java. io.InputStreamReader; आयात java.net.URL; सार्वजनिक वर्ग MainActivity AppCompatActivity को बढ़ाता है { TextView textLoad, textMessage; अंतिम स्ट्रिंग strMessage ="https://sites.google.com/site/androidersite/text.txt"; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); टेक्स्टलोड =findViewById (R.id.textLoad); textMessage =findViewById (R.id.textMessage); textLoad.setText ("लोड हो रहा है ..."); नया MyTask ()। निष्पादित करें (); } निजी वर्ग MyTask का विस्तार AsyncTask{ String result; @Override संरक्षित Void doInBackground(Void... voids) { URL url; कोशिश करें {url =नया URL (strMessage); BufferedReader bufferedReader =नया BufferedReader (नया इनपुटस्ट्रीम रीडर (url.openStream ())); स्ट्रिंग स्ट्रिंगबफ़र; स्ट्रिंग स्ट्रिंग =""; जबकि ((स्ट्रिंगबफ़र =बफ़रेडरीडर। रीडलाइन ())! =अशक्त) {स्ट्रिंग =स्ट्रिंग। प्रारूप ("% s% s", स्ट्रिंग, स्ट्रिंगबफ़र); } bufferedReader.close (); परिणाम =स्ट्रिंग; } कैच (IOException e){ e.printStackTrace(); परिणाम =e.toString (); } वापसी शून्य; } @Override संरक्षित शून्य onPostExecute(Void aVoid) {textMessage.setText(result); textLoad.setText ("समाप्त"); super.onPostExecute(aVoid); } }}पूर्व> चरण 4 - निम्नलिखित कोड को androidManifest.xml में जोड़ें
<उपयोग-अनुमति android:name="android.permission.INTERNET"/> <एप्लिकेशन android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android :roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <गतिविधि android:name=".MainActivity"> <इरादे-फ़िल्टर> <कार्रवाई android:name=" android.intent.action.MAIN" /> <श्रेणी android:name="android.intent.category.LAUNCHER" /> आइए आपके एप्लिकेशन को चलाने का प्रयास करते हैं। मुझे लगता है कि आपने अपने वास्तविक Android मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फ़ाइलों में से एक खोलें और टूलबार से रन आइकन पर क्लिक करें। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -