2012-03-27 26 views
5

我寫了一個小工具,應用程序只是爲了我的手機,其停止惱人的運營商提供的順口溜其在啓動時播放。我注意到,如果在關閉電源之前將手機置於靜音模式,則聲音無法播放,所以我編寫了這個小工具,可以在關機時保持沉默並在啓動時恢復聲音。這對於薑餅上的Galaxy S2非常有效。整個代碼爲兩類:BroadcastReceivers在ICS

public class OnShutDownReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     AudioManager mgr=(AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
     mgr.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
    } 

} 

public class OnBootReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     AudioManager mgr=(AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
     mgr.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
    } 
} 

清單是

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.nbt.hush" 
    android:versionCode="1" 
    android:versionName="1.0" > 
    <uses-sdk android:minSdkVersion="7" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <receiver android:name=".OnBootReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
     <receiver android:name=".OnShutDownReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.ACTION_SHUTDOWN" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

現在我的手機已經被我的運營商升級到ICS,它不再起作用。如果我在關機前將手機置於靜音模式,則鈴聲不會播放。因此我懷疑這兩個接收器都沒有被觸發。 (我確實把一些日誌代碼放在沒有出現的接收器中,但我懷疑是因爲它的時間可能不會在薑餅下顯示)

任何建議,請問爲什麼它不會工作了?

回答

9

如果清盤完全卸載並重新安裝應用程序,問題是你有沒有活動。

與Android 3.1開始,應用程序安裝在一個「停止」狀態,其中沒有廣播接收器將工作,直到用戶手動啓動的活動。這是一個反惡意軟件的舉動。 I blogged about this ~9 months ago

+0

我想我明白了。所以如果我用Toast或其他東西添加一個虛擬活動並且只運行一次,它應該在其後工作? – NickT 2012-03-27 15:11:28

+0

@NickT:是的。如果你分發這個應用程序,你可以使用一些技巧來禁用早期版本的Android上的組件,所以它不會混亂啓動器。下面是一個示例項目中,我使用的技巧:https://github.com/commonsguy/cw-advandroid/tree/master/RemoteViews/Plugin – CommonsWare 2012-03-27 15:16:23

+0

謝謝,現在工作得很好,從社會的尷尬節省了我,當我打開手機上。 (附註:我剪切和粘貼「沉默」和「正常」從實際的代碼以錯誤的方式,當我第一次張貼的問題) – NickT 2012-03-27 15:32:50