সিকিউরিটি এক্সসেপশন: অনুমতি অস্বীকৃত (ইন্টারনেটের অনুমতি অনুপস্থিত?)


94

এই ত্রুটিটি সত্যই সত্যই অদ্ভুত এবং আমি জানি না কীভাবে এটি পুনরুত্পাদন করা যায় এবং কীভাবে এটি ঠিক করা যায় কারণ আমি প্রচুর অনুসন্ধান করেছি কিন্তু কিছুই কার্যকর ছিল না।

এখানে স্ট্যাকট্রেস:

Stack Trace
_________________________________
0   java.lang.RuntimeException: An error occured while executing doInBackground()
1       at android.os.AsyncTask$3.done(AsyncTask.java:299)
2       at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
3       at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
4       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
5       at java.util.concurrent.FutureTask.run(FutureTask.java:137)
6       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
7       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
8       at java.lang.Thread.run(Thread.java:856)
9   Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
10      at java.net.InetAddress.lookupHostByName(InetAddress.java:430)
11      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
12      at java.net.InetAddress.getAllByName(InetAddress.java:214)
13      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
14      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
15      at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
16      at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
17      at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
18      at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
19      at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
20      at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
21      at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
22      at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
23      at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
24      at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:185)
25      at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
26      at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.java:1143)
27      at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.java:982)
28      at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.java:211)
29      at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:28)
30      at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:1)
31      at android.os.AsyncTask$2.call(AsyncTask.java:287)
32      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
33      ... 4 more
34  Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
35      at libcore.io.Posix.getaddrinfo(Native Method)
36      at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
37      at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
38      ... 26 more
39  Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
40      ... 29 more
41  java.lang.SecurityException: Permission denied (missing INTERNET permission?)
42      at java.net.InetAddress.lookupHostByName(InetAddress.java:430)
43      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
44      at java.net.InetAddress.getAllByName(InetAddress.java:214)
45      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
46      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
47      at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
48      at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
49      at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
50      at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
51      at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
52      at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
53      at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
54      at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
55      at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
56      at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:185)
57      at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
58      at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.java:1143)
59      at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.java:982)
60      at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.java:211)
61      at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:28)
62      at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:1)
63      at android.os.AsyncTask$2.call(AsyncTask.java:287)
64      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
65      at java.util.concurrent.FutureTask.run(FutureTask.java:137)
66      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
67      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
68      at java.lang.Thread.run(Thread.java:856)
69  Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
70      at libcore.io.Posix.getaddrinfo(Native Method)
71      at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
72      at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
73      ... 26 more
74  Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
75      ... 29 more
76  libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
77      at libcore.io.Posix.getaddrinfo(Native Method)
78      at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
79      at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
80      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
81      at java.net.InetAddress.getAllByName(InetAddress.java:214)
82      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
83      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
84      at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
85      at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
86      at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
87      at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
88      at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
89      at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
90      at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
91      at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
92      at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
93      at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:185)
94      at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
95      at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.java:1143)
96      at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.java:982)
97      at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.java:211)
98      at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:28)
99      at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:1)
100     at android.os.AsyncTask$2.call(AsyncTask.java:287)
101     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
102     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
103     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
104     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
105     at java.lang.Thread.run(Thread.java:856)
106 Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
107     ... 29 more
108 libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
109     at libcore.io.Posix.getaddrinfo(Native Method)
110     at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)
111     at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
112     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
113     at java.net.InetAddress.getAllByName(InetAddress.java:214)
114     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
115     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
116     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
117     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
118     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
119     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
120     at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
121     at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
122     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
123     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
124     at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
125     at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:185)
126     at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
127     at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.java:1143)
128     at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.java:982)
129     at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.java:211)
130     at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:28)
131     at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.java:1)
132     at android.os.AsyncTask$2.call(AsyncTask.java:287)
133     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
134     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
135     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
136     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
137     at java.lang.Thread.run(Thread.java:856)

