- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个应用程序,它通过 EditText 获取用户输入的字符串,将它们放入共享首选项中,然后在收到短信时自动发送短信,使用共享首选项中的字符串来指定电话号码和短信将自动发送。
只要我对电话号码和要发送的短信进行硬编码,该应用程序就可以完美运行。一旦我尝试将共享首选项中的字符串放入 SendSMS 方法中,应用程序就会崩溃,并且出现调试错误“hasUserDataHeader:false”
下面的代码是我尝试从 Name EditText 中获取字符串并将其用作要通过参数 TextMessage 发送的消息的版本(请参阅广播接收器中的这行代码)。如果我将其替换为“TextMessage”那么它会很好,但显然这不会使文本发送动态
代码如下:
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Button;
import android.app.PendingIntent;
import android.content.Intent;
import android.telephony.SmsManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.widget.TextView;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.SharedPreferences;
public class MainActivity extends Activity {
int notificationID = 1;
String[] excuses;
String excuseSelected;
IntentFilter intentFilter;
private SharedPreferences prefs;
private String prefName = "MyPref";
private static final String NUMBER_KEY = "number";
private static final String NAME_KEY = "name";
private static final String EXCUSE_KEY = "excuse";
private BroadcastReceiver intentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//---gather up all the necessary user input---
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
String textMessage = (String) prefs.getString(NAME_KEY, "");
sendSMS("0403579838", textMessage);
// }
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//---intent to filter for SMS messages received---
intentFilter = new IntentFilter();
intentFilter.addAction("SMS_RECEIVED_ACTION");
final Button btn1 = (Button)findViewById(R.id.buttonToggle);
excuses = getResources().getStringArray(R.array.excuses_array);
Spinner s1 = (Spinner) findViewById(R.id.spinnerExcuse);
final EditText EditTextNumber = (EditText) findViewById(R.id.editTextNumber);
final EditText EditTextName = (EditText) findViewById(R.id.editTextName);
//---Sorting the spinner view out for excuses selection---
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, excuses);
s1.setAdapter(adapter);
s1.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3)
{
int index = arg0.getSelectedItemPosition();
excuseSelected = excuses[index];
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
//---Setting the button to toggle between on and off---
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (btn1.getText().equals("Turn on"))
{
btn1.setText("Turn off");
//---register the receiver---
registerReceiver(intentReceiver, intentFilter);
//---get the SharedPreferences object---
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//---set the user inputs to prefo's---
editor.putString(NUMBER_KEY, EditTextNumber.getText().toString());
editor.putString(NAME_KEY, EditTextName.getText().toString());
editor.putString(EXCUSE_KEY, excuseSelected);
}
else
{
btn1.setText("Turn on");
//---unregister the receiver---
unregisterReceiver(intentReceiver);
}
}
});
}
//---sends an SMS message to another device---
public void sendSMS(String phoneNumber, String message)
{
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
displayNotification();
}
protected void displayNotification()
{
Intent i = new Intent(this, NotificationView.class);
i.putExtra("notificationID", notificationID);
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, i, 0);
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.ic_launcher,
"SMS has been sent by GirlfriendMinder",
System.currentTimeMillis());
CharSequence from = "GirlfriendMinder";
CharSequence message = "SMS has been sent by GirlfriendMinder";
notif.setLatestEventInfo(this, from, message, pendingIntent);
//---100ms delay, vibrate for 250ms, pause for 100ms, and then vibrate for 500ms---
notif.vibrate = new long[] { 100, 250, 100, 500};
nm.notify(notificationID, notif);
}
@Override
protected void onDestroy() {
//---unregister the receiver---
unregisterReceiver(intentReceiver);
super.onPause();
}
}
最佳答案
在您的代码中:
//---Setting the button to toggle between on and off---
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (btn1.getText().equals("Turn on"))
{
btn1.setText("Turn off");
//---register the receiver---
registerReceiver(intentReceiver, intentFilter);
//---get the SharedPreferences object---
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//---set the user inputs to prefo's---
editor.putString(NUMBER_KEY, EditTextNumber.getText().toString());
editor.putString(NAME_KEY, EditTextName.getText().toString());
editor.putString(EXCUSE_KEY, excuseSelected);
}
else
{
btn1.setText("Turn on");
//---unregister the receiver---
unregisterReceiver(intentReceiver);
}
}
});
}
下面:
editor.putString(EXCUSE_KEY, excuseSelected);
添加
editor.commit();
关于android - 使用 sharedpref 字符串作为 sendTextMessage 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12300155/
这是发送短信的简单代码。 47: SmsManager sms = SmsManager.getDefault(); 48: sms.sendTextMessage("12345678901", nu
我一直在开发一款发送 SMS 消息的应用程序。我遇到的问题是 sendTextMessage 方法发送两条内容相同的消息。我该如何解决? 这个类启动进程 public class C2DMMessag
使用sendTextMessage()时如何将数据传递给广播接收器我使用了 intent.putExtra("key","value"); 并且当 onReceive 函数调用 intent.getS
我们的应用程序将使用“SmsManager sendTextMessage”发送由用户编辑的短信。但是一些防病毒应用程序会确定我们的应用程序是病毒。 除了要求防病毒应用程序将我们的应用程序添加到白名单
我正在使用 VS 2015,并从我的 nexus 4 设备进行调试。为什么此行抛出异常(与任何电话号码相同的结果 - 包括实数)? (未显示详细信息)。 SmsManager.Default.Send
编辑:解决方案是将 Main.this 放在 toast 中的 null 位置。 我正在使用 AsyncTask 发送短信,它们都已成功发送(我已经测试过向自己发送 50 条短信)但是当我按下发送时应
我有以下事件以编程方式发送短信。然而,这似乎不起作用,出现 toast 弹出窗口,logcat 中没有条目,只是没有创建消息。我还为 list 文件添加了适当的权限。 有什么建议吗? private
我尝试使用下一个代码发送短信,但收件人两次收到我的消息。我检查 native 应用程序,如果我使用它发送短信,收件人只会收到一条消息。测试应用程序。代码在这里: package com.test2;
我正在处理一个通过短信向 friend 发送 firebase 动态链接邀请的项目。当我发送较小的链接作为邀请时,我的代码运行良好并发送短信。喜欢 try { SmsManag
如果我用真正的三星i8150手机(Android 2.3.6)发送短信,通常情况下,发送的短信会列在发送框中,我在我的手机上安装了一个带有以下代码的应用程序,但是使用该应用程序发送的短信没有列在发件箱
我正在编写一个应用程序,它会在某些情况下自动向给定的号码发送短信,短信代码正在运行并且短信也已发送..但是发送的短信没有显示在任何other 安装的 SMS 客户端/应用程序... String ph
我正在创建一个应用程序,它通过 EditText 获取用户输入的字符串,将它们放入共享首选项中,然后在收到短信时自动发送短信,使用共享首选项中的字符串来指定电话号码和短信将自动发送。 只要我对电话号码
使用 google cast iOS SDK,GCKMediaControlChannel 的 sendTextMessage 方法很简单,很难误用,所以我猜这可能是 SDK 中的一个错误......
我的应用程序将此堆栈跟踪发送回家,这似乎在幕后发生了一些非常错误的事情。 phone_model=SKY IM-A630K, android_version=2.1-update1 java.lang
我使用了 SmsManager.getDefault().sendTextMessage 但没有发送短信我想以编程方式发送短信请看这段代码 编辑代码: public void sendEmai
我的意思是唯一的区别是端口参数。这与 CDMA 和 GSM 电话之间有什么关系吗?。我有这个查询是因为当我尝试从没有端口的 CDMA 发送短信时它运行良好但使用端口我的应用程序崩溃了。通过查看日志,它
我正在尝试使用“sendTextMessage”或“sendMultipartTextMessage”从我自己的应用程序发送短信。对于高于 API 19 (KitKat) 的手机,此消息将保存到已发送
我们在 Android 上使用 SMSManager 从设备向其他人发送短信。 我们有用户没有收到我们认为已发送的 SMS 的报告,这是基于 sentIntent 是通过 Activity.RESUL
基本上,我有一个可以在收到 SMS 后发送 SMS 的工作应用程序。 一切正常,除非 SMS 文本发送有“特殊字符”,即“é、à、í、ç”等。 我已经尝试了很多东西,包括字符集转换,但我就是无法让它工
我正在尝试通过 QWebSocket 发送和接收消息,但不确定这一切在“用户同时按下所有按钮”场景中的安全性。 想象一下:有几个按钮触发通过 QWebSocket 发送的消息,它们接收并处理响应,然后
我是一名优秀的程序员,十分优秀!