آموزش درخواست مجوز در اندروید 6 به بالا

آموزش درخواست مجوز در اندروید 6 به بالا

request permission in android 6

همان طور که میدانید برای انجام هر کار در اندروید 6 یا api 23 به بالا نیاز دارید تا مجوز مربوط به آن کار رااز
کاربر درخواست کنید

برای مثال اگر میخواهید فایلی را در حافظه گوشی کپی کنید لازم است تا ابتدا مجوز نوشتن
از کاربر درخواست شود و در صورتی که کاربر برنامه شما مجوز را تایید کرد فایل مورد نظر کپی میشود

در این جا برای روشن کردن این قضیه براتون مثال ساده ای ذکر میکنیم

آموزش درخواست مجوز در اندروید 6 به بالا

 

میخواهیم یه لایوت با دو دکمه بسازیم و یکی از دکمه ها در خواست مجوز نوشتن در حافظه رو بکنه
ودیگر درخواست مجوز دوربین

ابتدا فایل AndroidManifest.xml را باز کنید و مجوز های مورد نیازتان را در جای که ذکر میشود بنویسید

[php]</p>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.geeksforgeeks.requestPermission">

<!–Declaring the required permissions–>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.CAMERA" />

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

<activity
android:name=".MainActivity">

<intent-filter>
<action
android:name="android.intent.action.MAIN" />

<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
<p style="direction: ltr;">[/php]

خوب اکنون یه لایوت ایجاد میکنیم و درون آن دودکمه قرار میدهیم هر دکمه برای درخواست یک مجوز

[php]</p>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<!– To show toolbar–>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:background="@color/colorPrimary"
app:title="GFG | Permission Example"
app:titleTextColor="@android:color/white"
android:layout_height="?android:attr/actionBarSize"/>

<!–Button to request storage permission–>
<Button
android:id="@+id/storage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Storage"
android:layout_marginTop="16dp"
android:padding="8dp"
android:layout_below="@id/toolbar"
android:layout_centerHorizontal="true"/>

<!–Button to request camera permission–>
<Button
android:id="@+id/camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Camera"
android:layout_marginTop="16dp"
android:padding="8dp"
android:layout_below="@id/storage"
android:layout_centerHorizontal="true"/>

</RelativeLayout>
<p style="direction: ltr;">[/php]

خب میریم سراغ بخش اصلی در کلا MainActivity.class کد های زیر رو مینویسیم

[php]</p>
package org.geeksforgeeks.requestPermission;

import android.Manifest;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

// Defining Buttons
private Button storage, camera;

// Defining Permission codes.
// We can give any value
// but unique for each permission.
private static final int CAMERA_PERMISSION_CODE = 100;
private static final int STORAGE_PERMISSION_CODE = 101;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

storage = findViewById(R.id.storage);
camera = findViewById(R.id.camera);

// Set Buttons on Click Listeners
storage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
checkPermission(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
STORAGE_PERMISSION_CODE);
}
});

camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
checkPermission(Manifest.permission.CAMERA,
CAMERA_PERMISSION_CODE);
}
});
}

// Function to check and request permission.
public void checkPermission(String permission, int requestCode)
{
if (ContextCompat.checkSelfPermission(MainActivity.this, permission)
== PackageManager.PERMISSION_DENIED) {

// Requesting the permission
ActivityCompat.requestPermissions(MainActivity.this,
new String[] { permission },
requestCode);
}
else {
Toast.makeText(MainActivity.this,
"Permission already granted",
Toast.LENGTH_SHORT)
.show();
}
}

// This function is called when the user accepts or decline the permission.
// Request Code is used to check which permission called this function.
// This request code is provided when the user is prompt for permission.

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults)
{
super
.onRequestPermissionsResult(requestCode,
permissions,
grantResults);

if (requestCode == CAMERA_PERMISSION_CODE) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this,
"Camera Permission Granted",
Toast.LENGTH_SHORT)
.show();
}
else {
Toast.makeText(MainActivity.this,
"Camera Permission Denied",
Toast.LENGTH_SHORT)
.show();
}
}
else if (requestCode == STORAGE_PERMISSION_CODE) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this,
"Storage Permission Granted",
Toast.LENGTH_SHORT)
.show();
}
else {
Toast.makeText(MainActivity.this,
"Storage Permission Denied",
Toast.LENGTH_SHORT)
.show();
}
}
}
}
<p style="direction: ltr;">[/php]

 

خروجی برنامه  گفته شده به شکل زیر است

آموزش درخواست مجوز در اندروید 6 به بالا
آموزش درخواست مجوز در اندروید 6 به بالا
آموزش درخواست مجوز در اندروید 6 به بالا
previous arrow
next arrow
previous arrownext arrow
Slider

در صورتی که مایل به استفاده از کتابخانه برای درخواست مجوز باشید میتوانید از کتابخانه زیر استفاده کنید

[php] implementation ‘com.nabinbhandari.android:permissions:3.8′[/php]

توضیحات و راهنمای نحوه استفاده از این کتابخانه را در این لینک میتوانید بخوانید

اندروید دِولوپر را در اینستاگرام دنبال کنید

  تمامی حقوق برای اندروید دِولوپر محفوظ می باشد

  تمامی حقوق برای اندروید دِولوپر محفوظ می باشد

ArabicChinese (Simplified)DutchEnglishFrenchGermanItalianPersianRussian