web-dev-qa-db-ja.com

意図のためにsetAction()が何をするか(ブロードキャスト)

インテント(サービス)でsetAction()が行うこと

setAction()が何をするのか実際にはわかりません。ほとんどの場合、「アクティビティデータの受け渡しへのサービスの例」で見つかりました。文字列は自由に設定できますか?それは正確に何をしますか?

ブロードキャストインテントを作成するときは、オプションのデータとカテゴリ文字列に加えて、アクション文字列を含める必要があります。標準インテントと同様に、データは、インテントオブジェクトのputExtra()メソッドと組み合わせてキーと値のペアを使用して、ブロードキャストインテントに追加されます。オプションのカテゴリ文字列は、addCategory()メソッドの呼び出しを介してブロードキャストインテントに割り当てることができます。

ブロードキャストイベントを識別するアクション文字列は一意である必要があり、通常はアプリケーションのJavaパッケージ名構文を使用します。たとえば、次のコードフラグメントは、一意のアクション文字列を含むブロードキャストインテントを作成して送信しますおよびデータ:

 Intent intent = new Intent();
intent.setAction("com.example.Broadcast");
intent.putExtra("HighScore", 1000); sendBroadcast(intent);

私が見た別のバリエーションは:

 Intent broadcastIntent = new Intent();

            broadcastIntent.setAction("com.truiton.broadcast.string");
            broadcastIntent.putExtra("Data", "Broadcast Data");
            sendBroadcast(broadcastIntent);

            try {
               Thread.sleep(1000);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
            broadcastIntent.setAction("com.truiton.broadcast.integer");
            broadcastIntent.putExtra("Data", 10);
            sendBroadcast(broadcastIntent);

            try {
               Thread.sleep(1000);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
            broadcastIntent .setAction("com.truiton.broadcast.arraylist");
            broadcastIntent.putExtra("Data", mList);
            sendBroadcast(broadcastIntent);

これは、着信データ型を識別するように見えます。

イベント、着信データタイプアクションまたは各インテント作成を識別することを意味しますか?自由に設定できますか?

<action>タグ内の<activity>タグを使用してManifest.xmlファイルにアクションを設定することは、プログラムを使用して設定することと同じですJavaファイル内のintent.setAction。

これらは通常、ブロードキャストレシーバーに使用されます。

以下はxmlの例です。

<receiver Android:name="MyReceiver" >
            <intent-filter>
                <action Android:name="com.example.SendBroadcast" >
                </action>
<action Android:name="Android.intent.action.ACTION_POWER_DISCONNECTED" >          
                </action>
            </intent-filter>
        </receiver>

ただし、BroadCastReceiverをプログラムで登録および登録解除する場合は、setAction()を使用できます。

Intent intent = new Intent();
          intent.setAction("com.example.SendBroadcast");
          intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
          sendBroadcast(intent);

詳細については、次を確認してください: http://www.techotopia.com/index.php/Android_Broadcast_Intents_and_Broadcast_Receivers

5
Saini