안드로이드 개발 질문/답변
(글 수 45,052)
앱 위젯에서 Intent 를 받아서 Receiver에서 액션을 처리 하는 프로그램을 설계 중인데요.
인터넷에서 예제를 다 받아서 실행해 보아도 PendingIntent.getBroadcast 를 통해서 Intent 를 발생해도 아무련 변화가 없네요...
Log 를 이용해서 Receiver에 두어도 아무런 반응도 튀어나오지 않네요..
근데 Activity를 불러오는건 PendingIntent.getActivity 는 잘 실행되어서 Intent 가 발생되는게 보이는데..
이상하게 PendingIntent.getBroadcast 만 변화가 없네요..
제 컴터의 애뮬레이터의 문제일 수 도 있는건가요?
아래 소스는 인터넷에서 받아서 실행시켜본 소스인데요. 실행시키면 나오는 버튼 두개에서 Btn2 를 눌렀을 때 화면의 변화는 없지만
Activity가 불려지는것이 Log에 남는게 확실히 보이는데
Btn1을 눌렀을 때 액션이 나타나지 않네요..;;; 무슨 문제일까요?;;; ㅠㅠ
인터넷에서 예제를 다 받아서 실행해 보아도 PendingIntent.getBroadcast 를 통해서 Intent 를 발생해도 아무련 변화가 없네요...
Log 를 이용해서 Receiver에 두어도 아무런 반응도 튀어나오지 않네요..
근데 Activity를 불러오는건 PendingIntent.getActivity 는 잘 실행되어서 Intent 가 발생되는게 보이는데..
이상하게 PendingIntent.getBroadcast 만 변화가 없네요..
제 컴터의 애뮬레이터의 문제일 수 도 있는건가요?
아래 소스는 인터넷에서 받아서 실행시켜본 소스인데요. 실행시키면 나오는 버튼 두개에서 Btn2 를 눌렀을 때 화면의 변화는 없지만
Activity가 불려지는것이 Log에 남는게 확실히 보이는데
Btn1을 눌렀을 때 액션이 나타나지 않네요..;;; 무슨 문제일까요?;;; ㅠㅠ
public class TestWidgetProvider extends AppWidgetProvider {
private static final String ACTION_ACTION1 = "com.rosa.action.test1"; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
PendingIntent pending1 = PendingIntent.getBroadcast(context, 0, new Intent(ACTION_ACTION1), 0); PendingIntent pending2 = PendingIntent.getActivity(context, 0, new Intent(context, TestActivity.class), 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.testwidget_layout); views.setOnClickPendingIntent(R.id.TestBtn1, pending1); views.setOnClickPendingIntent(R.id.TestBtn2, pending2);
Log.d("Test","seting"); ComponentName thisWidget = new ComponentName(context, TestWidgetProvider.class); AppWidgetManager manager = AppWidgetManager.getInstance(context); manager.updateAppWidget(thisWidget, views); super.onUpdate(context, appWidgetManager, appWidgetIds); }
@Override public void onReceive(Context context, Intent intent) { String action = intent.getAction();
Log.e("ROSA", action);
if (action.equals(ACTION_ACTION1)) { Log.d("Test","testok"); Toast.makeText(context, "onReceive :: ACTION_ACTION1 ", 3000) .show(); } else if (action.equals(Intent.ACTION_SCREEN_OFF)) { Log.d("Test","testerror");
} else { // 여긴 안올꺼임 } super.onReceive(context, intent); } }