0

在我的代码中,我有一个 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

我怎样才能解决这个问题 ?

4

2 回答 2

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

保持policeviewactivity的实例数最多为1?->安卓启动模式

于 2012-08-28T03:07:40.230 回答
0

调用 Activity 最好使用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);
}

您不必担心正在创建的 Activity 的多个实例,在清单中您可以使用Launchmode指定 Activity 的启动方式。singleInstance 可能是您的选择。

于 2012-08-28T03:01:04.537 回答