5

में काम नहीं कर रहा है मैंने अपने ऐप में Dexter लागू किया है। यह कैमरे, बाहरी भंडारण और आंतरिक भंडारण अनुमति के लिए ठीक काम है। मैं Dexter के साथ PHONE_CALL अनुमति के साथ कॉल करना चाहता हूं। जब मैं इस तरह फोन कॉल के लिए आशय फोन:PHONE_CALL Dexter

Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + strNum)); 
startActivity(callIntent); 

तो startActivity शो चेतावनी Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException less... (Ctrl+F1)

मुझे समझ नहीं आता मैं Dexter तो लागू क्यों startActivity स्वयं अनुमति चाहते है?

उत्तर

2

एपीआई 23+ आप के रूप में अनुमति के लिए जाँच करनी चाहिए के लिए:

if (mContext.checkSelfPermission(Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) { 
    Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + strNum)); 
    startActivity(callIntent): 
} 

Intent.ACTION_CALL intent है, जो एक अनुमति, अर्थात् android.permission.CALL_PHONE एक की आवश्यकता है। लेकिन sdk> = 23 के लिए आपको Manifest.permission.CALL_PHONE के साथ रनटाइम में जांचना होगा। यह 23 और उससे ऊपर के targetedsdkversion के लिए है।

यदि आप 23 से नीचे अपने targetedsdkversion को कम करते हैं तो आपको इस प्रेरणा की आवश्यकता नहीं है और Intent.ACTION_CALL ठीक काम करेगा।

+0

मुझे पता है कि। लेकिन मैंने अनुमति मॉडल के लिए डेक्सटर लाइब्रेरी का उपयोग किया है। तो मुझे स्वयं अनुमति की जांच क्यों करनी है और दूसरी बात यह है कि यदि मैं 'Intent.ACTION_CALL' के बजाय' Intent.ACTION_DIAL' का उपयोग करता हूं तो यह चेतावनी नहीं दिखाता है। तो मुझे समझ में नहीं आता कि मुझे क्या करना चाहिए? –

+0

मेरे संपादित उत्तर की जांच करें .. Intent.ACTION_DIAL सीधे कॉल नहीं करेगा .. यह आपके द्वारा डाले गए नंबर के साथ डायलर लाता है .. यही कारण है कि Intent.ACTION_DIAL को अनुमति की आवश्यकता नहीं है क्योंकि उपयोगकर्ता मैन्युअल रूप से कॉल करने की पुष्टि करता है ..... –

+0

मैं केवल डेक्सटर द्वारा PHONE_CALL अनुमति की जांच करना चाहता हूं। क्या यह संभव है या नहीं? और यदि संभव हो तो कैसे? –