在我的代码中,我有一个java文件:
package com.myapp.basic;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SMSReceiverActivity extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Parse the SMS.
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
// Retrieve the SMS.
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++)
{
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
// In case of a particular App / Service.
//if(msgs[i].getOriginatingAddress().equals("+91XXX"))
//{
//str += "SMS from " + msgs[i].getOriginatingAddress();
//str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";
//}
}
if (str != "") { // remove the last \n
str = str.substring(0, str.length()-1);
}
// Need to find a better way to check if the activity is running
try {
((Police_ViewActivity) context.getApplicationContext()).handle_incoming_help_message(str); // crash here
} catch(Exception e) {
System.out.println(e.getMessage());
}
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
}
}
}
当try块中的代码发生时,它会崩溃并且我收到此错误: 08-27 22:45:11.345:I / System.out(27606):android.app.Application无法强制转换为com.escortme.basic.Police_ViewActivity
我该如何解决这个问题?
答案 0 :(得分:0)
最好使用Intent
来调用活动。你可以这样说:
Intent intent = new Intent(Police_ViewActivity.class);
intent.putExtra("help_message", str);
context.startActivity(intent);
在警察视图活动的onResume()中,抓住额外内容并处理它:
onResume(){
String msg = getIntent().getStringExtra("help_message");
if (msg==null) return;
handleMessage(msg);
}
您不必担心正在创建活动的多个实例,在清单中,您可以使用Launchmode指定活动的启动方式。 singleInstance可能是您的选择。
答案 1 :(得分:0)
如果您只需要在另一个类中调用handle_incoming_help_message方法,只需将handle_incoming_help_message方法设为静态。
update:
所以你应该启动Police_ViewActivity并告诉它你需要调用handle_incoming_help_message
Intent intent = new Intent(context, Police_ViewActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.putExtra("handle_incoming_help_message", str);
context.startActivity(intent);
并在Police_ViewActivity的onCreate(或onResume或Onstart)中
String str = getIntent().getStringExtra("handle_incoming_help_message");
if(str != null)
handle_incoming_help_message(str);
Update 2
保持警察活动的实例数最多为1? - &GT; Android LaunchMode