title: How to get available network operators? (using RIL and non-API methods)
body: <p><strong>Disclaimer</strong> - I know how calling non-API methods can affect my application. It's not going to be published on Google Play, I'm creating it just for personal use.</p>
  
  <p><strong>Task</strong> - get available network operators on rooted phone (Android 2.3.3). Model is known.</p>
  
  <p><strong>What have I tried</strong></p>
  
  <p>A lot of reflection:</p>
  
  <ul>
  <li>Tried to get <code>PhoneFactory</code>, get default <code>Phone</code> (<code>getDefaultPhone</code>) or <code>GSMPhone</code>. I've received an actual reference to <code>PhoneProxy</code> and was able to call <code>getAvailableNetworks</code> which returned an <code>CommandException</code> - RADIO_NOT_AVAILABLE</li>
  <li>Tried to instantinate <code>RIL</code> directly. Tried to call <code>getAvailableNetworks</code> here with the same result (RADIO_NOT_AVAILABLE). Tried to call <code>registerForAvaiable</code> which never sends message back to Handler.</li>
  <li>Tried to connect <code>LocalSocket</code> to "rild". Getting <code>IOException: Permission denied</code></li>
  </ul>
  
  <p>I've tried everything above with my app stored at <code>/system/app/</code> - results are same.</p>
  
  <p><strong>Question</strong></p>
  
  <ol>
  <li>Is it even possible to access <code>RIL</code> methods without signing my app with system key or using custom Android build?</li>
  <li>Maybe I can overcome this issues by building app directly for Linux?</li>
  <li>Any advice on this problem is highly appreciated.</li>
  </ol>