Use content://mms-sms instead if you must but I would recommend you to
stick with the official API.

On Jan 15, 3:50 pm, "[email protected]" <[email protected]> wrote:
> Hi all,
>
> I keep getting the following error:
>
> 01-15 12:29:28.155: ERROR/DatabaseUtils(115):
> java.lang.SecurityException: Permission Denial: reading
> com.android.providers.telephony.SmsProvider uri content://sms from
> pid=1004, uid=10054 requires android.permission.READ_SMS
>
> Even though I have the persmission READ_SMS in my manifest, I have
> tried it both outside the application tags and inside, neither way
> seems to work and the same error keeps popping up
>
> Here is my manifest:
>
> XML:
> <?xml version="1.0" encoding="utf-8"?>
> <manifest xmlns:android="http://schemas.android.com/apk/res/android";
>       package="cicero.org"
>       android:versionCode="1"
>       android:versionName="1.0">
>     <application android:icon="@drawable/icon" android:label="@string/
> app_name">
>         <activity android:name=".TestApp"
>                   android:label="@string/app_name">
>             <intent-filter>
>                 <action android:name="android.intent.action.MAIN" />
>                 <category
> android:name="android.intent.category.LAUNCHER" />
>             </intent-filter>
>         </activity>
>         <activity android:name=".SettingsApp"
>                   android:label="@string/app_name">
>             <intent-filter>
>                 <action android:name="android.intent.action.SETTINGS" /
>
>                 <category
> android:name="android.intent.category.LAUNCHER" />
>             </intent-filter>
>         </activity>
>           <provider android:name=".CiceroContentProvider"
>
> android:authorities="cicero.org.CiceroContentProvider"
>                               android:multiprocess="true" />
>
>         <receiver android:name=".SMSApp">
>           <intent-filter>
>               <action
> android:name="android.provider.Telephony.SMS_RECEIVED" />
>            </intent-filter>
>        </receiver>
>
>     </application>
>     <uses-sdk android:minSdkVersion="3" />
>     <uses-permssion android:name="android.permission.READ_SMS"/>
>     <uses-permission android:name="android.permission.READ_CONTACTS"/>
>      <uses-permission android:name="android.permission.WRITE_CONTACTS"/
>
>      <uses-permission
> android:name="android.permission.ACCESS_WIFI_STATE"/>
>      <uses-permission
> android:name="android.permission.CHANGE_WIFI_STATE"/>
>      <uses-permission android:name="android.permission.WAKE_LOCK"/>
>      <uses-permission
> android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
>      <uses-permission android:name="android.permission.CALL_PHONE"/>
>      <uses-permission android:name="android.permission.RECEIVE_SMS"/>
>      <uses-permssion android:name="android.permission.WRITE_SMS"/>
> </manifest>
>
> Anybody got any ideas if I'm missing something else or why the
> permission is not getting recognized in the manifest?
>
> Here is my code that I am using:
>
> //in onCreate()
>
>         String url = "content://sms/";
>                 Uri uri = Uri.parse(url);
>                 getContentResolver().registerContentObserver(uri, true, new
> MyContentObserver(handler));
>
>     //own class
>     class MyContentObserver extends ContentObserver {
>
>         public MyContentObserver(Handler handler) {
>
>                 super(handler);
>
>         }
>
>     @Override public boolean deliverSelfNotifications() {
>         return false;
>         }
>
>     @Override public void onChange(boolean arg0) {
>         super.onChange(arg0);
>
>          Log.v("SMS", "Notification on SMS observer");
>
>         Message msg = new Message();
>         msg.obj = "xxxxxxxxxx";
>
>         handler.sendMessage(msg);
>
>         Uri uriSMSURI = Uri.parse("content://sms/inbox");
>         Cursor cur = getContentResolver().query(uriSMSURI, null, null,
>                      null, null);
>         cur.moveToNext();
>         String protocol = cur.getString(cur.getColumnIndex
> ("protocol"));
>         if(protocol == null)
>                Log.d("SMS", "SMS SEND");
>         else
>                 Log.d("SMS", "SMS RECIEVE");
>
>     }
>
> Anybody got any ideas if I'm missing something else or why the
> permission is not getting recognized in the manifest or is it my code
> that is doing something that is currently not allowed?
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to