2 qq 34658785 qq_34658785 于 2017.09.14 11:20 提问

Android静态注册广播接收器 10C

最近研究广播,注册广播接收器的时候发现通过代码注册,可以接收广播,通过xml静态注册接受不到有人知道是什么原因吗

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.wulechuan.broadcasttest2">

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="com.example.wulechuan.broadcasttest2.AnotherBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
            </intent-filter>
        </receiver>

    </application>


</manifest>

public class AnotherBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("xxx","xxx");
        Toast.makeText(context,"Hello World!",Toast.LENGTH_LONG).show();
    }

}
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sendBroadcast(new Intent("com.example.broadcasttest.MY_BROADCAST"));
            }
        });
    }
}

麻烦大神看看哪有问题

7个回答

stone_you
stone_you   2017.09.14 14:00

试试看给intent加上这个flag
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);

qq_34658785
qq_34658785 并没有用,点了还是没反应
2 个月之前 回复
zgy621101
zgy621101   Rxr 2017.09.14 16:36
qq_34658785
qq_34658785 我是照着上面弄的,一共就三步,xml文件里注册,创建接收器实体类,通过intent发通知,但就是不行
2 个月之前 回复
dongfeng9ge
dongfeng9ge   Ds   Rxr 2017.09.14 20:47

Receiver最好用代码注册

qq_34658785
qq_34658785 厄,好吧,主要我是处于学习阶段,不明白为啥会这样,代码注册都是正常的,静态就不行,不知道是什么原因
2 个月之前 回复
windspears
windspears   2017.09.15 16:16

//sendBroadcast(new Intent("com.example.broadcasttest.ACTION_EDIT"));
Intent intent = new Intent(Intent.ACTION_EDIT);
MainActivity.this.sendBroadcast(intent);


这是MainActivity的





这是Manifest里面添加的。
我改了两个部分一个是send部分的方法的写法
第二个就是注册了接收器,注册就是说指定注册哪一个是此广播的广播接收器
具体可参见
1:《第一行代码》第二版第五章
2:http://blog.csdn.net/qq_30365153/article/details/51139871

windspears
windspears   2017.09.15 16:18

这是MainActivity的

 //sendBroadcast(new Intent("com.example.broadcasttest.ACTION_EDIT"));
Intent intent = new Intent(Intent.ACTION_EDIT);
MainActivity.this.sendBroadcast(intent);

这是Manifest里面添加的。

  <receiver android:name=".AnotherBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.EDIT"/>
            </intent-filter>
        </receiver>

我改了两个部分一个是send部分的方法的写法
第二个就是注册了接收器,注册就是说指定注册哪一个是此广播的广播接收器
具体可参见
1:《第一行代码》第二版第五章
2:http://blog.csdn.net/qq_30365153/article/details/51139871

qq_34658785
qq_34658785 没用,还是没反应
2 个月之前 回复
windspears
windspears   2017.09.15 16:48

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication1">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".AnotherBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.EDIT"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>

MainActivity

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //sendBroadcast(new Intent("com.example.broadcasttest.ACTION_EDIT"));
                Intent intent = new Intent(Intent.ACTION_EDIT);
                MainActivity.this.sendBroadcast(intent);
            }
        });
    }
}

AnotherB...
public class AnotherBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("xxx","xxx");
        Toast.makeText(context,"Hello World!",Toast.LENGTH_LONG).show();
    }

}

UI界面
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.myapplication1.MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

全给你贴上来了。。。。。还是没反应我就没办法了。我是可以的!
图片说明

qq_34658785
qq_34658785 回复windspears: 项目呢,从几点0开始的
2 个月之前 回复
windspears
windspears 回复卖太妃糖的古尔丹:jdk 1.7.0_45,android sdk 从24开始的
2 个月之前 回复
qq_34658785
qq_34658785 突然想起来了,你的sdk,jdk,以及项目是从哪个版本开始的
2 个月之前 回复
a734474820
a734474820   2017.09.16 19:52

http://blog.csdn.net/xzongyuan/article/details/39991509 静态注册广播需要注意这两点 使用androidstudio 在清单文件注册广播或者activity时,直接用快捷键提示 一般都没什么问题,祝你慢慢进步

Csdn user default icon
上传中...
上传图片
插入图片