Android 不能;startActivity“;在主活动停止时从服务退出

Android 不能;startActivity“;在主活动停止时从服务退出,android,service,android-activity,process,Android,Service,Android Activity,Process,在应用程序I startService的主要活动中: startService(new Intent(MainActivity.this, BluetoothService.class).putExtra("address", address)); 它与PC建立蓝牙连接。然后我在android手机上按下home(主页)按钮,主要活动转到后台。我将呼叫命令从PC发送到手机,调试显示服务正常接收该命令并尝试呼叫: String[] splits = parameters.split("\\

在应用程序I startService的主要活动中:

    startService(new Intent(MainActivity.this, BluetoothService.class).putExtra("address", address));
它与PC建立蓝牙连接。然后我在android手机上按下home(主页)按钮,主要活动转到后台。我将呼叫命令从PC发送到手机,调试显示服务正常接收该命令并尝试呼叫:

String[] splits = parameters.split("\\|");
String number = splits[0];

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + number));
ConnectionManager.getInstance().GetMainActivity().startActivity(intent);
但只有当我在屏幕上显示主要活动时,才能调用活动

在舱单中:

<service android:name="BluetoothService" >
当服务处于不同的进程中时,我也无法调试它

编辑://///////////////////////////////////

我有一个问题,我从简单的课堂开始活动:

class Command_call_impl implements CommandImpl
{
    public void Execute(String parameters)
    {
        String[] splits = parameters.split("\\|");
        String number = splits[0];

        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra("phone_number", number);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ConnectionManager.getInstance().GetMainActivity().startActivity(intent);
    }
}
无法初始化意图。eclipse似乎无法识别MainActivity,但它在同一个包中

编辑://///////////// 我以以下方式开始活动:

Intent intent = new Intent();
    intent.setClass(ConnectionManager.getInstance().GetMainActivity().getBaseContext(), MainActivity.class);
    intent.putExtra("phone_number", number);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    ConnectionManager.getInstance().GetMainActivity().startActivity(intent);
但仅当mainActivity处于活动状态时才调用OnneWinEvent。我也试过用单键标记活动

编辑://////////////////////

重复启动同一活动后解决的问题:

Intent intent = new Intent(ConnectionManager.getInstance().GetMainActivity().getBaseContext(), MainActivity.class);
    intent.putExtra("phone_number", number);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    ConnectionManager.getInstance().GetMainActivity().getApplication().startActivity(intent);

    Intent intent2 = new Intent(ConnectionManager.getInstance().GetMainActivity().getBaseContext(), MainActivity.class);
    intent2.putExtra("phone_number", number);
    intent2.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    ConnectionManager.getInstance().GetMainActivity().getApplication().startActivity(intent);
我认为第一个意图显示活动,第二个开始呼叫活动。有趣的是,若我将intent.putExtra(“电话号码”,number)从第一个intent中删除,它就不起作用了。这很奇怪

当屏幕关闭时,也可以呼叫not午餐

class Command_call_impl implements CommandImpl
{
private Context mContext;

    public Command_call_impl(Context context)
    {
        mContext = context;
    }   

    public void Execute(String parameters)
    {
        String[] splits = parameters.split("\\|");
        String number = splits[0];

        Intent intent = new Intent(mContext, MainActivity.class);
        intent.putExtra("phone_number", number);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(intent);   
    }
} 
在您的MainActivity Wintent中

@Override
protected void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);

    String phoneNumber = intent.getStringExtra("phone_number");
    if (phoneNumber != null)
    {
         Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));
        //callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(callIntent);
    }
}

您是否尝试拨打电话或让MainActivity拨打电话?是的,当屏幕上显示main activity时,电话呼叫起作用。为什么不向您的服务发送一个带有要呼叫号码的命令,然后让服务实现上面的代码is class command\u call\u impl impl impl实现CommandImpl服务类中的一个内部类?否,类命令\u调用\u impl是一个简单的类。请查看我的编辑。这没有帮助。只有在双重启动同一活动后,问题才得以解决。请参阅我的编辑。
@Override
protected void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);

    String phoneNumber = intent.getStringExtra("phone_number");
    if (phoneNumber != null)
    {
         Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));
        //callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(callIntent);
    }
}