显示BroadcastReceiver的Toast

时间:2016-03-01 19:46:32

标签: android broadcastreceiver toast

我正在了解 BroadcastReceiver

我想在安装或卸载SD卡时显示Toast消息。

我在SO上提供了一些示例,并在下面写了代码。但是,当我挂载/卸载SDCARD(设置 - >卸载SD卡)时,消息"你好"没有显示。

感谢您的帮助。

<receiver
    android:name="MountReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <data android:scheme="file" />
    </intent-filter>
</receiver>

MainActivity.java:

public class MountReceiver extends BroadcastReceiver {
    public MountReceiver(){

    }
    @Override
    public void onReceive
            (Context context, Intent intent) {
        // react to the event
        Toast.makeText(MainActivity.this
                , "Hello there", Toast.LENGTH_SHORT).show();

    }
}

3 个答案:

答案 0 :(得分:2)

请检查您的清单文件

<receiver
    android:name="<package>.MountReceiver"">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <data android:scheme="file" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
        <data android:scheme="file" />
    </intent-filter>
</receiver>

MainActivity.java重命名为MountReceiver.java

MountReceiver.java

中更新您的代码
public class MountReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
         // react to the event
       Toast.makeText(context, "Hello there", Toast.LENGTH_SHORT).show();
    }
}

随意让我知道你的结果。

答案 1 :(得分:0)

你可以这样做:

@Override
public void onReceive
        (Context context, Intent intent) {
    //Use application context
    Toast.makeText(context, "Hello world", Toast.LENGTH_SHORT).show();

}

答案 2 :(得分:0)

正如我在评论部分提到的那样,在<receiver>之外使用<application>标记我真是太蠢了。不知怎的,我没有意识到超过24小时。我希望将来可以帮助那些像我一样完全是新手的人。