2016-03-01 135 views
1

我正在學習BroadcastReceiver。廣播接收器的顯示Toast

我想顯示Tocard消息SDcard安裝或卸載時。

我跟在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

親愛的downvoter,請讓我知道downvote的原因。所以我可以避免這個錯誤謝謝! – user2020

回答

0

你可以這樣做:

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

} 
+0

感謝您的回覆。按照建議將「MainActivity.this」更改爲「上下文」,但仍無法正常工作。 – user2020

+0

嘗試放置日誌並查看onReceive是否被調用。如果沒有,發佈你的意圖。 –

+0

謝謝,會嘗試添加日誌,看看它是否被調用。我的意圖?你是指代碼?我只有上面清單文件中提到的「intent-filter」。如果您不是指代碼,我正在學習應用程序開發,希望首先靜態地動態學習任何操作的廣播接收器。 – user2020

0

正如我在評論部分中提到的,我真是太笨使用<receiver>標籤外<application>。不知何故,我沒有意識到,超過24小時。我希望這能幫助像我這樣完全新手的人。

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.javaMountReceiver.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(); 
    } 
} 

隨時讓我知道你的結果。