2014-01-29 15 views
3

Я пытаюсь использовать ящик тревоги с broadcasReceiver. Я пытаюсь использовать пример, приведенный в Tutorial: System Services and BroadcastReceiver. но когда я запускаю пример после окончания времени, у меня нет тоста, который я хотел бы показать. код задается код ниже:BroadcastReceiver и alarmManager Android

Моя основная активность:

public class AlarmActivity extends Activity { 


    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_alarm); 
    } 

    public void startAlert(View view) { 
     EditText text = (EditText) findViewById(R.id.time); 
     int i = Integer.parseInt(text.getText().toString()); 
     Intent intent = new Intent(this, MyBroadcastReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() 
       + (i * 1000), pendingIntent); 
     Toast.makeText(this, "Alarm set in " + i + " seconds", 
       Toast.LENGTH_LONG).show(); 
    } 


} 

мой BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver{ 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "Don't panik but your time is up!!!!.", 
       Toast.LENGTH_LONG).show(); 
     // Vibrate the mobile phone 
     Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     vibrator.vibrate(2000); 
    } 

} 

мой главный Laout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 

    <EditText 
      android:id="@+id/time" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:hint="Number of seconds" 
      android:inputType="numberDecimal" > 
    </EditText> 

    <Button 
      android:id="@+id/ok" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="startAlert" 
      android:text="Start Counter" > 
    </Button> 

</LinearLayout> 

и manifestfile:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.broadcastreceiver" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 
    <uses-permission android:name="android.permission.VIBRATE" > 
    </uses-permission> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.broadcastreceiver.AlarmActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver android:name=".MyBroadcastReceiver" > 
     </receiver> 
    </application> 

</manifest> 
+0

Не могли бы вы обновить ссылку на реальный учебник, а не на главной странице? Трудно найти правильный пример, который вы упомянули без этой ссылки. – WarrenFaith

+0

@WarrenFaith done – zied

+0

@ user3156767, вы когда-нибудь заставляли это работать? Я все пробовал, и все же моя не работает. – Azurespot

ответ

3

Приемник должен простираться от BroadcastReceiver

public class MyBroadcastReceiver extends BroadcastReceiver { 
    // ... 
} 

быть также уверены, что приемник имя в файле манифеста является правильным.

+0

мое имя пакета ошибочно в манифесте, – zied

1

ваш класс MyBroadcastReceiver неправильно поставил этот код

public class MyBroadcastReceiver extends BroadcastReceiver 
{ 
@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Don't panik but your time is up!!!!.", 
       Toast.LENGTH_LONG).show(); 
     // Vibrate the mobile phone 
     /*Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     vibrator.vibrate(2000);*/  
} 
} 

просто вам нужно добавить "расширяет BroadcastReceiver" и получить OnReceive() переопределение метода.

0

Вы просто забыли переопределить метод OnReceive(). public void onReceive(Context context, Intent intent) предопределена метод BroadcastReceiver, wheneven вы используете его, вы должны @Override его следующим образом,

public class MyBroadcastReceiver extends BroadcastReceiver 
{ 
    @Override // You forgot this line 
    public void onReceive(Context context, Intent intent) 
    { 
      Toast.makeText(context, "Don't panik but your time is up!!!!.",Toast.LENGTH_LONG).show(); 
    } 
} 
0

Вы создали функцию startAlert которой и не вызывать anywhere.So первый вызов, метод OnCreate и то вы получите тост.

Смежные вопросы