এখানে আমার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="my_app_package"
    android:installLocation="auto"
    android:versionCode="my_version_code"
    android:versionName="my_version_name" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

    <uses-feature android:glEsVersion="0x00010001" />

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowTaskReparenting="true"
        android:debuggable="true"
        android:icon="@drawable/mxm_icon"
        android:label="@string/musicbrowserlabel"
        android:theme="@style/Theme.Music" >

        <!-- MY ACTIVITIES -->



    </application>

</manifest>

দয়া করে আমার জিজ্ঞাসা করে বিরক্ত করবেন না যে আমার প্রকাশ্যে সঠিক ইন্টারনেট অনুমতি আছে কিনা কারণ এই অ্যাপ্লিকেশনটি 2 বছর ধরে বাজারে রয়েছে: পি

আমি আরও লক্ষ্য করেছি যে (ক্রিট্রিসিজম থেকে) সমস্ত বাগ অ্যান্ড্রয়েড 4.1.x সংস্করণ (জেবি) থেকে আসছে। আমি জানি না ডিভাইসটি মূলযুক্ত কিনা বা কী (মুহুর্তের জন্য আমি এই তথ্যটি দেখতে পাচ্ছি না)


হোস্টনেম পরিবর্তিত হয়েছে (এই ত্রুটি বার্তার কারণে): হোস্ট নেমের সাথে কোনও ঠিকানা যুক্ত নেই
Opiatefuchs

আপনি কি ডিভাইসের বিভিন্ন সংস্করণ দিয়ে চেষ্টা করেছেন? বা প্রতিটি সংস্করণে পাচ্ছেন?
পঙ্কজ কুমার

4
plz যোগ <ব্যবহারের অনুমতি অ্যান্ড্রয়েড: নাম = "android.permission.INTERNET" /> <ব্যবহার-অনুমতি Android: নাম = "android.permission.ACCESS_NETWORK_STATE" /> বাইরে <অ্যাপ্লিকেশন> ট্যাগ দয়া করে আপনার প্রকল্পটি পুনর্নির্মাণ করুন এবং চালান। এটি আমার জন্য কাজ করেছে
আজাহার

অর্ডারটি কীভাবে গুরুত্বপূর্ণ, স্ট্যাকওভারফ্লো.com
নবীন

@ স্টিরিমি আপনি কি এই বিষয়টি সমাধান করেছেন, আমিও একই পরিস্থিতির মুখোমুখি হয়েছি
রবীন্দ্র মৌর্য

উত্তর:


119

