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

پنجشنبه 24 فروردین 1396

در این مقاله قصد داریم که تشخیص موجود بودن یا نبودن کارت sd را در گوشی خود در زمان اجرا تست نماییم sd کارت در واقع همان کارت حافظه خارجی در گوشی است که بیشتر اطلاعات در آن ذخیره می شود.

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

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

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

در کلاس جاوا قطعه کد زیر را قرار دهید:

import android.Manifest;
import android.content.pm.PackageManager;
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.TextView;
import android.support.v4.app.ActivityCompat;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button button ;
    TextView textView;
    Boolean SDcard ;
    public  static final int RequestPermissionCode  = 1 ;
    int RequestCheckResult  ;
    boolean RequestTF ;

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

        button = (Button)findViewById(R.id.button);
        textView = (TextView)findViewById(R.id.textView);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                PermissionStatus();

                if(RequestTF){

                    SDCardCheck();
                }
                else {

                    EnableRuntimePermission();
                }

            }
        });
    }

    public void SDCardCheck(){

        SDcard = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

        if(SDcard)
        {
            textView.setText("SD CARD IS AVAILABLE");
        }
        else
        {
            textView.setText("SD CARD NOT AVAILABLE");
        }
    }

    public void PermissionStatus(){

        RequestCheckResult = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);

        if (RequestCheckResult == PackageManager.PERMISSION_GRANTED){

            RequestTF = true;

        } else {

            RequestTF = false;

        }

    }

    public void EnableRuntimePermission(){

        if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE))
        {

            Toast.makeText(MainActivity.this,"WRITE_EXTERNAL_STORAGE permission allows us to Access SD CARD app", Toast.LENGTH_LONG).show();

        } else {

            ActivityCompat.requestPermissions(MainActivity.this,new String[]{
                    Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestPermissionCode);

        }
    }

    @Override
    public void onRequestPermissionsResult(int RC, String per[], int[] PResult) {

        switch (RC) {

            case RequestPermissionCode:

                if (PResult.length > 0 && PResult[0] == PackageManager.PERMISSION_GRANTED) {

                    Toast.makeText(MainActivity.this,"Permission Granted, Now your application can access WRITE_EXTERNAL_STORAGE.", Toast.LENGTH_LONG).show();

                } else {

                    Toast.makeText(MainActivity.this,"Permission Canceled, Now your application cannot access WRITE_EXTERNAL_STORAGE.", Toast.LENGTH_LONG).show();

                }
                break;
        }
    }

}

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

حالا شما می توانید در قسمت Main ابزارهای خود را تعریف نمایید:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.android_examples.detectsdcard_android_examplescom.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="click here to detect whether the sd card is available or not"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="SD CARD STATUS"
        android:id="@+id/textView"
        android:layout_above="@+id/button"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="38dp"
        android:gravity="center"/>

</RelativeLayout>

خروجی به صورت زیر خواهد بود:

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید