브로드캐스트 수신기 - Broadcast Receiver(1)
제가 설명을 잘 못해서 못 봤을 수도 있어요. 용서해 주세요. 본인의 표현 능력이 별로 좋지 않아요.
다음은 문자 차단의 예를 쓰겠습니다.
1단계: 브로드캐스트 수신기 등록
등록 수신기는 두 가지 방법이 있는데, 하나는 manifest에 있다.xml 파일에 등록하고 다른 하나는 자바 코드로 등록합니다.
manfest에 등록
<receiver
android:name=".TestRecevier">
<intent-filter>
<action android:name="android.intent.action.EDIT"/>
</intent-filter>
</receiver>
package mobile.android.register.receiver;
import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class Main extends Activity
{
private ShortMessageReceiver shortMessageReceiver;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
shortMessageReceiver = new ShortMessageReceiver();
}
public void onClick_Register_Broadcast(View view)
{
registerReceiver(shortMessageReceiver, new IntentFilter(
"android.provider.Telephony.SMS_RECEIVED"));
Toast.makeText(this, " ", Toast.LENGTH_LONG).show();
}
public void onClick_Unregister_Broadcast(View view)
{
unregisterReceiver(shortMessageReceiver);
Toast.makeText(this, " ", Toast.LENGTH_LONG).show();
}
}
이것은 자바 코드로 등록한 것이다.package mobile.android.register.receiver;
import java.util.Set;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;
public class ShortMessageReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
if (bundle != null)
{
Set<String> keys = bundle.keySet();
for (String key : keys)
{
Log.d("key", key);
}
Object[] objArray = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[objArray.length];
for (int i = 0; i < objArray.length; i++)
{
messages[i] = SmsMessage.createFromPdu((byte[]) objArray[i]);
String s = "
:" + messages[i].getOriginatingAddress()
+ "
";
s += " :" + messages[i].getDisplayMessageBody();
Toast.makeText(context, s, Toast.LENGTH_LONG).show();
}
}
}
}
수신 후 onReceive 방법을 실행합니다.여기에는 또 상응하는 권한이 필요하다
<uses-permission android:name="android.permission.RECEIVE_SMS" />
방송 메커니즘은 이해하기 어렵지 않다.또 하나의 문제는 두 가지 등록 방법이 어떤 차이가 있습니까?
androidmanifest에 있습니다.xml 파일 등록, 만약에 응용 프로그램이 꺼진다면 방송 메시지를 받아들일 수 있다. 예를 들어 배터리의 전량을 감시하고 응용 프로그램이 꺼진다면 여전히 전량의 변화를 감시할 수 있다.그러나 일부 상황은 적합하지 않다. 창에서 컨트롤을 업데이트하는 상태가 낫다. 이것은 manfest에 등록하는 것이 적합하지 않다. 이럴 때 자바 코드로 등록해야 한다. 이게 무슨 좋은 점이 있겠는가. 이것은 언제든지 프로그램을 열고 언제든지 등록할 수 있다. 사용하고 싶지 않으면 프로그램을 닫으면 수신기도 소각된다.이것이 바로 양자의 차이다.
라디오 수신기의 우선순위 문제
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.