2014-10-07 5 views
0

안녕하세요,이 첫 번째 질문에 stackoverflow 및 나는 안드로이드 프로그래밍 초보예요. 수많은 웹 페이지를 살펴 보았지만 내 솔루션을 찾지 못했습니다. 내가하려는 것은 BroadcastReceiver로 5 초 후에 버튼을 누르면 새로운 활동을 시작하는 것이다. 이 액티비티에는 그래픽과 사운드가 포함 된 새로운 UI가 있습니다 (결국). 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); 
} 

내 브로드 캐스트 리시버 클래스 :

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(); 
    } 
} 

매니페스트 파일 : 당신은 플래그 FLAG_ACTIVITY_NEW_TASK을 넣어야 할

<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

당신은 시작 수신기 내부에서 :

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

다른 문제가있는 경우 logcat을 게시해야합니다.

+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

관련 문제