দ্রষ্টব্য: আমি এই উত্তরটি জুন 2013 সালে লিখেছি, তাই এটি আজকাল কিছুটা তারিখের। সংস্করণ ((মার্শমেলো) থেকে অ্যান্ড্রয়েড প্ল্যাটফর্মে অনেক কিছুই পরিবর্তিত হয়েছে, আজকাল পুরো সমস্যাটি কম / বেশি অপ্রচলিত হয়ে পড়েছে। তবে আমি বিশ্বাস করি যে পোস্টটি এখনও সাধারণ সমস্যা বিশ্লেষণ পদ্ধতির উদাহরণ হিসাবে পড়ার উপযুক্ত হতে পারে।


আপনি ( SecurityException: Permission denied (missing INTERNET permission?)) পাচ্ছেন এমন ব্যতিক্রম পরিষ্কারভাবে ইঙ্গিত দেয় যে আপনাকে নেটওয়ার্কিং করার অনুমতি নেই। এটা বেশ নির্বিচার ঘটনা। তবে কীভাবে এটি ঘটতে পারে? সাধারণত এটি হয় <uses-permission android:name="android.permission.INTERNET" />আপনার AndroidManifest.xmlফাইলে প্রবেশের অনুপস্থিতির কারণে বা যেমন চালনার সময় ইনস্টলের সময় ইন্টারনেট অনুমতি দেওয়া হয়, দীর্ঘ স্থায়ীভাবে, অ্যান্ড্রয়েড ফ্রেমওয়ার্কে মিস করা বাগ যা আপনার অ্যাপ্লিকেশনটি সফলভাবে ইনস্টল করার কারণ হয়ে থাকে, তবে প্রত্যাশিত অনুমতি মঞ্জুরি ছাড়াই।

আমার ম্যানিফেস্ট সঠিক, সুতরাং এটি কীভাবে ঘটতে পারে?

তাত্ত্বিকভাবে, uses-permissionম্যানিফেস্টের উপস্থিতি পুরোপুরি প্রয়োজনীয়তা পূরণ করে এবং বিকাশকারী দৃষ্টিকোণ থেকে নেটওয়ার্কিং করতে সক্ষম হওয়ার জন্য প্রয়োজনীয় সমস্ত কিছুই। তদুপরি, ইনস্টলেশন চলাকালীন ব্যবহারকারীর কাছে অনুমতিগুলি দেখানো হয়েছে, আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীর ডিভাইসে ইনস্টল হওয়া শেষ হওয়ার অর্থ হ'ল তিনি যা চেয়েছিলেন তা মঞ্জুরি দিয়েছিল (অন্যথায় ইনস্টলেশন বাতিল করা হয়েছে), সুতরাং ধরে নেওয়া যে যদি আপনার কোডটি কার্যকর করা হয় তবে সমস্ত অনুরোধকৃত অনুমতিগুলি হ'ল অনুমোদিত বৈধ। এবং একবার মঞ্জুর হয়ে গেলে ব্যবহারকারী অ্যাপটি সম্পূর্ণভাবে স্ট্যান্ডার্ড অ্যান্ড্রয়েড ফ্রেমওয়ার্ক (এওএসপি থেকে) আনইনস্টল করা ছাড়া অন্যভাবে অনুমতিটি প্রত্যাহার করতে পারে না (মুহূর্তে এ জাতীয় কোনও বৈশিষ্ট্য নেই)।

তবে আপনি যদি আপনার অ্যাপটিও রুট ডিভাইসে চালিত করতে আপত্তি না পান তবে জিনিসগুলি আরও জটিল হয়ে উঠছে । গুগল প্লেতে এমন সরঞ্জামগুলি উপলভ্য রয়েছে যা আপনার ব্যবহারকারীরা রান-টাইমে ইনস্টল থাকা অ্যাপ্লিকেশনগুলিকে প্রদত্ত অনুমতি নিয়ন্ত্রণ করতে ইনস্টল করতে পারে - উদাহরণস্বরূপ: অনুমতি অস্বীকৃত এবং অন্যান্য। এটি সায়ানোজেনমড , বিক্রেতার ব্র্যান্ড (যেমন এলজি'র) বা অন্যান্য কাস্টম রম সহ বিভিন্ন ধরণের "প্রাইভেসি ম্যানেজার" বা অনুরূপ সরঞ্জামগুলির বৈশিষ্ট্যযুক্তও করা যেতে পারে।

সুতরাং যদি অ্যাপ্লিকেশনটি কোনওভাবেই অবরুদ্ধ করা থাকে তবে এটি ব্যবহারকারী দ্বারা ইচ্ছাকৃতভাবে অবরুদ্ধ করা হয়েছে এবং যদি তা হয় তবে এই ক্ষেত্রে এটি ব্যবহারকারীর বেশি সমস্যা (বা তিনি বুঝতে পারেন না যে নির্দিষ্ট বিকল্প / সরঞ্জামগুলি আসলে কী করে এবং এর পরিণতি কী হবে) আপনার চেয়ে, কারণ স্ট্যান্ডার্ড এসডিকে (এবং বেশিরভাগ অ্যাপ্লিকেশন সেই এসডিকে মাথায় রেখেই লেখা হয়) কেবল সেভাবে আচরণ করে না। সুতরাং আমি দৃ strongly়ভাবে সন্দেহ করি যে এই সমস্যাটি "স্ট্যান্ডার্ড", স্টক (বা স্যামসুং, এইচটিসি, সনি ইত্যাদির মত বিক্রেতাদের) সাথে অ মূলযুক্ত ডিভাইসে ঘটে।

আমি ক্রাশ করতে চাই না ...

যথাযথভাবে প্রয়োগ করা অনুমতি ব্যবস্থাপনার এবং / org ব্লকিংয়ের বিষয়টি অবশ্যই মোকাবেলা করতে হবে যে বেশিরভাগ অ্যাপ্লিকেশন সেই পরিস্থিতিতে প্রস্তুত হতে পারে না যেখানে নির্দিষ্ট বৈশিষ্ট্যগুলির অ্যাক্সেস একই সাথে উভয়ই মঞ্জুর হয় এবং অ্যাক্সেসযোগ্য হয় না, কারণ এটি এই ধরনের বৈপরীত্য যেখানে অ্যাপ্লিকেশনটিতে ম্যানিফেস্টকে ব্যবহার করে ইনস্টলেশন সময় অ্যাক্সেস অনুরোধ। ডান হয়ে যাওয়া অ্যাক্সেস নিয়ন্ত্রণে অবশ্যই সমস্ত কিছু আগের মতো কাজ করা উচিত এবং বৈশিষ্ট্যের প্রত্যাশিত আচরণের সুযোগের কৌশলগুলি ব্যবহার করে এখনও ব্যবহারের সীমাবদ্ধ করতে হবে। উদাহরণস্বরূপ, যখন নির্দিষ্ট অনুমতি দেওয়া হয় (যেমন জিপিএস, ইন্টারনেট অ্যাক্সেস) অ্যাপ্লিকেশন / ব্যবহারকারীর দৃষ্টিকোণ থেকে এই জাতীয় বৈশিষ্ট্য উপলব্ধ করা যেতে পারে (যেমন আপনি জিপিএস চালু করতে পারেন বা সংযোগের চেষ্টা করতে পারেন), পরিবর্তিত বাস্তবায়ন কোনও বাস্তব ডেটা সরবরাহ করতে পারে না - অর্থাত্ জিপিএস সর্বদা কোনও স্থানাঙ্ক ফেরত দিতে পারে না, যেমন আপনি যখন অন্দরে থাকেন বা কোনও উপগ্রহ "ফিক্স" না করেন। ইন্টারনেট অ্যাক্সেস আগের মতো মঞ্জুরি দেওয়া যেতে পারে, কিন্তু কোনও ডেটা কভারেজ বা রাউটিং না থাকায় আপনি কোনও সফল সংযোগ তৈরি করতে পারবেন না। এই জাতীয় পরিস্থিতিগুলি সাধারণ ব্যবহারেও আশা করা উচিত, তাই এটি ইতিমধ্যে অ্যাপ্লিকেশনগুলি দ্বারা পরিচালনা করা উচিত। যেহেতু এটি সাধারণভাবে প্রতিদিন ব্যবহারের সময় ঘটতে পারে, এ জাতীয় পরিস্থিতিতে যে কোনও ক্র্যাশ সম্ভবত অ্যাপ্লিকেশন বাগের সাথে সম্পর্কিত।

আমাদের যে পরিবেশের উপর এই সমস্যাটি ডাব্লু / ও অনুমান করার ফলে সমস্যাটি নির্ণয় করে সে সম্পর্কে আমাদের খুব বেশি তথ্য নেই, তবে সমাধানের ধরণের হিসাবে আপনি ভবিষ্যতে এই জাতীয় অপ্রত্যাশিত ব্যতিক্রমগুলি ধরতে setDefaultUncaughtExceptionHandler () ব্যবহার করার কথা বিবেচনা করতে পারেন এবং ব্যবহারকারীর বিস্তারিত তথ্য কী অনুমতিতে প্রদর্শন করতে পারবেন আপনার অ্যাপ্লিকেশনটির কেবল ক্র্যাশ করার পরিবর্তে প্রয়োজন। দয়া করে নোট করুন যে এটি ব্যবহার করা সম্ভবত ক্রিট্রিসিজম, এসিআরএ এবং অন্যান্যগুলির মতো সরঞ্জামগুলির সাথে বিরোধ করবে, সুতরাং আপনি যদি এগুলির কোনও ব্যবহার করেন তবে সাবধান হন।

মন্তব্য

android.permission.INTERNETসফলভাবে নেটওয়ার্কিং করার প্রয়াসে আপনাকে ম্যানিফেস্টে ঘোষণা করার দরকার হতে পারে এমন একমাত্র নেটওয়ার্কিং সম্পর্কিত অনুমতি নয় দয়া করে সচেতন হন । রয়ে INTERNETঅনুমতিপ্রাপ্ত কেবল খোলা নেটওয়ার্ক সকেট অ্যাপ্লিকেশন দেয় (যা মূলত কোনো নেটওয়ার্ক ডাটা ট্রান্সফার করতে মৌলিক প্রয়োজন)। তবে যদি আপনার নেটওয়ার্ক স্ট্যাক / লাইব্রেরি নেটওয়ার্কগুলি সম্পর্কেও তথ্য পেতে চান তবে android.permission.ACCESS_NETWORK_STATEআপনার ম্যানিফেস্টেও এটি প্রয়োজন হবে (যা HttpUrlConnication ক্লায়েন্টের দ্বারা প্রয়োজনীয় ( টিউটোরিয়াল দেখুন )।


সংযোজন (2015-07-16)

দয়া করে নোট করুন যে অ্যান্ড্রয়েড 6 (ওরফে মার্শমেলো) রানটাইম অনুমতি নামে সম্পূর্ণ নতুন অনুমতি ব্যবস্থাপনার ব্যবস্থা চালু করে । এটি ব্যবহারকারীকে কী অনুমতি মঞ্জুর করা হয়েছে তার উপর আরও নিয়ন্ত্রণ প্রদান করে (এছাড়াও নির্বাচনী অনুদানের অনুমতি দেয়) বা অ্যাপ্লিকেশন অপসারণের জন্য ইতিমধ্যে অনুমোদিত অনুমতিগুলি প্রত্যাহার করতে দেয়:

এটি [...] একটি নতুন অনুমতি মডেল প্রবর্তন করে, যেখানে ব্যবহারকারীরা এখন রানটাইমে অ্যাপ্লিকেশন অনুমতিগুলি সরাসরি পরিচালনা করতে পারবেন। এই বিকাশকারীদের অ্যাপ্লিকেশন বিকাশকারীদের জন্য ইনস্টলেশন এবং স্বতঃ-আপডেট প্রক্রিয়াগুলি সুগঠিত করার সময় ব্যবহারকারীরা অনুমতিগুলির উপর উন্নত দৃশ্যমানতা এবং নিয়ন্ত্রণ সরবরাহ করে। ব্যবহারকারীরা ইনস্টল করা অ্যাপ্লিকেশনগুলির জন্য স্বতন্ত্রভাবে অনুমতিগুলি মঞ্জুরি বা প্রত্যাহার করতে পারে।

তবে, পরিবর্তনগুলি প্রভাবিত করে না INTERNETবা ACCESS_NETWORK_STATEঅনুমতিগুলিকে অনুমতি দেয় না, যা "সাধারণ" অনুমতি হিসাবে বিবেচিত হয়। ব্যবহারকারীর স্পষ্টভাবে এই অনুমতি প্রদান করার প্রয়োজন নেই।

দেখুন আচরণ পরিবর্তন বিবরণ বিস্তারিত জানার জন্য পৃষ্ঠা এবং নিশ্চিত করুন যে আপনার অ্যাপ খুব নতুন সিস্টেমে সঠিকভাবে আচরণ করবে। এটি বিশেষত গুরুত্বপূর্ণ যখন আপনার প্রকল্পটি targetSdkঅন্ততপক্ষে সেট হয়ে থাকে 23তখন আপনাকে অবশ্যই নতুন অনুমতি মডেল ( বিস্তারিত ডকুমেন্টেশন ) সমর্থন করতে হবে । আপনি যদি প্রস্তুত না targetSdkহন তবে আপনার সর্বাধিক 22প্রতিপালনের বিষয়টি নিশ্চিত করুন কারণ এটি আপনার অ্যাপ্লিকেশন ইনস্টল হওয়ার পরেও নতুন অ্যান্ড্রয়েড পুরানো অনুমতি সিস্টেম ব্যবহার করবে ens


এর পরিষ্কার বোঝা যাচ্ছে যে তাকে নেটওয়ার্কিং করার অনুমতি নেই। এটি হয় হয় ম্যানিফেস্টে অনুরোধ করা হয়নি বা প্ল্যাটফর্মের মাধ্যমে মঞ্জুরিপ্রাপ্ত নয় (যা করা যেতে পারে অর্থাত্ রুট ডিভাইসগুলিতে)।
মার্সিন ওরোলোস্কি

4
অন্য কারও কাছ থেকে ডাউনভোটটি পূর্বাবস্থায় ফেরানোর জন্য এই উত্তরটিকে আপভোট করেছেন। প্রথমে আমি ভেবেছিলাম যে আপনি সত্যিই পুরো প্রশ্নটি পড়েন নি এবং কেবল দ্রুত হতে চেয়েছিলেন (উপায় দ্বারা, আপনার উত্তরটি প্রথমে খুব কম ছিল ;-)) তবে আমি মনে করি ব্যবহারকারীদের সম্পর্কে মন্তব্য (মূলযুক্ত ডিভাইসে) আপনার অনুমতি অনুরোধগুলি ব্যর্থ করতে সক্ষম হওয়া ভাল ছিল।
বাসেকে

এমএমএমএম তাই যদি এটি মূল ব্যবহারকারীদের থেকে থাকে যা অনুমতিগুলি সরিয়ে রাখে আমার 2 টি প্রশ্ন রয়েছে: 1) আমি কীভাবে জানতে পারি যে আমি সেই অনুমতিটি না পেয়েছি? 2) আমি আবার এটি জিজ্ঞাসা করতে পারেন? (এখনও, আমি জানি না আমরা এই ধরণের সমস্যার বিষয়ে কথা বলছি কিনা)
StErMi

