2015-10-20 5 views
14

मैं निम्नलिखित दुर्घटना हो रही है, लेकिन यह केवल कुछ Samsung उपकरणों पर होता है (सभी नहीं, हम विकसित सैमसंग उपकरणों पर/परीक्षण)java.lang.SecurityException: BLUETOOTH अनुमति क्रैश। (सैमसंग उपकरणों केवल)

क्रैश लॉग:

java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10025 nor current process has android.permission.BLUETOOTH. 
    at android.os.Parcel.readException(Parcel.java:1540) 
    at android.os.Parcel.readException(Parcel.java:1493) 
    at android.bluetooth.IBluetooth$Stub$Proxy.isEnabled(IBluetooth.java:1156) 
    at android.bluetooth.BluetoothAdapter.isEnabled(BluetoothAdapter.java:697) 
    at org.altbeacon.beacon.service.scanner.CycledLeScanner.finishScanCycle(CycledLeScanner.java:245) 
    at org.altbeacon.beacon.service.scanner.CycledLeScanner.scheduleScanCycleStop(CycledLeScanner.java:234) 
    at org.altbeacon.beacon.service.scanner.CycledLeScanner$1.run(CycledLeScanner.java:230) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:5972) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

यहाँ मेरा AndroidManifest:

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


<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.BLUETOOTH"/> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
<!-- 
    The following two permissions are not required to use Google Maps Android API v2, 
    but are recommended. We also require them for location updates. 
--> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<permission 
    android:name=".permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

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

<application 
    android:name=".myapp" 
    android:allowBackup="true" 
    android:icon="@drawable/appicon" 
    android:label="@string/app_name" 
    android:logo="@drawable/action_bar_pinwheel_back" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".activities.VerifyPinActivity" 
     android:label="@string/title_activity_verify_pin" 
     android:screenOrientation="portrait" 
     android:theme="@style/NoActionBarDark" 
     android:windowSoftInputMode="stateVisible|adjustPan" > 
    </activity> 
    ...(more activities here removed) 
</application> 
</manifest> 

मुझे वास्तव में कोई जानकारी नहीं है कि यह केवल कुछ उपकरणों पर क्यों होता है; मेरा प्रारंभिक अनुमान है कि इसमें सैमसंग कोनोक्स के साथ कुछ करना है, और (कुछ) उपयोगकर्ता जो क्रैश हो रहे हैं वे ब्लूटूथ को अक्षम करने के लिए फोन नीति वाले KNOX उपयोगकर्ता हैं।

क्या कोई और इसमें भाग लेता है? या क्या किसी को पता है कि यह क्या हो सकता है?

+0

भले ही आपके पास अपने मैनिफेस्ट में उपयोग-अनुमति हो, कोई उपयोगकर्ता किसी दिए गए एप्लिकेशन के लिए कोई अनुमति अक्षम कर सकता है, हो सकता है कि यह मामला हो? वास्तव में एक जंगली अनुमान है। –

+0

एक और अनुमान: android.permission.BLUETOOTH_PRIVILEGED विशेषाधिकार जोड़ना। शायद यह उत्तर (या यहां तक ​​कि अगले एक) http://stackoverflow.com/a/18322851/4618338 भी मदद कर सकता है। –

+0

@TrynkiewiczMariusz यह मेरा पहला अनुमान भी था। मैं एक KNOX सैंडबॉक्स मोड में ऐप इंस्टॉल करने और वहां ब्लूटूथ को अक्षम करने जैसे कुछ अनुमान लगा रहा था? मुझे यकीन नहीं है कि – eric

उत्तर

3

के लिए नीचे जोड़ने के लिए क्या आप वाकई उपयोगकर्ताओं को केवल सैमसंग KNOX पर इस समस्याओं से मुलाकात कर रहे हैं की कोशिश, निम्नलिखित जवाब हो सकता है आप में मदद मिलेगी।

कदम से कदम उठाने का तरीका आपकी समस्या का समाधान करने का तरीका है।

1.This only occurs on some Samsung devices. 

इसलिए, यह अपने कोड के साथ कोई संबंध नहीं है, यह भी permission.There कुछ सैमसंग उपकरणों के साथ गलत है।

2.Check the crash log: 
java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10025 nor current process has android.permission.BLUETOOTH. 

अनुभव के मुताबिक, अगर आप मिले हैं की तरह लॉग "न तो उपयोगकर्ता **** और न ही मौजूदा प्रक्रिया *** की अनुमति है।", इसका मतलब है कि अपने अनुप्रयोग नहीं है सिस्टम में कुछ करने की अनुमति है। यह होता है अक्सर आप सिस्टम स्तर की अनुमति की आवश्यकता होती है।

Samsung Knox (stylized Samsung KNOX) is an enterprise mobile security solution.

ब्लूटूथ के अन्य device.This के लिए आंकड़ा संचरण जिस तरह से एक तरह का सुरक्षा समस्या का कारण होगा:

If you are installed as system level app together with customized Android ROM,or you signed your app with the platform.x509.pem and platform.pk8 file of the customized Android ROM,and then you can have the permission. 

अब जांच सैमसंग KNOX क्या है।

चेक आधिकारिक वेबसाइट:
https://www.samsungknox.com

खोजें कुंजी शब्द 'ब्लूटूथ', और हमने पाया इस: https://www.samsungknox.com/en/faq/are-bluetooth-bluetooth-low-energy-and-nfc-available-inside-knox-container

