I thought that Action was preeminent during intent resolution and if the intent had the same action as the intent filter, it would be considered a match regardless of data, if the filter did not specify anything. So I was very surprised to find that supplying action+data where filter had only action, causes it to fail. In the code below, if you comment out line 47 so that data is *not* sent, only then it resolves correctly.
alertIntent.setData(alert_i); To get it to work with the data (an id that is simply a String), what mime type should I specify in the intent filter? thanks... ----- package com.iovercomer; import java.util.Calendar; import java.util.Date; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.IntentFilter.MalformedMimeTypeException; import android.net.Uri; import android.os.Bundle; import android.os.SystemClock; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class TestIntentResolution extends Activity { public static final String ALERT_ME_ACTION = "com.iovercomer.TestIntentResolution.alertMe"; AlarmManager am; PendingIntent mAlarmSender; String uriBase = "content://com.iovercomer/alerts/"; Intent alertIntent; int alarmNumber = 99; protected int requestCode = 23; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button startButton = (Button) findViewById(R.id.start_alarm); startButton.setOnClickListener(mStartAlarmListener); am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alertIntent = new Intent(ALERT_ME_ACTION); } private OnClickListener mStartAlarmListener = new OnClickListener() { @Override public void onClick(View v) { Uri alert_i = Uri.parse(uriBase + alarmNumber); // comment out the following line to get the intent to resolve to the receiver alertIntent.setData(alert_i); int flags = PendingIntent.FLAG_UPDATE_CURRENT; mAlarmSender = PendingIntent.getBroadcast(TestIntentResolution.this, requestCode , alertIntent, flags); long firstTime = SystemClock.elapsedRealtime(); am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime + 10 * 1000, mAlarmSender); Toast.makeText(TestIntentResolution.this, "starting >>>" + "alarm " + alarmNumber, Toast.LENGTH_LONG).show(); } }; @Override public void onResume() { super.onResume(); Intent inte = registerReceiver(receiver, new IntentFilter( ALERT_ME_ACTION)); } @Override public void onPause() { super.onPause(); unregisterReceiver(receiver); } void alertMe(String time, String data) { String t = "alert! at " + time + " " + data + "\n"; Toast.makeText(getApplicationContext(), t, Toast.LENGTH_SHORT).show(); TextView tv = (TextView) findViewById(R.id.myginew); tv.setText(t); } MyAlarmReceiver receiver = new MyAlarmReceiver(); public class MyAlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Date dt = Calendar.getInstance().getTime(); intent.getAction(); intent.getType(); Uri d = intent.getData(); String frag = (d == null ? "":d.getLastPathSegment()); alertMe(dt.toString(), frag); } }; } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en