ホームページ  >  記事  >  WeChat アプレット  >  テキスト メッセージを送信するための Android の小さなプログラムのサンプル コード

テキスト メッセージを送信するための Android の小さなプログラムのサンプル コード

高洛峰
高洛峰オリジナル
2017-03-15 16:04:518301ブラウズ

この記事では、主に Android の開発におけるテキスト メッセージを送信するための小さなプログラムの例を紹介します。この記事には、ブロードキャスト受信機を監視するテキスト メッセージを送信するサンプルのアップグレード バージョンも含まれています。

テキスト メッセージを送信するための Android の小さなプログラムのサンプル コード

上の画像はコード構造図です。

それでは、具体的なコードを見てみましょう。

Send.java


package cn.com.sms.send; 
 
import java.util.ArrayList; 
import java.util.Iterator; 
 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
 
public class Send extends Activity { 
  private String message; 
  private String number ; 
  private EditText editText; 
  private EditText editText2; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     editText = (EditText) this.findViewById(R.id.number); 
     editText2 = (EditText)this.findViewById(R.id.message); 
     
    Button button = (Button)this.findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
       
      public void onClick(View v) { 
         number = editText.getText().toString(); 
         message = editText2.getText().toString(); 
         // 在LogCat中可以查看到number和message的相关信息 
         Log.i("number", number); 
         Log.i("message", message); 
         /*获取系统默认的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;这和 
         *我们使用的版本有关,在 Android 2.0 以前 应该使用 android.telephony.gsm.SmsManager 
         *Android 2.0 之后的版本应该用 android.telephony.SmsManager。 
         */ 
        SmsManager smsManager = SmsManager.getDefault(); 
        /*PendingIntent.getBroadcast返回一个用于广播的PendingIntent对象,类似于调用Content.sendBroadcast(); 
         */ 
        PendingIntent paIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_SENT"), 0); 
        PendingIntent deliveryIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_DELIVERED"), 0); 
        // smsManager.pideMessage有些时候短信如果超过了字数,我们就需要这个方法来帮我们拆分短信内容。 
        ArrayList<String> smses = smsManager.pideMessage(message); 
        Iterator<String> iterator = smses.iterator(); 
        while(iterator.hasNext()){ 
          String temp = iterator.next(); 
          //发送短信 
          smsManager.sendTextMessage(number, null, temp, paIntent, deliveryIntent); 
        } 
        // 弹出一个浮动框显示提示内容,Toast.LENGTH_LONG代表浮动框显示时间的长短 
        Toast.makeText(Send.this, "短信发送完成", Toast.LENGTH_LONG).show(); 
 
         
      } 
    }); 
     
  } 
}

main.xml


<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  > 
<TextView  
  android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  android:text="欢迎使用短信发送器,请输入电话号码" 
  /> 
 <EditText 
  android:id="@+id/number" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:hint="这里输入电话号码" 
 /> 
 <TextView 
 android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  android:text="欢迎使用短信发送器,请输入短信内容" 
 /> 
 <EditText 
  android:id="@+id/message" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:minLines="3" 
  android:hint="这里输入短信内容" 
 /> 
 <Button 
  android:id="@+id/button" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:text="send" 
 /> 
</LinearLayout>

AndroidManifest :



を呼び出します。ミニ プログラムと同様に、ここでは 2 つの AVD を開く必要があります機能テスト用。

テキスト メッセージを送信するための Android の小さなプログラムのサンプル コード

考え:

テキストメッセージングアプリケーションのメインクラスはSmsManagerです。 Android 2.0 より前は、android.telephony.gsm.SmsManager を使用する必要があります
それ以降は、android.telephony.SmsManager を使用する必要があります。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
   package="cn.com.sms.send" 
   android:versionCode="1" 
   android:versionName="1.0"> 
  <uses-sdk android:minSdkVersion="8" /> 
  <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
 
  <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".Send" 
         android:label="@string/app_name"> 
      <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
    </activity> 
 
  </application> 