KNOX 2.4+ - ब्लूटूथ, ब्लूटूथ निम्न ऊर्जा (गैट), और एनएफसी कोएनएक्सएक्स कंटेनर के अंदर समर्थित हैं।

KNOX 2.3 या नीचे - ब्लूटूथ, ब्लूटूथ जीएटीटी, और एनएफसी कोएनएक्स कंटेनर के अंदर समर्थित नहीं हैं। यदि डिवाइस परिधीय से जुड़ा हुआ है (उदा।हेडफ़ोन) व्यक्तिगत स्थान पर, ब्लूटूथ जुड़े रहेंगे, भले ही उपयोगकर्ता KNOX कंटेनर में प्रवेश करता हो। KNOX कंटेनर के अंदर ऐप्स ब्लूटूथ कनेक्शन शुरू नहीं कर सकते हैं।

अपने उपयोगकर्ताओं 1. यदि KNOX 2.3 या नीचे का उपयोग कर रहे हैं, और वे KNOX करने के लिए डिवाइस के अपने ओएस अद्यतन कर सकते हैं 2.4+ जो सैमसंग KNOX डिवाइस के अपने ओएस को अद्यतन का उपयोग अपने उपयोगकर्ताओं .tell।

अपने उपयोगकर्ताओं 2. यदि KNOX 2.3 या नीचे का उपयोग कर रहे हैं, और वे KNOX 2.4+ .आपके एप्लिकेशन को इस स्थिति के तहत काम नहीं करेगा करने के लिए डिवाइस के अपने ओएस अद्यतन नहीं कर सकते, समस्या नहीं है समस्या, आप क्या कर सकते हैं केवल बताता है कि: आपके डिवाइस का ओएस ब्लूटूथ का समर्थन नहीं करता है, इसलिए यह काम नहीं कर रहा है।

ऊपर 3. यदि आप मदद नहीं करेगा, आप Samsung KNOX Official

एक और टिप के साथ संपर्क कर सकते हैं:
अपने अनुप्रयोग के अपने उपयोगकर्ता अनुभव को बेहतर करने के लिए, आप अपने अनुप्रयोग दुर्घटनाग्रस्त होने के लिए रोकने के लिए की जरूरत है।
क्रैश सबसे खराब उपयोगकर्ता अनुभव है।
आप समस्या को हल नहीं कर सकते हैं, तो आप ऐसा कर सकते हैं:

try{ 
    You code related with Bluetooth. 
    }catch (Exception e) 
    { 
    } 

याद रखें: सरकारी हमेशा आप समस्याओं को हल करने में मदद करता है बेहतर!


0

अपने प्रकट

<uses-feature android:name="android.hardware.bluetooth" android:required="true" /> 
+0

हालांकि KNOX कैसे काम करता है Play Store को पहले से ही ब्लूटूथ सुविधा की आवश्यकता होती है; जब ब्लूटूथ अनुमति का अनुरोध किया जाता है तो यह स्वचालित रूप से जोड़ा जाता है। यह संभवतः इसे KNOX पर्यावरण में स्थापित होने से मना कर सकता है? मुझे यह भी यकीन नहीं है कि हालांकि KNOX समस्या है। – eric

0

एसडीके 23 से आगे आप आवश्यक मामले में ब्लूटूथ के लिए अनुमति की जांच की जरूरत है।

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (mContext.checkSelfPermission(Manifest.permission.BLUETOOTH) == PackageManager.PERMISSION_GRANTED) { 
//TODO - Do the work 
    } 
    } 
1

आप here देख सकते हैं। मुझे लगता है कि यह आपकी समस्या है।

क्या ब्लूटूथ, ब्लूटूथ कम ऊर्जा और एनएफसी कोएनएक्स कंटेनर के अंदर उपलब्ध है?

KNOX 2.4+ - ब्लूटूथ, ब्लूटूथ कम ऊर्जा (जीएटीटी), और एनएफसी कोएनएक्स कंटेनर के अंदर समर्थित हैं।

KNOX 2.3 या नीचे - ब्लूटूथ, ब्लूटूथ जीएटीटी, और एनएफसी कोएनएक्स कंटेनर के अंदर समर्थित नहीं हैं। यदि डिवाइस व्यक्तिगत स्थान पर परिधीय (उदा। हेडफ़ोन) से जुड़ा हुआ है, तो ब्लूटूथ जुड़े रहेंगे, भले ही उपयोगकर्ता KNOX कंटेनर में प्रवेश करता हो। KNOX कंटेनर के अंदर ऐप्स ब्लूटूथ कनेक्शन शुरू नहीं कर सकते हैं।

मुझे इसके साथ कोई अनुभव नहीं था, लेकिन मुझे आशा है कि इससे मदद मिलती है।

0

कोनोक्स प्रीमियम v1.1 से, सैमसंग को अब तीसरे पक्ष के ऐप (एपीके) फ़ाइलों पर हस्ताक्षर करने की आवश्यकता नहीं है ताकि वे KNOX कंटेनरों के अंदर दौड़ सकें।इसके बजाए, ऐप अपने ईएलएम और केएलएम लाइसेंस को सफलतापूर्वक सक्रिय करने के बाद, रनटाइम पर उपयुक्त अनुमतियां दी जाती हैं। अधिक जानकारी के लिए this

+0

सुनिश्चित नहीं है कि यह प्रासंगिक है; ऐप KNOX कंटेनर ठीक में स्थापित करता है। – eric

संबंधित मुद्दे