मैं एंड्रॉइड बीकन लाइब्रेरी का उपयोग कर रहा हूं। मार्शमलो के बाद से, मुझे अपेक्षित और दस्तावेज के रूप में निम्न त्रुटि दिखाई दे रही है।पृष्ठभूमि में निगरानी नहीं करते समय स्थान अनुमति के लिए संकेत?
अनुमति इनकार: ACCESS_COARSE_LOCATION की जरूरत है या ACCESS_FINE_LOCATION अनुमति स्कैन परिणाम
मैं है एक टुकड़ा में मेरी लेकर कोड, और RuntimeException के रूप में के रूप में मैं उम्मीद थी, जब टुकड़ा स्क्रीन पर है फेंक दिया जाता है पाने के लिए मैं अनुमति के लिए संकेत नहीं दे रहा हूँ। अगर मैंने होम बटन दबाया है, तो पॉज़ कहा जाता है, और मैं बीकन मैनेजर को अनबाइंड कर रहा हूं, और अपवाद को फिर से फेंक दिया नहीं गया है। पिछली ऐप सूची से गतिविधि पर वापस आकर, रनटाइम अपवाद को फिर से प्रत्येक स्कैन फेंक दिया जाता है।
अग्रभूमि में जब अपवाद फेंक दिया गया है, भले ही मैंने AndroidManifest को अनुमति दी है?
प्रलेखन HERE के अनुसार, यदि आप पृष्ठभूमि में स्कैन कर रहे हैं तो आपको केवल स्थान अनुमति के लिए उपयोगकर्ता को संकेत देने की आवश्यकता है?
आप तब होगी जब आप पृष्ठभूमि में एक ब्लूटूथ स्कैन करने की कोशिश LogCat में निम्न त्रुटि, मिलता है, और कोई बीकन
पता लगाया जाएगा इसका मतलब यह है केवल एक पृष्ठभूमि स्कैन या क्या मैं प्रलेखन की गलत व्याख्या कर रहा हूं, और आपको बिना किसी पर ध्यान देना चाहिए? मैं बचने योग्य ऐप के अंदर अनुमति के लिए अतिरिक्त (ऑफ-डॉटिंग शायद घबराहट उपयोगकर्ताओं को) से बचना चाहता हूं !!
मेरे प्रकट होता है -
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
मेरे टुकड़ा से snipped कोड है -
public class NearMeNowFragment extends Fragment implements BeaconConsumer {
//Beacon manager stuff
private BeaconManager beaconManager;
<SNIP>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
beaconManager = BeaconManager.getInstanceForApplication(getActivity());
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.near_me_now, container, false);
//Set up beacon stuff if Bluetooth available
if (verifyBluetooth(false)) {
beaconManager.bind(this);
}
<SNIP>
return rootView;
}
/***************************
Beacon config methods
****************************
*/
@Override
public void onBeaconServiceConnect() {
//update all scan periods
beaconManager.setForegroundScanPeriod(1100l);
beaconManager.setForegroundBetweenScanPeriod(8900l);
beaconManager.setAndroidLScanningDisabled(true);
try {
beaconManager.updateScanPeriods();
} catch (RemoteException e) {
e.printStackTrace();
}
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
<SNIP>
//handling beacons here
...
} else {
Log.i(TAG, "ZERO BEACONS IN SCAN");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region(TAG, null, null, null));
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public Context getApplicationContext() {
return getActivity().getApplicationContext();
}
@Override
public void unbindService(ServiceConnection serviceConnection) {
getActivity().unbindService(serviceConnection);
}
@Override
public boolean bindService(Intent intent, ServiceConnection serviceConnection, int mode) {
return getActivity().bindService(intent, serviceConnection, mode);
}
@Override
public void onPause() {
super.onPause();
if(beaconManager.isBound(this)){
beaconManager.unbind(this);
}
}
@Override
public void onResume() {
super.onResume();
beaconManager.bind(this);
}
@Override
public void onDestroy() {
super.onDestroy();
if(beaconManager.isBound(this)){
beaconManager.unbind(this);
}
}
}
मेरे वास्तविक Logcat त्रुटि
डब्ल्यू/बाइंडर है: बाइंडर स्टब i से एक रनटाइम अपवाद पकड़ा mplementation। java.lang.SecurityException: ACCESS_COARSE_LOCATION की जरूरत है या ACCESS_FINE_LOCATION अनुमति स्कैन परिणाम
उत्कृष्ट! अब मैं प्रॉम्प्ट का उपयोग कर रहा हूं और अनुमति प्राप्त कर रहा हूं। अगर मैं कुछ स्पष्ट याद कर रहा था तो मैं बस इससे बचना चाहता था। पृष्ठभूमि या फोरग्राउंड में कोई बीकन शामिल करने के लिए "requesting_permission" दस्तावेज़ के पहले पैराग्राफ को अपडेट करना उचित हो सकता है? – WallyHale
मैंने अभी आपके ब्लॉग पोस्ट में निष्कर्ष पढ़ा है, यह आपके ऊपर क्या कहा गया है इसके विपरीत है ?? QUOTE - "यदि आपके पास एक बीकन ऐप है जो केवल अग्रभूमि में काम करने की ज़रूरत है, तो कोई बदलाव की आवश्यकता नहीं है। यदि आपके पास एक बीकन ऐप है जिसे पृष्ठभूमि में काम करने की आवश्यकता है, तो आपको उचित स्थान अनुमतियों का अनुरोध करने के लिए इसे अपडेट करने की आवश्यकता है पहला खंड "। मेरा ऐप केवल अग्रभूमि में काम कर रहा है ?? – WallyHale
मुझे खुद को अच्छी तरह से समझा नहीं जाना चाहिए। :) यदि मैं कथन बदलता हूं "यदि आपके पास मौजूदा बीकन ऐप है जो अभी तक एसडीके 23 को लक्षित नहीं करता है और केवल अग्रभूमि में काम करने की आवश्यकता है, तो कोई बदलाव की आवश्यकता नहीं है।" क्या यह कथित विरोधाभास दूर हो जाता है? – davidgyoung