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

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

Mar 15, 2017 pm 04:04 PM
android アプレット

この記事では、主に 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:23 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Sep 11, 2024 am 06:37 AM

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します Sep 07, 2024 am 06:35 AM

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Sep 12, 2024 pm 09:21 PM

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:22 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 Sep 10, 2024 am 06:45 AM

OnePlus の姉妹ブランドである iQOO の製品サイクルは 2023 年から 4 年で、ほぼ終わりに近づいている可能性があります。それにもかかわらず、ブランドはまだZ9シリーズの開発を終えていないと宣言しました。その最終、そしておそらく最高エンドとなる Turbo+ バリアントが、予測どおりに発表されました。 T

See all articles