2012-03-25 7 views
3

Ich entwickle eine App, die eingehenden SMS hört. Ich habe die Berechtigung hinzugefügt:Berechtigung Ablehnung, auch nach dem Hinzufügen der richtigen Berechtigung im Manifest

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

zu meinem App-Manifest. Und ja, es ist nicht im Empfänger-Tag.

Ich versuche, die App zu testen, indem ich eine SMS von einem Emulator zu einem anderen sende. Mein logcat erhält den folgenden Eintrag:

WARN/ActivityManager(66): Permission Denial: receiving Intent { act=android.provider.Telephony.SMS_RECEIVED (has extras) } to com.android.LUC requires android.permission.RECEIVE_SMS due to sender com.android.phone (uid 1001) 

Das seltsame daran ist, dass, wenn ich die App auf Emulator bin Testen mit Android 3.2, es funktioniert!

App-Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.android.sms" 
     android:versionCode="1" 
     android:versionName="1.0"> 

    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name" android:permission="android.permission.RECEIVE_SMS"> 
     <activity android:name=".TestSMSReceiveActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".mysmstestcall" android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 

    </application> 
</manifest> 

mysmstestcall ist die broadcastreceiver Klasse und TestSMSReceiveActivity ist die Haupttätigkeit. Die App empfängt keine Nachricht im Emulator unter Android 2.2. Bitte helfen Sie !!

+0

poste bitte dein Manifest. –

+0

Ich stimme zu, dass wir Ihr Manifest verifizieren müssen. Du hast auch gesagt, dass Emulator 3.2 in Ordnung ist, aber mit welcher Version hast du Probleme? – louielouie

+0

Ich habe das Manifest in der Frage hinzugefügt. Bitte helfen Sie! – crashOveride

Antwort

5

OK, das Problem ist in Ihrem Manifest. Mein funktionierender SMS Broadcast Empfänger hat folgenden Manifest Eintrag:

<receiver 
    android:name=".IncomingSmsBroadcastReceiver" 
    android:enabled="true" 
    android:exported="true"> 
    <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

Sie brauchen kein android: permission Attribut auf dem Empfänger. Sie müssen nur die folgende Erlaubnis, die Sendung empfangen und an den Inhalt der Nachricht zu suchen in der Lage:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

Das, was die meisten verpassten oft ist android:exported="true", wenn der Empfänger erklärt, die erforderlich ist, wie Sie eine Sendung erhalten, die stammt von außerhalb Ihrer eigenen Anwendung. Unnötig zu sagen, dass der Standardwert für diese Eigenschaft 'falsch' ist. Happy SMS Empfangen.

Verwandte Themen