gpt4 book ai didi

android - 在android中访问短信的电话号码

转载 作者:搜寻专家 更新时间:2023-11-01 09:00:18 28 4
gpt4 key购买 nike

我是 android 的新手,我正在尝试在收到新消息时获取短信的号码,为此我正在使用广播接收器。但是当一条新消息出现时,我的“广播接收者”类无法正常工作。谁能帮我找出问题所在。在下面给出我的代码..

public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);
}


public class MyBroadcastReciever extends BroadcastReceiver
{

@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String smsnumber = "";
if (bundle != null)
{
//---retrieve the sender number SMS received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++)
{
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
smsnumber = msgs[i].getOriginatingAddress();
}
}
}
}

}

我已经在 list 中给出了接收标签。

 <receiver android:name="com.aucupa.iack.MyBroadcastReciever" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

也获得了接收短信的使用权限..

<uses-permission android:name="android.permission.RECEIVE_SMS" />

但是当短信来自 MyBroadcastReciever 类时没有响应。当我调试控件时,控件没有到达 MyBroadcastReciever 类。请帮我找出问题

终于在大家的帮助下得到了答案,在这里给出我的答案..

 public class MainActivity extends Activity
{

MyBroadcastReciever broadcastreciever = new MyBroadcastReciever();
static final String SOME_ACTION = "android.provider.Telephony.SMS_RECEIVED";
IntentFilter intentFilter = new IntentFilter(SOME_ACTION);

Intent i = new Intent(SOME_ACTION);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);

sendBroadcast(i);
context.registerReceiver(broadcastreciever, intentFilter);
}


public class MyBroadcastReciever extends BroadcastReceiver
{

@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction() == "android.provider.Telephony.SMS_RECEIVED"){
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String smsnumber = "";
if (bundle != null)
{
//---retrieve the sender number SMS received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++)
{
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
smsnumber = msgs[i].getOriginatingAddress();
}
}
}
}
}

}

最佳答案

在扩展 BroadcastReceiver 的 MyBroadcastReciever 中,在 onReceive() 中尝试这段代码

 if (intent.getAction() == android.provider.Telephony.SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
// your rest of code

}
}

关于android - 在android中访问短信的电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584081/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com