Alright, I did some digging in the Rhodes code and found out that this
is actually happening because of Rhodes, not just the Android OS.
What's happening is that the WebViewClient created by Rhodes in the
RhodesActivity.java file (on line 337) is overriding the
shouldOverrideUrlLoading method with a call to
RhodesService.handleUrlLoading method (line 204 of
RhodesService.java). This is iterating through custom UriHandlers
which are initialized in RhodesService.java (line 398). One of these
Custom uri handlers is TelUriHandler. This handler (defined in
TelUriHandler.java) correctly attempts to send an Intent to the
dialer, however I don't think the correct permissions are being set to
invoke the Dialer (thus the apparent crashing of the application).
According to Android SDK documentation (
http://bit.ly/rU740) the
manifest must contain the following permission: <uses-permission
id="android.permission.CALL_PHONE" />
I looked at the AndroidManifest.xml and AndroidManifest.full.xml, the
full manifest has this permissions however I do not know what Rhodes
is using to determine which Manifest file to use. There is a command
provided by the Android SDK to view the permissions of a built APK
file. Running this command from a command prompt on either a debug or
production APK file gives me only the following permissions:
package: com.rhomobile.androidtest
uses-permission: android.permission.ACCESS_NETWORK_STATE
uses-permission: android.permission.INTERNET
uses-permission: android.permission.PERSISTENT_ACTIVITY
uses-permission: android.permission.WAKE_LOCK
The command can be found in the platform-tools folder of the Android
SDK. The syntax to use is this: aapt d permissions <path to APK file>
In summary, I can work around the issue I am facing by commenting out
adding the custom TelUriHandler to the handler list. But if you want
to actually have the Dialer open so that people can make a phone call,
permissions are going to have to be set.
~Alex
==============================================================
Here's the full paths to the files mentioned above.
\platform\android\Rhodes\src\com\rhomobile\rhodes\RhodesActivity.java
\platform\android\Rhodes\src\com\rhomobile\rhodes\RhodesService.java
\platform\android\Rhodes\src\com\rhomobile\rhodes\uri
\TelUriHandler.java
\platform\android\Rhodes\AndroidManifest.xml
\platform\android\Rhodes\AndroidManifest.full.xml
On Jun 10, 4:09 am, "evgeny vovchenko" <
evgenyvovche...@gmail.com>