2012-03-27 10 views
5

Tôi đã viết một ứng dụng tiện ích nhỏ chỉ dành cho điện thoại của mình, điều này đã ngăn chặn nhà cung cấp dịch vụ gây phiền nhiễu cung cấp tiếng leng keng chạy trên khởi động. Tôi nhận thấy âm thanh không phát nếu tôi đặt điện thoại vào chế độ im lặng trước khi tắt nguồn, vì vậy tôi đã viết tiện ích nhỏ này để im lặng khi tắt nguồn và khôi phục âm thanh khi khởi động. Điều này làm việc tốt cho Galaxy S2 trên Gingerbread. Toàn bộ mã trong hai lớp:BroadcastReceivers in 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); 
    } 
} 

Các biểu hiện là

<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> 

Bây giờ điện thoại của tôi đã được nâng cấp lên ICS bởi hãng của tôi, nó không còn hoạt động. Nếu tôi đặt điện thoại vào chế độ im lặng trước khi tắt nguồn, tiếng leng keng không phát. Do đó tôi nghi ngờ rằng cả hai bộ thu không được kích hoạt. (Tôi đã đặt một số mã đăng nhập trong các máy thu không hiển thị, nhưng tôi nghi ngờ rằng vì thời gian nó có thể không được hiển thị dưới Gingerbread.)

Bất kỳ đề xuất nào vui lòng giải thích lý do tại sao làm việc nữa?

Trả lời

9

Nếu bạn hoàn toàn gỡ cài đặt và cài đặt lại ứng dụng, sự cố là bạn không có hoạt động nào.

Bắt đầu với Android 3.1, các ứng dụng được cài đặt ở trạng thái "đã dừng", nơi không có bộ thu phát sóng nào hoạt động cho đến khi người dùng khởi chạy hoạt động theo cách thủ công. Đây là một động thái chống phần mềm độc hại. I blogged about this ~9 months ago.

+0

Tôi nghĩ rằng tôi hiểu. Vì vậy, nếu tôi thêm một hoạt động giả với một Bánh mì nướng hoặc một cái gì đó và chạy nó chỉ một lần, nó sẽ làm việc sau đó? – NickT

+0

@NickT: Có. Nếu bạn đang phân phối ứng dụng này, bạn có thể sử dụng một số thủ thuật để vô hiệu hóa thành phần trên các phiên bản trước của Android, vì vậy nó không làm lộn xộn lên trình khởi chạy. Đây là một dự án mẫu mà tôi sử dụng mẹo đó: https://github.com/commonsguy/cw-advandroid/tree/master/RemoteViews/Plugin – CommonsWare

+0

Cảm ơn, điều đó hoạt động tốt, tiết kiệm cho tôi khỏi sự bối rối xã hội khi tôi bật điện thoại trên. (P.S. Tôi đã cắt và dán 'im lặng' và 'bình thường' cách sai vòng từ mã thực khi tôi lần đầu đăng câu hỏi) – NickT