Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从未调用SMS DeliveryBroadcast(BroadCastReceiver)OnReceive_Android_Sms_Broadcastreceiver - Fatal编程技术网

Android 从未调用SMS DeliveryBroadcast(BroadCastReceiver)OnReceive

Android 从未调用SMS DeliveryBroadcast(BroadCastReceiver)OnReceive,android,sms,broadcastreceiver,Android,Sms,Broadcastreceiver,我正在测试一些短信发送和接收结果应用程序。它按预期发送短信,并为“短信已发送”祝酒。但它从不为“短信传递”干杯。而且它从来没有达到 Log.i("BROADCASTRECEIVER", String.valueOf(getResultCode())); 这意味着不会为短信发送结果调用OnReceive。。。知道为什么吗 public class C extends Activity { static String[] params; static Context cont

我正在测试一些短信发送和接收结果应用程序。它按预期发送短信,并为“短信已发送”祝酒。但它从不为“短信传递”干杯。而且它从来没有达到

Log.i("BROADCASTRECEIVER", String.valueOf(getResultCode())); 
这意味着不会为短信发送结果调用OnReceive。。。知道为什么吗

public class C extends Activity {

    static String[] params;

    static Context context;
    ProgressDialog pd;
    BroadcastReceiver smsDeliveryBroadcast, smsSendBroadcast;
    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.c);
        params = new String[3];
        params[0] = "00905067161660";
        params[1] = "smsC.";
        params[2] = "smsC..";
        new ServerSMSThread().execute(params);
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        unregisterReceiver(smsDeliveryBroadcast);
        unregisterReceiver(smsSendBroadcast);
        super.onPause();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub

        super.onResume();
    }

    public void sendSMS(String phoneNumber, String message) {
        Log.i("NO", phoneNumber);
        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
                SENT), 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
                new Intent(DELIVERED), 0);

        registerSMS();

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);

    }

    private void registerSMS() {
        smsSendBroadcast = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {


                // TODO Auto-generated method stub
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(context, "SMS sent", Toast.LENGTH_SHORT)
                            .show();
                    Log.i("MONITOR", "SMS Gonderildi");
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(context,
                            "SMS sending failed: Generic failure",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(context, "SMS sending failed: No service",
                            Toast.LENGTH_SHORT).show();
                    Log.i("MONITOR", "SMS sending failed: No service");
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(context, "SMS sending failed: Null PDU",
                            Toast.LENGTH_SHORT).show();
                    Log.i("MONITOR", "SMS sending failed: Null PDU");
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(context, "SMS sending failed: Radio off",
                            Toast.LENGTH_SHORT).show();
                    Log.i("MONITOR", "SMS sending failed: Radio off");
                    break;
                }
            }
        };
        smsDeliveryBroadcast = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

                Log.i("BROADCASTRECEIVER", String.valueOf(getResultCode()));
                // TODO Auto-generated method stub
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(context, "SMS delivered", Toast.LENGTH_SHORT)
                            .show();
                    Log.i("MONITOR", "SMS Teslim edildi");
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(context, "SMS not delivered",
                            Toast.LENGTH_SHORT).show();
                    Log.i("MONITOR", "SMS not delivered");
                    break;

                default:
                    Toast.makeText(context, "SMS result bilinmiyor",
                            Toast.LENGTH_SHORT).show();
                    Log.i("MONITOR", "SMS result bilinmiyor");
                    break;
                }
            }
        };

        // ---when the SMS has been sent---
        registerReceiver(smsSendBroadcast, new IntentFilter(SENT));
        // ---when the SMS has been delivered---
        registerReceiver(smsDeliveryBroadcast, new IntentFilter(DELIVERED));
    }



    public class ServerSMSThread extends AsyncTask<String, Void, Void> {

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            if (pd.isShowing())
                pd.dismiss();
            startActivity(new Intent(C.this,B.class).addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            pd = ProgressDialog.show(C.this, "Sending SMS...", "Please wait.");
            Log.i("MONITOR", "SMS Gonderiliyor");
        }

        @Override
        protected Void doInBackground(String... params) {
            // TODO Auto-generated method stub
            for (int i = 1; i < params.length; i++) {
                sendSMS(params[0], params[i]);
            }
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    }

}
公共类C扩展活动{
静态字符串[]参数;
静态语境;
进展性帕金森病;
广播接收机smsDeliveryBroadcast、smsSendBroadcast;
String SENT=“SMS_SENT”;
String DELIVERED=“SMS_DELIVERED”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.c);
params=新字符串[3];
参数[0]=“00905067161660”;
参数[1]=“smsC。”;
参数[2]=“smsC..”;
新建ServerSMSThread().execute(参数);
}
@凌驾
受保护的void onPause(){
//TODO自动生成的方法存根
未注册接收人(smsDeliveryBroadcast);
未注册的接收器(smsSendBroadcast);
super.onPause();
}
@凌驾
受保护的void onResume(){
//TODO自动生成的方法存根
super.onResume();
}
公共无效发送短信(字符串电话号码、字符串消息){
Log.i(“否”,电话号码);
PendingEvent sentPI=PendingEvent.getBroadcast(此,0,新意图(
已发送),0);
PendingEvent deliveredPI=PendingEvent.getBroadcast(此,0,
新意向(已交付),0);
寄存器ms();
SmsManager sms=SmsManager.getDefault();
sendTextMessage(电话号码、空、消息、sentPI、deliveredPI);
}
私有无效注册表{
smsSendBroadcast=新的广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
//TODO自动生成的方法存根
开关(getResultCode()){
案例活动。结果\u正常:
Toast.makeText(上下文,“SMS已发送”,Toast.LENGTH\u SHORT)
.show();
Log.i(“监视器”、“SMS Gonderildi”);
打破
案例smsmsmanager.RESULT\u错误\u一般\u失败:
Toast.makeText(上下文,
“短信发送失败:一般失败”,
吐司。长度(短)。show();
打破
案例smsmsmanager.RESULT\u错误\u否\u服务:
Toast.makeText(上下文,“SMS发送失败:无服务”,
吐司。长度(短)。show();
Log.i(“监视器”,“短信发送失败:无服务”);
打破
案例smsmsmanager.RESULT_ERROR_NULL_PDU:
Toast.makeText(上下文,“SMS发送失败:空PDU”,
吐司。长度(短)。show();
Log.i(“监视器”,“短信发送失败:空PDU”);
打破
案例smsmsmanager.RESULT\u ERROR\u RADIO\u OFF:
Toast.makeText(上下文,“SMS发送失败:无线电关闭”,
吐司。长度(短)。show();
Log.i(“监视器”,“短信发送失败:无线电关闭”);
打破
}
}
};
smsDeliveryBroadcast=新广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
Log.i(“BROADCASTRECEIVER”,String.valueOf(getResultCode());
//TODO自动生成的方法存根
开关(getResultCode()){
案例活动。结果\u正常:
Toast.makeText(上下文,“短信传递”,Toast.LENGTH\u SHORT)
.show();
Log.i(“监视器”、“SMS Teslim edildi”);
打破
案例活动.RESULT\u已取消:
Toast.makeText(上下文,“短信未送达”,
吐司。长度(短)。show();
Log.i(“监视器”,“未发送短信”);
打破
违约:
Toast.makeText(上下文,“SMS结果bilinmiyor”,
吐司。长度(短)。show();
日志i(“监视器”、“SMS结果bilinmiyor”);
打破
}
}
};
//---短信发送后---
registerReceiver(smsSendBroadcast,新意向过滤器(已发送));
//---短信发送后---
注册接收人(smsDeliveryBroadcast,新意向过滤器(已交付));
}
公共类ServerSMSThread扩展异步任务{
@凌驾
受保护的void onPostExecute(void结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
if(pd.isShowing())
pd.解散();
startActivity(新意图(C.this,B.class.)。添加标志(意图、标志、活动、重新排序、到前端);
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
pd=ProgressDialog.show(C.这是“发送短信…”,“请稍候”);
Log.i(“监视器”、“SMS Gonderiliyor”);
}
@凌驾
受保护的Void doInBackground(字符串…参数){
//TODO自动生成的方法存根
对于(int i=1;i
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tekeli.order"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="11" />
    <uses-permission android:name="android.permission.SEND_SMS" ></uses-permission>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".ActivityOrderActivity"
            android:label="@string/app_name">
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".B" ></activity>
         <activity android:name=".C"></activity>
    </application>

</manifest>