我试图通过使用默认的SMS应用程序实现发送SMS的代码,但我得到了空上下文,我不明白为什么。
代码位于MainActivity.java中
public void sendSMS(String msg)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat
{
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); //<---Line 107 --- Need to change the build to API 19
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, msg);
if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose
// any app that support this intent.
{
sendIntent.setPackage(defaultSmsPackageName);
}
startActivity(sendIntent);
}
else // For early versions, do what worked for you before.
{
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", SMSParameters.getTelefono(this));
smsIntent.putExtra("sms_body",msg);
startActivity(smsIntent);
}
}
HomeFragment类的一部分
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_home, container, false);
final Button buttonAusente = view.findViewById(R.id.button_ausente);
buttonAusente.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
String message = null;
//enviarComando AUSENTE
//Line 70 below
message = MessageGenerator.getMessageAusente(_password, _id, SMSParameters.getSecuencia(getContext())); //<-- Line 70
new MainActivity().sendSMS(message);
}
});
final Button buttonDesactivar = view.findViewById(R.id.button_desactivar);
buttonDesactivar.setOnClickListener(new View.OnClickListener() {
public void onClick(View view)
{
String message = null;
//enviarComando DESACTIVAR
message = MessageGenerator.getMessageDesactivar(_password, _id, SMSParameters.getSecuencia(getContext()));
new MainActivity().sendSMS(message);
}
});
final Button buttonPresente = view.findViewById(R.id.button_presente);
buttonPresente.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
String message = null;
// enviarComando PRESENTE
message = MessageGenerator.getMessagePresente(_password, _id, SMSParameters.getSecuencia(getContext()));
new MainActivity().sendSMS(message);
}
});
final Button buttonPanico = view.findViewById(R.id.button_panico);
buttonPanico.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
String message = null;
// enviarComando(Comandos.PANICO);
message = MessageGenerator.getMessagePanico(_password, _id, SMSParameters.getSecuencia(getContext()));
new MainActivity().sendSMS(message);
}
});
setStatusIcon(getContext(), Comandos.AUSENTE, view);
setStatusIcon(getContext(), Comandos.DESACTIVAR, view);
setStatusIcon(getContext(), Comandos.PRESENTE, view);
setStatusIcon(getContext(), Comandos.PANICO, view);
saveViewStatus(view);
return view;
}
新的MainActivity().sendsms(message);
-这不起作用。首先,您不是通过活动的构造函数来实例化活动,而是使用意图
来实例化活动;其次,因为您不想创建新活动,而是要访问片段当前附加到的活动。
为了与您的片段中的宿主活动进行通信,您可以在这里看到我的答案(参见方法2和3)以及这个示例项目。Android文档中也概述了这些技术。
问题内容: 我有一个关于片段中上下文使用情况的问题。我的问题是,我总是收到NullpointerException。这是我的工作: 创建一个扩展SherlockFragment的类。在该类中,我有另一个Helper类的实例: 这是其他Helper类的摘录: 每次调用时(例如context.getResources()),我都会收到NullPointerException。这是为什么? 问题答案:
似乎自从我们将tomcat升级到Version8+后,我们在启动时就会重新加载上下文。然而,这似乎只发生在我们的开发环境中(带有eclipse和Tomcat8.5的windows OS)。我们的生产环境(带有Tomcat8.5的linux OS)不存在此问题。我把它贴在下面,但我没有看到任何迹象表明为什么会发生这样的tomcat日志。我知道这是正常的行为,在web应用程序目录中的一些东西被改变,但
问题内容: 是否有评估为假的原因?还是只是成功时返回0的C约定起作用? 问题答案: 大多数更改容器就位返回值的Python方法- 命令-查询分离原理的应用。(Python总是很务实,所以一些变数在获取它时确实会返回一个可用的值,否则会很昂贵或一团糟-该方法是这种实用主义的一个很好的例子-但是这些绝对是例外,不是规则,并且没有理由append例外)。
同时,Puppy资源将更多地位于webMvc级别,并加载到DispatcherServlet的上下文中。 从我刚才读到的内容(现在我很有希望理解)来看,根上下文实际上是DispatcherServlet创建的上下文的‘父’上下文。这意味着根上下文中的bean实际上可以自动连接/注入到DispatcherServlet创建的上下文中的任何bean中。我只是了解了“嵌套”上下文的概念。这准确吗? 如果
问题内容: 在Spring MVC中,有两个上下文。一种是由引导的应用程序上下文或全局上下文。它采用参数中提到的所有配置文件。 现在,如果您还使用Spring MVC,则需要Dispatcher Servlet,它会启动另一个容器,该容器也称为Web应用程序容器。该容器将全局容器作为父容器。 将struts1与spring集成时,只有一个上下文。Spring MVC为什么需要两个?使用spring
我的源XML文档 根据元素内容的模式,在元素中的元素中,我希望添加一个新的元素。元素是前导信息。因此,首先,我必须创建一个新的元素及其和内容。之后,我必须创建一个相应的元素,该元素具有相同的内容和特定的内容。 这是我的目标XML文档的示例(添加param03): 我的XSLT文档 结果XML文档错误 我遇到的问题: > 使用不会按预期更改节点上下文。新的元素将在最后一个位置添加到元素中,而不是按照
问题内容: 我在Windows 7计算机上安装了WampServer 2。我正在使用Apache 2.2.11和PHP 5.2.11。当我尝试从表单上传任何文件时,似乎都在上传,但是在PHP中,数组为空。文件夹中没有文件。我已配置为允许文件上传等。该文件夹具有当前用户的读/写特权。我很沮丧 HTML: PHP: 问题答案: 谢谢大家的全面答复。这些都非常有帮助。答案很奇怪。事实证明,PHP 5.2
问题内容: 我对Java中的匿名类有什么误解。考虑以下简单示例: 演示 为什么要编译代码?在JLS,CHAPT 15 说: 匿名类始终是内部类(第8.1.3节);它永远不会是静态的 但是JLS,第8章 内部类是未显式或隐式声明为static的嵌套类。 因此,匿名类是内部类。但是我们在静态上下文中使用它们。为什么这里正确? 问题答案: 可以在静态上下文中创建类而无需将其声明为静态,这就是在这里发生的