</manifest>

は、システムのデフォルト情報マネージャーを取得することを意味します


smsManager.sendTextMessage(destinationAddress 、scAddress、Text、SENTINTENT、DELIVERYINTENT)

- DestInationaddress: 対象の電話番号

-SCADDDRESS: サービスプロバイダーの SMS 番号センター番号 (チャイナモバイルの SMS センター番号など)、テストは記入できません。 :-テキスト: SMS コンテンツ

-センテンテント: 送信-& gt; 中国移動-& gt; 送信または失敗を返すための信号の送信に失敗しました-& gt; : 送信-> 中国モバイル-& GT; 相手側がこの情報を受信したかどうか-> フォローアップ: この意図は SMS が受信されたかどうかのステータス情報です。相手(サプライヤーは正常に送信しましたが、相手は受信しませんでした)。

public
static
PendingIntent getBroadcast (Context context, int requestCode, Intent Intent, int flags)
Context.sendBroadcast()の呼び出しと同様に、ブロードキャストのPendingIntentを返します関数

requestCodeは当面使用されません

インテントが使用されている ブロードキャストのインテント

フラグには、FLAG_ONE_SHOT、FLAG_NO_CREATE、FLAG_CANCEL_

CURRENT
、FLAG_UPDATE_CURRENTが含まれます。これは、新しく作成されたPendingIntentを1回使用するように設定するために使用されます。ない場合は作成せず、現在の、
現在の情報など属性を更新します。

さらに、AndroidManifest.xmlでSMS送信許可を宣言する必要があります。
2 つの AVD がテキスト メッセージの送信をシミュレートすると、プログラムが正常に使用できない場合があります。システムは「DNS サーバーが見つかりません」というメッセージを表示し、DNS サービスが見つかりません。この状況は通常、コンピュータがネットワークに接続されていないことが原因で発生します。 テキストメッセージを送信:

SmsManager smsManager = SmsManager.getDefault();

テキストメッセージ作成インターフェイスを表示:


SmsManager smsMgr = SmsManager.getDefault();  
smsMgr.sendTextMessage(address, null, message, null, null);

メールを送信:



Uri smsToUri = Uri.parse("smsto://10086");  
Intent mIntent = new Intent( android.content.Intent.ACTION_SENDTO, smsToUri );  
startActivity( mIntent );

アップグレードバージョン:

このコードはそれにブロードキャストを追加します受信機のモニタリング。詳細なコードは以下の通りです



Intent i = new Intent(Intent.ACTION_SEND);  
i.putExtra(Intent.EXTRA_EMAIL, address);  
i.putExtra(Intent.EXTRA_SUBJECT, filename);  
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filename)); ;  
i.setType("text/csv");  
startActivity(Intent.createChooser(i, "EMail File"));

main.xmlはAndroidManifest.xmlと前のコードと同じです。

registerReceiver() は、ブロードキャスト受信機を登録するために使用されます。このメソッドは Content で定義されます。
public abstract Intent registerReceiver(BroadcastReceiverReceiver,IntentFilter filter); システムがフィルターを満たすブロードキャストを
クエリ
すると、それを受信機に教えて処理させます。通常、これは onReceive() メソッドで処理されます。

如果不是在代码中主动通过registerReceiver()进行注册,那么就要从AndroidManifest.xml进行配置,代码如下


<receiver android:name="类名"> 
<intent-filter> 
<action android:name="接收者中Intent参数的action属性" /> 
</intent-filter> 
</receiver>

这里需要注意,在配置文件中activity标签和receiver标签是平级的。

在模拟器中发送中文会接收方出现乱码的问题,但是在真机中,就不会出现乱码的情况了。所以开发者只需要正常开发短信功能,不需要编码转换。

以上がテキスト メッセージを送信するための Android の小さなプログラムのサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。