2013-03-27 13 views
5

Próbuję utworzyć aplikację w systemie Android, która składa się tylko z jednego nadawcy (i nic więcej).Jak stworzyć aplikację na Androida z tylko jednym nadajnikiem?

Odbiornik powinien po prostu przechwycić transmisję (na przykład odebrać wiadomość SMS, zalogować informacje i zakończyć). , zauważyłem jednak, że transmisja nie zostanie złapany przez odbiorcę, chyba że mam wskazać główną działalność jako poniższym AndroidManifest.xml ukaże się:

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

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <receiver android:name="com.myapp.MyBroadcastReceiver" > 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 

    <activity 
     android:name="com.myapp.MainActivity" 
     android:label="@string/activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

I nie trzeba nawet mieć Klasa aktywności w aplikacji. Ponadto, jeśli usuniemy albo android.intent.category.LAUNCHER lub android.intent.action.MAIN w filtrze zamiaru, to też nie działa. behavoir to samo na moim telefonie i emulatora, które są zarówno z systemem Android 4.2

moja klasa Broadcastreceiver wygląda następująco:

public class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context,intent.getAction(),Toast.LENGTH_SHORT).show(); 
    } 
} 

Czy nie można mieć aplikację tylko z broadcastreceiver?

+0

usunąć cały tag intentfiller i sprawdzić. prawdopodobnie to zadziała –

Odpowiedz

6

Począwszy od wersji Androida 3.1 (API 12), aplikacja nie może odbierać transmisji, dopóki składnik interfejsu użytkownika aplikacji (działanie) nie zostanie zostało ręcznie otwarte przez użytkownika co najmniej raz. Nawet jeśli siła użytkownika zatrzyma aplikację, to samo zostanie zastosowane.

Numer referencyjny: http://developer.android.com/about/versions/android-3.1.html#launchcontrols

0

Nie można utworzyć usługi zamiast aplikacji? (Nigdy nie stworzyłem usługi, ale uważam, że powinno to być bardziej odpowiednie w twoim przypadku)

Powiązane problemy