Example usage for android.os.storage StorageVolume createAccessIntent

List of usage examples for android.os.storage StorageVolume createAccessIntent

Introduction

In this page you can find the example usage for android.os.storage StorageVolume createAccessIntent.

Prototype

public @Nullable Intent createAccessIntent(String directoryName) 

Source Link

Document

Builds an intent to give access to a standard storage directory or entire volume after obtaining the user's approval.

Usage

From source file:com.example.android.scopeddirectoryaccess.ScopedDirectoryAccessFragment.java

@Override
public void onViewCreated(final View rootView, Bundle savedInstanceState) {
    super.onViewCreated(rootView, savedInstanceState);

    mCurrentDirectoryTextView = (TextView) rootView.findViewById(R.id.textview_current_directory);
    mNothingInDirectoryTextView = (TextView) rootView.findViewById(R.id.textview_nothing_in_directory);
    mPrimaryVolumeNameTextView = (TextView) rootView.findViewById(R.id.textview_primary_volume_name);

    // Set onClickListener for the primary volume
    Button openPictureButton = (Button) rootView.findViewById(R.id.button_open_directory_primary_volume);
    openPictureButton.setOnClickListener(new View.OnClickListener() {
        @Override/*w  w  w  . ja va2  s.  c o  m*/
        public void onClick(View view) {
            String selected = mDirectoriesSpinner.getSelectedItem().toString();
            String directoryName = getDirectoryName(selected);
            StorageVolume storageVolume = mStorageManager.getPrimaryStorageVolume();
            Intent intent = storageVolume.createAccessIntent(directoryName);
            startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);
        }
    });

    // Set onClickListener for the external volumes if exists
    List<StorageVolume> storageVolumes = mStorageManager.getStorageVolumes();
    LinearLayout containerVolumes = (LinearLayout) mActivity.findViewById(R.id.container_volumes);
    for (final StorageVolume volume : storageVolumes) {
        String volumeDescription = volume.getDescription(mActivity);
        if (volume.isPrimary()) {
            // Primary volume area is already added...
            if (volumeDescription != null) {
                // ...but with a default name: set it to the real name when available.
                mPrimaryVolumeNameTextView.setText(volumeDescription);
            }
            continue;
        }
        LinearLayout volumeArea = (LinearLayout) mActivity.getLayoutInflater().inflate(R.layout.volume_entry,
                containerVolumes);
        TextView volumeName = (TextView) volumeArea.findViewById(R.id.textview_volume_name);
        volumeName.setText(volumeDescription);
        Button button = (Button) volumeArea.findViewById(R.id.button_open_directory);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String selected = mDirectoriesSpinner.getSelectedItem().toString();
                String directoryName = getDirectoryName(selected);
                Intent intent = volume.createAccessIntent(directoryName);
                startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);
            }
        });
    }
    RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview_directory_entries);
    if (savedInstanceState != null) {
        mDirectoryEntries = savedInstanceState.getParcelableArrayList(DIRECTORY_ENTRIES_KEY);
        mCurrentDirectoryTextView.setText(savedInstanceState.getString(SELECTED_DIRECTORY_KEY));
        mAdapter = new DirectoryEntryAdapter(mDirectoryEntries);
        if (mAdapter.getItemCount() == 0) {
            mNothingInDirectoryTextView.setVisibility(View.VISIBLE);
        }
    } else {
        mDirectoryEntries = new ArrayList<>();
        mAdapter = new DirectoryEntryAdapter();
    }
    recyclerView.setAdapter(mAdapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    mDirectoriesSpinner = (Spinner) rootView.findViewById(R.id.spinner_directories);
    ArrayAdapter<CharSequence> directoriesAdapter = ArrayAdapter.createFromResource(getActivity(),
            R.array.directories, android.R.layout.simple_spinner_item);
    directoriesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mDirectoriesSpinner.setAdapter(directoriesAdapter);
}