Android 不能;startActivity“;在主活动停止时从服务退出
在应用程序I startService的主要活动中: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("\\
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);
}
}