Android: Fix opening system file manager
Turns out that most phones ship with a special Google version of DocumentsUI instead of just using the AOSP version, despite the two being pretty similar as far as I can tell. This change makes us check for both package names instead of just the AOSP package name.
This commit is contained in:
parent
d23ac5a444
commit
974c7f4f86
|
@ -59,22 +59,33 @@ public class UserDataActivity extends AppCompatActivity implements View.OnClickL
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
startActivity(getFileManagerIntent());
|
// First, try the package name used on "normal" phones
|
||||||
|
startActivity(getFileManagerIntent("com.google.android.documentsui"));
|
||||||
}
|
}
|
||||||
catch (ActivityNotFoundException e)
|
catch (ActivityNotFoundException e)
|
||||||
{
|
{
|
||||||
new AlertDialog.Builder(this, R.style.DolphinDialogBase)
|
try
|
||||||
.setMessage(R.string.user_data_open_system_file_manager_failed)
|
{
|
||||||
.setPositiveButton(R.string.ok, null)
|
// Next, try the AOSP package name
|
||||||
.show();
|
startActivity(getFileManagerIntent("com.android.documentsui"));
|
||||||
|
}
|
||||||
|
catch (ActivityNotFoundException e2)
|
||||||
|
{
|
||||||
|
// Activity not found. Perhaps it was removed by the OEM, or by some new Android version
|
||||||
|
// that didn't exist at the time of writing. Not much we can do other than tell the user
|
||||||
|
new AlertDialog.Builder(this, R.style.DolphinDialogBase)
|
||||||
|
.setMessage(R.string.user_data_open_system_file_manager_failed)
|
||||||
|
.setPositiveButton(R.string.ok, null)
|
||||||
|
.show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent getFileManagerIntent()
|
private Intent getFileManagerIntent(String packageName)
|
||||||
{
|
{
|
||||||
// Fragile, but some phones don't expose the system file manager in any better way
|
// Fragile, but some phones don't expose the system file manager in any better way
|
||||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||||
intent.setClassName("com.android.documentsui", "com.android.documentsui.files.FilesActivity");
|
intent.setClassName(packageName, "com.android.documentsui.files.FilesActivity");
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue