Я пытаюсь передать намерение между двумя действиями.
Намерение отправляется из FilterActivity в PreviewActivity, как показано ниже.
final Intent ImageIntent = new Intent();
ImageIntent.setData(uri);
ImageIntent.setAction("com.test.FILTER_RENDERED");
sendBroadcast(ImageIntent);
В PreviewActivity мне нужно зарегистрировать приемник и использовать IntentFiter, чтобы поймать намерение и проверить его.
public class PreviewActivity extends Activity {
ReceiveMessages myReceiver = null;
Boolean myReceiverIsRegistered = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myReceiver = new ReceiveMessages();
if (!myReceiverIsRegistered) {
// registerReceiver(myReceiver, new IntentFilter());
registerReceiver(myReceiver, new IntentFilter("com.test.FILTER_RENDERED"));
myReceiverIsRegistered = true;
}
....
@Override
protected void onResume(){
super.onResume();
if (!myReceiverIsRegistered) {
registerReceiver(myReceiver, new IntentFilter("com.test.FILTER_RENDERED"));
myReceiverIsRegistered = true;
}
}
@Override
protected void onStop() {
super.onStop();
if (myReceiverIsRegistered) {
unregisterReceiver(myReceiver);
myReceiverIsRegistered = false;
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Intent mNewIntent = intent;
Bundle bundle = null;
String fragment = null;
if (intent != null) {
mImagePreviewUri = mNewIntent.getData();
if(mImagePreviewUri!=null) {
mCameraActionsView.setEnabled(true);
mImagePreview.setImageURI(mImagePreviewUri);
}
}
}
public class ReceiveMessages extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if(action.equalsIgnoreCase("com.test.FILTER_RENDERED")){
if (intent != null) {
mImagePreviewUri = intent.getData();
if(mImagePreviewUri!=null) {
mCameraActionsView.setEnabled(true);
mImagePreview.setImageURI(mImagePreviewUri);
}
}
}
}
}
}
К сожалению, намерение никогда не будет получено активностью‹
Любая идея, почему OnReceive не запускается?