我正在了解 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();
}
}
答案 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小时。我希望将来可以帮助那些像我一样完全是新手的人。