2013-03-27 8 views
5

私は唯一の1 broadcastreceiver(何もない)で構成されているのAndroidでアプリケーションを作成しようとしています。どのようにのみ1 broadcastreceiverでAndroidアプリを作成するには?

broadcastreceiverは、単純に(例えば、SMSメッセージを受信し、情報や仕上げをログ)放送をキャッチする必要があります。

<?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> 

私も持っている必要はありません: はしかし、私は私が表示されます、次のAndroidManifest.xmlなどの主要な活動を持って示していない限り、放送は、受信機によって捕捉されていないことに気づきましたアプリケーション内のアクティビティクラス。 また、インテントフィルタにandroid.intent.category.LAUNCHERまたはandroid.intent.action.MAINのいずれかを削除しても、それほど気になることはありません。 behavoirが私の携帯電話に同じであり、両方のアンドロイド4.2

私Broadcastreceiverクラスを実行しているエミュレータは次のようになります。

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

はそれだけでbroadcastreceiverでアプリを持ってすることはできませんか?

+0

全体intentfillerタグを削除して確認してください。おそらく動作するでしょう –

答えて

6

は、Android 3.1(API 12)から開始し、アプリ(活動)のUIコンポーネントが持っているまで、アプリは放送を受信することはできませんユーザによって少なくとも1回手動で開かれた。ユーザーが強制的にアプリケーションを停止しても、同じことが適用されます。

参考:http://developer.android.com/about/versions/android-3.1.html#launchcontrols

0

は、あなたの代わりにアプリケーションのサービスを行うべきではありませんか? (私はサービスを作成したことがありませんが、私はそれはあなたのケースでは、より適切であるべきだと思う)