public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Received Alarm", Toast.LENGTH_SHORT).show();
Intent i= new Intent();
i.setClassName("yjlim.android.SMSReceiver", "yjlim.android.SMSReceiver.SMSReceiver"); -> 이거는 암시적으로 되어있는 액티비티입니다!
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i); -> 여기서 오류가 있다구 뜨구요!
}
}
저 인텐트는.. BroadcastReceiver를 불러주는 인텐트 입니다..
이게 리시버에서 밖에 있는 리시버를 불러줘서 에러가 나는 건가요?
네네~ 했는데도 안되네요.. 뭐.. 리시버랑 액티비티 다했는데.. ㅠㅠ
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="yjlim.android.Alarm"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".HW4_0791080"
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=".AlarmReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<activity android:name=".HW4_SMSReceiver"></activity>
<receiver android:name=".SMSReceiver">
</receiver>
</application>
</manifest>
이렇게 했는데.. 뭐가 잘 못됬는지 ㅠㅠ 계속 메니페스트가 뭐가 이상하다고 나오네요 ㅠㅠ
액티비티를 상속받은 클래스를 말하는 겁니다만,
코드상에서는 리시버를 액티비티처럼 실행하려 하시는 거 같네요~
리시버를 호출하시려면,
sendBroadcast() 메서드를 이용해야 합니다~
SMSReceiver 를 호출할 수 있는 임의의 Intent Action 을 하나 만드세요~
public static final string RECEIVER_CALL = "yjlim.android.RECEIVER_CALL";
그리고 매니페이스트에 인텐트 필터로 등록하고
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="yjlim.android.RECEIVER_CALL" />
</intent-filter></receiver>
sendBroadcast() 메서드로 필요할 때 호출하세요~
sendBroadcast(new Intent(RECEIVER_CALL));




매니페스트에 액티비티 정보 등록 하셨나요?