2014-03-04 3 views
0

앱을 개발 중입니다.이 코드를 사용하여 브로드 캐스트 리시버 클래스에서 Main Activity 클래스로 Google에서 보내는 등록 ID를 보내고 있습니다.브로드 캐스트 수신기 클래스의 데이터 추출

context.sendBroadcast(new Intent("com.example.sampletestproject.REGISTER_DEVICE"). putExtra("GCM_REG_ID",registrationId)); 

이제 주 활동 클래스에서이 등록 ID를 받고 싶습니다. 새로운 브로드 캐스팅 수신기 클래스를 만들지 만 가치가없는 것은이 작업을 수행하려고합니다. 주 활동 코드는입니다.

Button bt1,bt2; 

BroadcastReceiver mReceiver; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    registerReceiver(mReceiver, new IntentFilter("com.example.sampletestproject.REGISTER_DEVICE")); 

    bt1=(Button) findViewById(R.id.button1); 
    bt2=(Button) findViewById(R.id.button2); 
    bt1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      //Log.d("msg", "Button clicked"); 
      Toast.makeText(MainActivity.this, "Button clicked", Toast.LENGTH_LONG).show(); 
      Intent registrationIntent=new Intent("com.google.android.c2dm.intent.REGISTER"); 
     // Log.d("msg", "Intent created"); 
      Toast.makeText(MainActivity.this, "Intent created", Toast.LENGTH_LONG).show(); 
      registrationIntent.putExtra("app", PendingIntent.getBroadcast(v.getContext(),0,new Intent(),0)); 
      registrationIntent.putExtra("senderid","908614649566"); 
      startService(registrationIntent); 
      //Log.d("msg", "Intent Registered"); 
      Toast.makeText(MainActivity.this, "Intent Register", Toast.LENGTH_LONG).show(); 

     } 
    }); 
    bt2.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) { 
      Intent unregintent=new Intent("com.google.android.c2dm.intent.UNREGISTER"); 
      unregintent.putExtra("app", PendingIntent.getBroadcast(v.getContext(),0, new Intent(), 0)); 
      startService(unregintent); 
      Toast.makeText(MainActivity.this, "Intent unregister", Toast.LENGTH_LONG).show(); 

     } 
    }); 

    mReceiver = new BroadcastReceiver() 
    { 

     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      //post registration id to server 
      Toast.makeText(MainActivity.this, "within new broadcast receiver in mainactivity", Toast.LENGTH_LONG).show(); 
      Intent it=getIntent(); 
      it.getExtras().get("GCM_REG_ID"); 

     } 
    }; 

} 
+1

먼저이'mReceiver'는 다음에 등록 초기화 this example을 참조 별도로 수신기를 생성하고 안드로이드 매니페스트에 등록되어 ... –

+0

인터페이스 콜백 manifestfile에서 내 의견 –

+0

브로드 캐스트 리시버의 registor 더 유용한 것인가? – Sri

답변

0

이렇게 표시되어야합니다.

버튼 bt1, bt2;

BroadcastReceiver mReceiver; @Override 보호 된 void onCreate (번들 savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);

bt1=(Button) findViewById(R.id.button1); 
bt2=(Button) findViewById(R.id.button2); 
bt1.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) 
    { 
     //Log.d("msg", "Button clicked"); 
     Toast.makeText(MainActivity.this, "Button clicked", Toast.LENGTH_LONG).show(); 
     Intent registrationIntent=new Intent("com.google.android.c2dm.intent.REGISTER"); 
    // Log.d("msg", "Intent created"); 
     Toast.makeText(MainActivity.this, "Intent created", Toast.LENGTH_LONG).show(); 
     registrationIntent.putExtra("app", PendingIntent.getBroadcast(v.getContext(),0,new Intent(),0)); 
     registrationIntent.putExtra("senderid","908614649566"); 
     startService(registrationIntent); 
     //Log.d("msg", "Intent Registered"); 
     Toast.makeText(MainActivity.this, "Intent Register", Toast.LENGTH_LONG).show(); 

    } 
}); 
bt2.setOnClickListener(new OnClickListener() 
{ 

    @Override 
    public void onClick(View v) { 
     Intent unregintent=new Intent("com.google.android.c2dm.intent.UNREGISTER"); 
     unregintent.putExtra("app", PendingIntent.getBroadcast(v.getContext(),0, new Intent(), 0)); 
     startService(unregintent); 
     Toast.makeText(MainActivity.this, "Intent unregister", Toast.LENGTH_LONG).show(); 

    } 
}); 

mReceiver = new BroadcastReceiver() 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     //post registration id to server 
     Toast.makeText(MainActivity.this, "within new broadcast receiver in mainactivity", Toast.LENGTH_LONG).show(); 
     Intent it=getIntent(); 
     it.getExtras().get("GCM_REG_ID"); 

    } 
};registerReceiver(mReceiver, new IntentFilter("com.example.sampletestproject.REGISTER_DEVICE")); 

} 수신기가 활성이 생성되므로

+0

강제 종료. 다른 해결책을주십시오. –

+0

충돌 로그를 추가합니다 –

0

, 수신기가 활성 인 경우에만 활성화 될 수 있도록한다. 더 나은 아이디어 가

+0

하지만 mainactivity.so 내 결과를 별도로 다른 수신기를 만드는 좋은 옵션이 필요합니다. –

관련 문제