无法从一个模拟器向另一个模拟器发送消息

Posted

技术标签:

【中文标题】无法从一个模拟器向另一个模拟器发送消息【英文标题】:Unable to send a message from one emulator to another 【发布时间】:2015-11-28 20:25:35 【问题描述】:

即使我在目标地址中输入另一个模拟器的端口 ID,我也无法将文本从一个模拟器发送到另一个模拟器?

public void a(View v)
   

       Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); 
       int PICK_CONTACT=0;
       startActivityForResult(intent, PICK_CONTACT);

   


   private void sendSMSMessage() 

   

       Log.i("Sms Sent", "");
          String phoneNo = edt1.getText().toString();
          String message = edt2.getText().toString();

          Intent smsIntent = new Intent(Intent.ACTION_VIEW);
          smsIntent.setData(Uri.parse("smsto:"));
          smsIntent.setType("vnd.android-dir/mms-sms");
          smsIntent.putExtra("address"  , new String("0123456789"));
          smsIntent.putExtra("sms_body"  , "Test");



          try
          

             SmsManager sm = SmsManager.getDefault();
             sm.sendTextMessage(phoneNo, null, message, null, null);
             Toast.makeText(getApplicationContext(), "SMS sent.", Toast.LENGTH_LONG).show();

           

          catch (Exception e) 
          

             Toast.makeText(getApplicationContext(), "SMS faild, please try again.", Toast.LENGTH_LONG).show();
             e.printStackTrace();

          

【问题讨论】:

【参考方案1】:

我最终从第二个模拟器启动了应用程序。也就是说,从5556它成功地向我启动的第一个模拟器发送了一条短信,到5554。我不知道为什么它不会从我启动的第一个模拟器发送。但是,它仍然有效。

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

【讨论】:

【参考方案2】:

按如下方式进行:

第 1 步:启动 AVD

第 2 步:再次启动 AVD(例如,如果您第一次运行 AVD,它将分配像 5554 这样的端口,第二次可能是 5556)

第 3 步:如果要从 5554 向 5556 发送消息,则需要转到 5554 模拟器,消息 -> 将手机号码写成 5556 并点击发送按钮。

第 4 步:将以下权限添加到您的 AndroidManifest.xml

第 5 步:写下以下代码并在模拟器 5554 中运行您的项目

youractivity extends Activity 

    PendingIntent pi;
    SmsManager sms;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //======================================
        //  Get all pending Activity
        //======================================
        String msg = "android.telephony.SmsManager.STATUS_ON_ICC_SENT";
        PendingIntent piSent = PendingIntent.getBroadcast(MainActivity.this, 0,new Intent(msg), 0);

        //======================================
        //  Send SMS Using Default SMS Manager
        //======================================
                sms = SmsManager.getDefault();
                sms.sendTextMessage("5556", null, "This is sample test message", piSent, null);
    

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) 
            return true;
        
        return super.onOptionsItemSelected(item);
    

activity_main xml 布局:

    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="45dp"
        android:gravity="center_horizontal"
        android:text="Send Message to emulators programmatically"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

谢谢

【讨论】:

以上是关于无法从一个模拟器向另一个模拟器发送消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 433 mhz 发射器/接收器从一个 arduino 向另一个发送消息

在 Azure Service Fabric (API) 中从一个微服务向另一个微服务发送消息

我无法在 Spring Boot 中使用 google pubsub 模拟器发送消息

使用 Parse 从一个用户向另一个用户发送推送通知

Discord.js 向另一个频道发送消息

是否可以使用 Smack API 在 Openfire Server 上监听/监视用户向另一个用户发送的消息?