0

"BroadcastReceiver"를 확장 할 수있는 응용 프로그램을 만들려고합니다. 그리고 xml GUI에 버튼이 있습니다. 새 활동 (GUI)을 열려고합니다. 나는 그것을 눌러. 나는 Activity를 확장 할 때 그것을하는 방법을 알고 있지만 BroadcastReceiver를 확장 할 때는 그렇지 않다. 이건 내 자바 코드 :버튼을 클릭하면 BroadcastReceiver에서 새로운 활동을 시작하는 방법

import info.kfsoft.android.R.raw; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.widget.TextView; 
import android.widget.Toast; 

public class SMSReceiver extends BroadcastReceiver 
{ 

    MediaPlayer ourSong; 
    TextView display; 


    public void onReceive(Context context, Intent intent) 
    { 
     NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     ourSong = MediaPlayer.create(context, R.raw.music2); 


     Bundle myBundle = intent.getExtras(); 
     SmsMessage [] messages = null; 
     String strMessage = ""; 

     if (myBundle != null) 
     { 
      Object [] pdus = (Object[]) myBundle.get("pdus"); 
      messages = new SmsMessage[pdus.length]; 

      for (int i = 0; i < messages.length; i++) 
      { 
       messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       strMessage += messages[i].getMessageBody();     
      }    
      Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show(); 

      AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
       am.setStreamVolume(AudioManager.STREAM_MUSIC,am.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);    
      Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show();    
      ourSong.start();   
     } 
    } 
    public void a(){ 

    } 

} 

이 이전 자바 코드와 함께 작동 내 XML을 RelativeLayout의이다 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="info.kfsoft.android.MainActivity$PlaceholderFragment" > 

    <TextView 
     android:id="@+id/msg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

    <Button 
     android:id="@+id/cmd" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/msg" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="98dp" 
     android:text="Button" /> 

</RelativeLayout> 

지금 내가 @ + 함께 (버튼을 누르면 새로운 의도를 열려면 ID/CMD) :

이 새로운 목적의 Jave 코드 :

public class AboutUs extends Activity{ 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.about); 
     } 

    } 
+0

당신 와나은 reciver입니다에서 활동을 시작? – Selvin

+0

브로드 캐스트 리시버를 볼 수 없기 때문에 당신이하려고하는 것을 모릅니다. 당신은 당신이 BroadcastReceiver를 시작하거나 RemoteViews로 일하는 다른 활동에서 행동하고 있습니까? – Opiatefuchs

+0

@Selvin 새 액티비티를 열려고합니다. –

답변

2

간단한 대답은, 당신은 할 수있다 다음과 같이 수신기에서 활동을 시작하십시오.

 Intent i = new Intent(context.getApplicationContext(), AboutUs.class);   
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(i); 

수신자로부터 활동을 시작하는 방법입니다. 하지만 먼저 다른 활동에서 브로드 캐스트를 보내야만 브로드 캐스트 수신기를 "깨워"야합니다. 버튼 클릭에

+0

사용하려고했지만 버튼을 사용할 수 없습니다. 버튼을 눌렀을 때 어떻게 사용하는지 안다. thx –

+0

나는 당신이 뭘 하려는지 정말 모르겠다, 미안. 그래서 내가 짐작하는 것은 당신이 위젯을 만들고 있다는 것입니다. 그럴 수 있니? 나는 우리가 당신의 코드를 더 많이 볼 필요가 있다고 생각하며 중요한 것은 ... 당신의 버튼은 어디에 있습니까? 내 Activity 또는 AppwidgetProvider에서이 RelativeLayout을 사용합니까? – Opiatefuchs

+0

버튼에 fragment_main.xml을 사용하고 비어있는 activity_main.xml을 가지고 있습니다. –

0

OnClickListener listnr=new OnClickListener() { 

        @Override 

        public void onClick(View v) { 

    Intent i = new Intent(context.getApplicationContext(), NewActivity.class);   

    context.startActivity(i); 



        } 

      }; 

      Button btn =(Button) findViewById(R.id.btn); 

      btn.setOnClickListener(listnr); 
관련 문제