2012-06-28 31 views
8

Nếu một ứng dụng Android muốn sử dụng Dịch vụ quản lý báo thức thì quyền ứng dụng nào cần phải có?cho phép ứng dụng Android cần sử dụng Dịch vụ Trình quản lý báo thức?

Tôi đã thử nghiệm rằng có vẻ như ứng dụng không cần phải có bất kỳ sự cho phép nào để sử dụng Dịch vụ quản lý báo thức.

Điều đó có đúng không?

+2

Bạn có nghĩ câu trả lời đầu tiên phải được đánh dấu là chính xác không? – larham1

Trả lời

6

Vâng, đó là sự thật. Bạn không phải thêm bất kỳ dịch vụ đặc biệt nào. Xin lưu ý rằng khi điện thoại được khởi động lại, các báo thức bạn đã đặt sẽ bị mất, vì vậy bạn có thể muốn sắp xếp lại chúng vào thời gian khởi động, yêu cầu quyền android.permission.RECEIVE_BOOT_COMPLETED.

1

Nó đánh thức CPU sau mỗi 10 phút cho đến khi điện thoại tắt.

<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 

<receiver android:process=":remote" android:name="Alarm"></receiver> 

Nếu bạn muốn thiết lập báo động lặp đi lặp lại vào lúc khởi động điện thoại:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 
... 
<receiver android:name=".AutoStart"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
    </intent-filter> 
</receiver> 

Để biết thêm chi tiết:Alarm Manager Example

+0

nếu nó đưa ra giải pháp thì bạn có thể chấp nhận điều này như là câu trả lời – Ponmalar

+0

theo ý kiến ​​của tôi, đó không phải là giải pháp (toàn bộ), bởi vì bạn không nói điều gì sẽ xảy ra nếu tôi không sử dụng bất kỳ quyền nào – marcin

+0

Bạn có thể giải thích tại sao bạn đang chạy người nhận trong một quá trình từ xa? – MobileMon

0

Thêm vào manifest.xml:

<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 
... 
<receiver android:process=":remote" android:name="Alarm"></receiver> 

đang :

package YourPackage; 
    import android.app.AlarmManager; 
    import android.app.PendingIntent; 
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.os.PowerManager; 

public class Alarm extends BroadcastReceiver 
    {  
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG"); 
      wl.acquire(); 

      // Put here YOUR code. 
      Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example 

      wl.release(); 
     } 

    public void SetAlarm(Context context) 
    { 
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, Alarm.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi); // Millisec * Second * Minute 
    } 

    public void CancelAlarm(Context context) 
    { 
     Intent intent = new Intent(context, Alarm.class); 
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.cancel(sender); 
    } 
    } 

Nếu bạn muốn thiết lập báo động lặp đi lặp lại vào lúc khởi động điện thoại:

Thêm phép manifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 
    <receiver android:name=".AutoStart"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
     </intent-filter> 
</receiver> 
+0

Tôi vừa thực hiện kiểm tra làm mã của bạn, nhưng tôi gặp lỗi: V/onPause: (10099): khi tạm dừng V/updateReceiver (10099): cập nhật ứng dụng D/AndroidRuntime (10099): Tắt VM W/dalvikvm (10099): threadid = 1: thread thoát với ngoại lệ chưa bắt (nhóm = 0x4001e578) E/AndroidRuntime (10099): CHỨC NĂNG CHẤT LƯỢNG: chính E/AndroidRuntime (10099): java.lang.RuntimeException: Lỗi nhận Intent broadcast {act = com.tcm.alarm.intent.UPDATE flg = 0x40000004 (có tính năng bổ sung)} trong [email protected] E/AndroidRuntime (10099): \t tại – tomtu

+0

lý do tại sao tôi không thể nhập Enter tạo thành chú thích – tomtu

-1

có muốn thêm vài bit với những gì Cristian Nói

Ngay cả khi bạn sử dụng quyền android.permission.RECEIVE_BOOT_COMPLETED, ứng dụng của bạn sẽ chạy đúng trên các thiết bị 2.XX.

Nhưng trong các thiết bị 4.x người nhận broadvast sẽ không hoạt động trên Boot cho đến khi và trừ khi bạn khởi động ứng dụng bằng tay

2

Tôi không biết tại sao không đề cập đến bất kỳ một sự cho phép này

Tuy nhiên, theo tài liệu hướng dẫn android, bạn nên sử dụng phép SET_ALARM

Documentation

Allows an application to broadcast an Intent to set an alarm for the user.

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 
+9

Đây là dành cho đồng hồ báo thức, không dành cho AlarmManager. – Joonazan

Các vấn đề liên quan