1

I am developing an Android app on my Chromebook (Android Studio under Linux).

The program works fine when I request a file that is on internal storage, but when I try to access a file on a SD card it crashes. I do have both read and write access for external storage specified in the app's manifest.

Since I can't run the app in the Android Studio debugger on my Chromebook, I was wondering if Chrome OS has any log files that may have info on my crash.

If it will help, here is my code:

package com.muddco.fl04;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
import android.util.Log;
import android.widget.Toast;

import com.muddco.fl04.R;

public class MainActivity extends AppCompatActivity {

    static String TAG = "TEST123";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        openFile();
    }

    // Request code for selecting a PDF document.
    private static final int PICK_FILE = 2;

    private void openFile() {
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("*/*");

        startActivityForResult(intent, PICK_FILE);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode,
                                 Intent resultData) {
        if (requestCode == PICK_FILE
                && resultCode == Activity.RESULT_OK) {
            Uri uri = null;
            if (resultData != null) {
                uri = resultData.getData();
                dumpImageMetaData(uri);
            }
        }
        super.onActivityResult(requestCode,resultCode,resultData);
    }

    public void dumpImageMetaData(Uri uri) {

        Cursor cursor = getApplicationContext().getContentResolver()
                .query(uri, null, null, null, null, null);

        try {
            if (cursor != null && cursor.moveToFirst()) {

                // Note it's called "Display Name". This is
                // provider-specific, and might not necessarily be the file name.
                String displayName = cursor.getString(
                        cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
                Log.i(TAG, "Display Name: " + displayName);

                int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
              String size = null;
                if (!cursor.isNull(sizeIndex)) {
                   size = cursor.getString(sizeIndex);
                } else {
                    size = "Unknown";
                }
                Log.i(TAG, "Size: " + size);
                Toast.makeText(this, "Display Name: " + displayName + " Size: " + size, Toast.LENGTH_LONG).show();
            }
        } finally {
            cursor.close();
        }
    }
}
a_local_nobody
  • 7,947
  • 5
  • 29
  • 51
Pfredd
  • 417
  • 6
  • 15

0 Answers0