আপনি এটির জন্য আর জিজ্ঞাসা করতে পারবেন না, কারণ রানটাইমের সময় এই অনুমতি দেওয়া হয়নি। সম্ভাব্য "সমাধান" এর সম্পাদিত উত্তর দেখুন
মার্সিন ওরোলোস্কি

4
এখানে একই: আমি ডাউনগ্রেড করতে যাচ্ছিলাম তবে নতুন অংশের দ্বিতীয় অংশটি পড়ার মতো অংশ বলে মনে হচ্ছে :) আপনার উত্তরগুলির প্রথম পংক্তি সরিয়ে দেওয়া উচিত কারণ স্টেরমি স্পষ্টভাবে দেখিয়েছিলেন যে তিনি ইন্টারনেটের অনুমতি নিয়েছিলেন।
থিয়েরি

43

আপনি যে জায়গাটি যুক্ত করেছেন তা নিশ্চিত হন

<uses-permission android:name="android.permission.INTERNET"/>

সঠিক.

আপনার এটিকে এন্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে লেখা উচিত:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.project"> 
<uses-permission android:name="android.permission.INTERNET"/>

আমার ভুল করবেন না :)


33

অ্যান্ড্রয়েড স্টুডিও 1.3b1 (অন্যান্য সংস্করণ সম্পর্কে নিশ্চিত নয়) এতে আমার ইন্টারনেট অনুমতিটি স্বয়ংক্রিয়ভাবে পূর্ণ করে ANDROID.PERMISSION.INTERNETandroid.permission.INTERNETইস্যুটি ঠিক করার জন্য এটি পরিবর্তন করা ।


