2014-10-07 3 views
0

Привет, это мой первый вопрос о stackoverflow, и я новичок в программировании на Android. Я просмотрел множество веб-страниц, но не могу найти решение. То, что я пытаюсь сделать, это запустить новое действие, когда кнопка нажата через 5 секунд с помощью BroadcastReceiver. Эта деятельность будет иметь новый интерфейс с графикой и звуками (в конце концов). Я получил BroadcastReceiver для работы, но программа вылетает, когда она пытается запустить новое намерение. Что я делаю не так?Запуск намерения от BroadcastReceiver?

метод в моем классе MainActivity:

public void setAlarm(){  
    Intent intent = new Intent(MainActivity.this, MyBroadcastReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0); 

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 5 * 1000, pendingIntent); 
} 

Мой BroadcastReceiver класс:

public class MyBroadcastReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent){ 

     Intent intent1 = new Intent(context, ShakeActivity.class); 
     context.startActivity(intent1); 
     Toast.makeText(context, "Broadcast works", Toast.LENGTH_LONG).show(); 
    } 
} 

файл манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.shakecounter" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="19" /> 

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

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

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.shakecounter.ShakeActivity" 
      android:label="@string/title_activity_shake" > 
     </activity> 

     <receiver android:name="com.example.shakecounter.MyBroadcastReceiver"> 
     </receiver> 
    </application> 

</manifest> 
+0

i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); –

ответ

0

Вы должны поставить флаг FLAG_ACTIVITY_NEW_TASK, когда Вы начинаете изнутри a Получатель:

Intent intent1 = new Intent(context, ShakeActivity.class); 
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(intent1); 

Если есть еще одна проблема, вы должны отправить лог-код.

+0

Это работает! Вы, ребята, быстро здесь – rainingdx

1
Intent intent1 = new Intent(context, ShakeActivity.class); 
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(intent1); 
+0

Спасибо, что работает – rainingdx

1

Попробуйте этот.

Intent iAlarm = new Intent(mcontext1, Alertdialogclass.class); 
iAlarm.addFlags(Intent.FLAG_FROM_BACKGROUND); 
iAlarm.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
mcontext1.startActivity(iAlarm); 
+0

Спасибо за быстрый ответ! – rainingdx

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