Permissions

Understanding Runtime Permissions and their implementation in Android

Introduction to Permissions

Android में permissions user privacy और security को protect करने के लिए important हैं। Android 6.0 (API level 23) से, dangerous permissions को runtime पर request करना पड़ता है।

Permissions in Android are important for protecting user privacy and security. Since Android 6.0 (API level 23), dangerous permissions must be requested at runtime.

Key Features (मुख्य विशेषताएं):

  • Permissions user privacy को protect करते हैं
  • Permissions protect user privacy
  • Permissions runtime पर request किए जाते हैं
  • Permissions are requested at runtime
  • Permissions को groups में organize किया जाता है
  • Permissions are organized in groups
  • Permissions को check और request किया जा सकता है
  • Permissions can be checked and requested

Types of Permissions (परमिशन्स के प्रकार)

Android में permissions के main types:

Main types of permissions in Android:

Type (प्रकार) Description (विवरण)
Normal Permissions Install time पर automatically granted होते हैं
Normal Permissions Automatically granted at install time
Dangerous Permissions Runtime पर user से request किए जाते हैं
Dangerous Permissions Requested from user at runtime
Special Permissions System settings से granted होते हैं
Special Permissions Granted from system settings

Implementation Example (इम्प्लीमेंटेशन उदाहरण)

Permissions को implement करने का example:

Example of implementing permissions:

// Add permissions to AndroidManifest.xml



// Check and request permissions
class MainActivity : AppCompatActivity() {
    private val CAMERA_PERMISSION_CODE = 100
    private val STORAGE_PERMISSION_CODE = 101

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Check camera permission
        if (checkSelfPermission(Manifest.permission.CAMERA) 
            == PackageManager.PERMISSION_GRANTED) {
            // Permission already granted
            openCamera()
        } else {
            // Request permission
            requestPermissions(
                arrayOf(Manifest.permission.CAMERA),
                CAMERA_PERMISSION_CODE
            )
        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        
        when (requestCode) {
            CAMERA_PERMISSION_CODE -> {
                if (grantResults.isNotEmpty() && 
                    grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // Permission granted
                    openCamera()
                } else {
                    // Permission denied
                    showPermissionDeniedMessage()
                }
            }
        }
    }

    private fun openCamera() {
        // Open camera
    }

    private fun showPermissionDeniedMessage() {
        // Show message
    }
}

Best Practices (सर्वोत्तम प्रथाएं)

Permissions के साथ काम करने के best practices:

Best practices for working with permissions:

  • Minimal Permissions: Only required permissions का use करें
  • Minimal Permissions: Use only required permissions
  • Explain Usage: Permission usage को explain करें
  • Explain Usage: Explain permission usage
  • Graceful Degradation: Permission denied case को handle करें
  • Graceful Degradation: Handle permission denied case
  • Testing: Different permission scenarios को test करें
  • Testing: Test different permission scenarios