【问题标题】:SDcard removal notification, how it is done? Broadcast or Service?SDcard删除通知,它是如何完成的?广播还是服务?
【发布时间】:2012-04-30 22:23:06
【问题描述】:

我需要实现 android 中已经存在的 sd 卡移除通知,我需要知道它是如何完成的?任何示例代码或教程都会有很大帮助。

【问题讨论】:

    标签: android storage external sd-card


    【解决方案1】:

    系统会广播各种事件的Intents,其中很多是关于SD卡(外部媒体)状态变化的。

    因此,您只需为正确的 Intent 设置一个 BroadcastReceiver。查看this 页面以供参考。您正在寻找 ACTION_MEDIA_* 操作。

    【讨论】:

    • 有人知道如何在android中添加新的api吗?
    【解决方案2】:

    您需要使用广播接收器来移除 SD 卡

    public class MyReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {
        //If SD Card is Removed it will Come Here
    
               //Intent service = new Intent(context, WordService.class);
        //context.startService(service);
    }
    }
    

    在您的 Android 清单文件中添加接收器,如下面的代码。

      <receiver android:name="MyReceiver " >
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_EJECT" />
            </intent-filter>
        </receiver>
    

    【讨论】:

    • 是 MEDIA_REMOVED 还是 MEDIA_EJECT?我应该在清单文件中包含任何权限吗???
    • ACTION_MEDIA_EJECT 在用户即将移除 SD 卡时广播(类似于 Windows 上的“安全设备移除”); ACTION_MEDIA_REMOVED 在卡被实际移除后发送。据我所知,不需要任何权限。
    • @TonythePony 如果我在接收器中添加了两个动作,哪个将首先广播?或者我是否需要其他广播接收器来检查首先接收到的。MEDIA_REMOVED 或MEDIA_EJECT。
    • *EJECT 在*REMOVED 之前,但用户的删除尝试可能会中止。
    • 如果您的应用使用外部存储上的文件,它应该在*EJECT 广播时关闭它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    相关资源
    最近更新 更多