Я занимаюсь разработкой приложения Android на своем Chromebook (Android Studio под Linux).
Программа отлично работает, когда я запрашиваю файл, который находится во внутренней памяти, но когда я пытаюсь при доступе к файлу на SD-карте происходит сбой. У меня есть права на чтение и запись для внешнего хранилища, указанные в манифесте приложения.
Поскольку я не могу запустить приложение в отладчике Android Studio на моем Chromebook, мне интересно, если Chrome ОС есть любые файлы журналов, которые могут содержать информацию о моем cra * sh.
Если это поможет, вот мой код:
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();
}
}
}