Repository: beeware/toga

Issue:
Android system file browser cannot be invoked
### Describe the bug

I tried to invoke Android's system file browser UI (SAF) but get following error message:
`No appropriate Activity found to handle this intent.`


### Steps to reproduce

Try following code:
```
from android.content import Intent

intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
intent.addCategory(Intent.CATEGORY_OPENABLE) 
intent.setType("*/*")
result = await self.app._impl.intent_result(intent) 
```


### Expected behavior

The system file browser should open because under my Android 13, it is definitely there.

With following code, the file browser is shown, but the app doesn't wait for the result:
```
intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
intent.addCategory(Intent.CATEGORY_OPENABLE) 
intent.setType("*/*")
result = await self.app._impl.native.startActivityForResult(intent, 1234) 
```
I get the error back `object NoneType can't be used in 'await' expression`

### Screenshots

_No response_

### Environment

- Operating System: Android 13
- Python version: 3.11
- Software versions:
  - Toga: 0.3.1dev93
 

### Logs

```

```


### Additional context
The same problem exists with Intent.ACTION_CREATE_DOCUMENT and this Intent also can be invoked directly with startActivityForResult

The problem stems from this code in app.py:

```
if not intent.resolveActivity(self.native.getPackageManager()):
            raise RuntimeError("No appropriate Activity found to handle this intent.")
```
This may be a good way to find Activities of standard apps, but it seems to fail in the case of internal Activities like the system file browser.

It might be better to remove this code and instead catch and return exceptions that occur when invoking startActivityForResult unguarded


Discussion:

Resolving patch:
diff --git a/android/src/toga_android/app.py b/android/src/toga_android/app.py
--- a/android/src/toga_android/app.py
+++ b/android/src/toga_android/app.py
@@ -218,14 +218,15 @@ async def intent_result(self, intent):
         :returns: A Dictionary containing "resultCode" (int) and "resultData" (Intent or None)
         :rtype: dict
         """
-        if not intent.resolveActivity(self.native.getPackageManager()):
-            raise RuntimeError("No appropriate Activity found to handle this intent.")
-        self._listener.last_intent_requestcode += 1
-        code = self._listener.last_intent_requestcode
+        try:
+            self._listener.last_intent_requestcode += 1
+            code = self._listener.last_intent_requestcode
 
-        result_future = asyncio.Future()
-        self._listener.running_intents[code] = result_future
+            result_future = asyncio.Future()
+            self._listener.running_intents[code] = result_future
 
-        self.native.startActivityForResult(intent, code)
-        await result_future
-        return result_future.result()
+            self.native.startActivityForResult(intent, code)
+            await result_future
+            return result_future.result()
+        except AttributeError:
+            raise RuntimeError("No appropriate Activity found to handle this intent.")


Test patch: