2016-07-14 4 views
0

私は通知を表示して(NotificationManagerで作成)、Toastを表示してからfinish()(すべてはonCreate()のもの)で終了するアプリがあります。ユースケースは、ユーザーが自分のアプリケーションを実行するときに、特定のアクションを達成できる通知が表示されることです。通知を表示するだけのアクティビティが必要ですか?

私はこれにもアクティビティが必要なのでしょうか、それともより速い選択肢がありますか?開いてレイアウトを読み込むまでには時間がかかりますが、ユーザーには表示されません。

答えて

1

あなたはアンドロイド使用することができます。

1

通知を作成するには、Contextが必要です。たとえば、 a Service,Activity,IntentServiceまたはBroadcastReceiver以上。 Toastを作成するには、Contextも必要です。現在、ToastNotificationはどこに作成していますか?

+0

現在、私は ')主な活動の'のonCreate() 'でそれらを作成し、' getApplicationContext(とコンテキストを取得。 –

0

活動が必須ではありません、それに搭載レイアウトすることなく、可能な限り速く活動を行うために :テーマは=「スタイル/ Theme.NoDisplay @アンドロイド」を。

あなたは、例えばトーストメッセージを示しBroadcastReceiverを持つことができます。このようにして、BroadcastReceiverを登録して、必要なイベント(着信SMS、起動完了など)を聞き取り、イベントが発生したときにトーストを表示できます。

以下の例では、 SMSを受け取る(ユーザーがあなたのアプリを開いたかどうかに関係なく)。

のAndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest> 
    ... 
    <uses-permission android:name="android.permission.READ_SMS"/> 
    <uses-permission android:name="android.permission.RECEIVE_SMS"/> 

    <application> 
     .... 
     <receiver android:name=".MyCustomBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

MyCustomBroadcastReceiver.java

public class MyCustomBroadcastReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent != null) { 
      String action = intent.getAction(); 
      if(action != null) { 
       if(action.equals("android.provider.Telephony.SMS_RECEIVED")) { 
        Toast.makeText(context, "SMS Received", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 
    } 
} 
関連する問題