এটি এখন অ্যান্ড্রয়েড স্টুডিও 1.4 আরসি 1 (বর্তমানে ক্যানারি চ্যানেলে) এ স্থির করা উচিত।
টম

31

লাইনটি ম্যানিফেস্ট ফাইলটিতে যুক্ত করুন:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

এটা আমার জন্য এটি স্থির।


20

আমি এই ত্রুটিটি সমাধান করেছি, আমি ভুল করে অ্যাপ্লিকেশন ট্যাগের মধ্যে অনুমতিগুলি যুক্ত করছি। আমি বাইরে রেখেছি এবং এটি ঠিক আছে। আশা করি এটি কারওর জন্য সহায়তা করবে।


16

আমারও এই সমস্যা ছিল এটি অদ্ভুত ছিল যে এটি আমার ললিপপ এমুলেটরটিতে কাজ করেছিল, তবে আমার আসল কিটক্যাট ডিভাইসে নয়।

অ্যান্ড্রয়েড স্টুডিও এখন অনুমতি উপরের কেস লিখতে বাধ্য করবে, এবং এটিই সমস্যা।

অ্যাড

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

অ্যাপ্লিকেশন ট্যাবের উপরে এবং এটি কাজ করবে।


এটি সহজ এবং সঠিক উত্তর। এবং উপরে এক হওয়া উচিত!
কোস্টানোস

