Android 通过程序发送短信(非接收状态)
我逐字使用代码示例,但我更改了:Android 通过程序发送短信(非接收状态),android,android-intent,sms,broadcastreceiver,Android,Android Intent,Sms,Broadcastreceiver,我逐字使用代码示例,但我更改了: import android.telephony.gsm.SmsManager; 致: 短信发送正常,但我没有收到发送到网络的TOAST消息。我正在尝试将SMS集成到我的应用程序中,这一点很重要。我相信这是可以做到的,因为股票短信应用程序如何知道何时停止显示“发送圈”。相关代码部分如下所示: //---when the SMS has been sent--- registerReceiver(new BroadcastReceiver(){
import android.telephony.gsm.SmsManager;
致:
短信发送正常,但我没有收到发送到网络的TOAST消息。我正在尝试将SMS集成到我的应用程序中,这一点很重要。我相信这是可以做到的,因为股票短信应用程序如何知道何时停止显示“发送圈”。相关代码部分如下所示:
//---when the SMS has been sent---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
//---when the SMS has been delivered---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));
我使用的是果冻豆ROM,但我相信我不久前在姜饼和ICS上测试了相同的片段,得到了相同的结果。API是否已更改,或者样本是否存在问题?如果有帮助的话,我正在测试Sasmsung GSIII。我以前的测试是在Epic上进行的。您的代码看起来很好。可能问题在于,您的运营商没有向您提供送货报告(可能有订阅服务的选项),或者您没有在手机中打开送货报告。play store上有一个名为Delivery Reports的有用应用程序,您可以从中查看每条短信的状态。您的代码看起来很好。可能问题在于,您的运营商没有向您提供送货报告(可能有订阅服务的选项),或者您没有在手机中打开送货报告。play store上有一个名为Delivery Reports的有用应用程序,您可以从中查看每条短信的状态。对于现在有此问题的任何人,如果您在Android 4.4或更高版本上进行测试,除非您的应用程序是默认的短信应用程序,否则它将无法工作 从文件中- 从Android 4.4开始,系统设置允许用户选择“默认短信应用程序”。一旦选择,只有默认短信应用程序才能写入短信提供商,并且只有默认短信应用程序在用户收到短信时接收短信发送动作广播,或在用户收到彩信时接收WAP推送发送动作广播。默认SMS应用程序负责在SMS提供商接收或发送新消息时向其写入详细信息
请参阅。如果您正在Android 4.4或更高版本上测试此问题,则除非您的应用程序是默认的SMS应用程序,否则它将无法工作 从文件中- 从Android 4.4开始,系统设置允许用户选择“默认短信应用程序”。一旦选择,只有默认短信应用程序才能写入短信提供商,并且只有默认短信应用程序在用户收到短信时接收短信发送动作广播,或在用户收到彩信时接收WAP推送发送动作广播。默认SMS应用程序负责在SMS提供商接收或发送新消息时向其写入详细信息
看。你安装了Go短信或类似的东西吗?没有。目前我正在使用股票ASOP短信应用程序(运行CyannogenMod),但在bast的其他ROM上进行了测试。我在ADB logcat中看不到任何意图。是否安装了Go SMS或类似的东西?不。目前我正在使用股票ASOP短信应用程序(运行CyannogenMod),但在bast的其他ROM上进行了测试。我在ADB logcat中未看到任何意图。可能的副本
//---when the SMS has been sent---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
//---when the SMS has been delivered---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));