Android BroadcastReceiver не может принимать широковещательную передачу

#android

#Android

Вопрос:

       //HERE ARE THE CODE

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    private class Receiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(getApplicationContext(), "received message in     activity..!", Toast.LENGTH_SHORT).show();
            Button b=(Button)findViewById(R.id.button);
            b.setText("received");
        }
    };

    private static final String ACTION_STRING_ACTIVITY = "ToActivity";
    private Receiver activityReceiver;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        activityReceiver=new Receiver();

        if (activityReceiver != null) {
            IntentFilter intentFilter = new     IntentFilter(ACTION_STRING_ACTIVITY);
            intentFilter.addDataScheme("file");
            registerReceiver(activityReceiver, intentFilter);
        }



        findViewById(R.id.button).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Button b=(Button)findViewById(R.id.button);
                sendBroadcast();
                Log.d("SampleActivity", "broadcast sent");
            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d("Service", "onDestroy");
        unregisterReceiver(activityReceiver);
    }

    private void sendBroadcast() {

        Intent new_intent = new Intent();
        new_intent.setAction(ACTION_STRING_ACTIVITY);
        new_intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
        sendBroadcast(new_intent);
        Button b=(Button)findViewById(R.id.button);
    }
}
  

Я тестирую Android BroadcastReceiver, но я работаю над этим целый день
, но все еще не могу заставить его работать. Я определил приемник в своей MainActivity, когда я нажимаю
кнопку, он должен получать широковещательную передачу и устанавливать текст на кнопке на
«получено».

Ответ №1:

Убедитесь, что в вашем манифесте есть следующее:

  <receiver
        android:name="com.<your_package>.MainActivity.Receiver"
        android:enabled="true"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.<your_package>.ToActivity" />
        </intent-filter>
 </receiver>
  

Хорошо, я понял. Я удалил «IntentFilter.addDataScheme («file»);», тогда это работает
Но я не зарегистрировал приемник в коде манифеста.

большое вам спасибо