14

নীচে দেওয়া হিসাবে অ্যাপ্লিকেশন ট্যাগের আগে আপনার অনুমতি লিখুন।

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.someapp.sample">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

আসলে এটিই আমাকে সাহায্য করেছিল :( মোটেই স্বজ্ঞাত নয়
ইভান পেরেজ ২

4

<application>ট্যাগের আগে এই অনুমতিটি ট্যাগের বাইরে রাখুন , আমি এটি চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করে।

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


2

টম যেমন উল্লেখ করেছেন। আপনি যখন মূলধন দিয়ে শুরু করবেন Aতখন স্বয়ংক্রিয়ভাবে এটি সম্পূর্ণ হবে।

ANDROID.PERMISSION.INTERNET

আপনি যখন টাইপ শুরু করবেন aতখন স্বয়ংক্রিয়রূপে এটি সম্পূর্ণ হবে

android.permission.INTERNET

দ্বিতীয়টি হ'ল সঠিকটি।


2

আমি এই সমস্যার সমাধান অনুসন্ধান করতে ঘন্টা ব্যয় করি এবং উত্তরের সমাধানগুলির মধ্যে কোনওটিই কাজ করে না। তারপরে আমি জানতে পারি যে ঘটনাক্রমে আমি android.permission.INTERNETএবং এর মধ্যে স্বতঃপূরণের সময় একটি স্থান যুক্ত করেছি"


0

ঠিক আছে এটি একটি বিভ্রান্তিকর বাগ অনেক কারণ থাকতে পারে:

  1. আপনি সঠিক জায়গায় অনুমতিগুলি উল্লেখ করছেন না। ঠিক উপরের অ্যাপ্লিকেশন পছন্দ।
  2. আপনি ছোট অক্ষর ব্যবহার করছেন না।
  3. কিছু ক্ষেত্রে আপনাকে নেটওয়ার্ক স্টেটের অনুমতিও যুক্ত করতে হবে।
  4. আমার ক্ষেত্রে এটি ছিল ম্যানিফেস্ট লাইনে কিছু ফাঁকা লাইন। অনুমতি ট্যাগ এবং অ্যাপ্লিকেশন লাইনের মধ্যে কোনও ফাঁকা রেখা থাকতে পারে। এগুলি সরান এবং আপনার কাজ শেষ হয়েছে। আশা করি এটি সাহায্য করবে

-7

এটি আপনার ম্যানিফেস্ট ফাইলটিতে সরান

 xmlns:tools="http://schemas.android.com/tools"

প্রশ্নে ম্যানিফেস্ট ফাইলে (অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল) তেমন কোনও কোড নেই।
পাং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.