在应用程序的主要活动中,我启动服务:
startService(new Intent(MainActivity.this, BluetoothService.class).putExtra("address", address));
与PC建立蓝牙连接。然后我按下 android 手机上的主页按钮,主要活动进入后台。我将呼叫命令从 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" >
我尝试使用 android:process=":newThread" 标签,但服务崩溃了
ConnectionManager.getInstance().GetMainActivity().startActivity(intent);
当它在不同的进程中时,我也无法调试服务。
已编辑:///////////////////////////////
我有一个问题,我从简单的类开始活动:
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);
}
}
并且无法初始化 Intent。似乎 eclipse 无法识别 MainActivity,但它在同一个包中。
EDITED:////////////// 我以这种方式开始活动:
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);
但 onNewIntent 仅在 mainActivity 处于活动状态时调用。我也试过 FLAG_ACTIVITY_SINGLE_TOP 键。
已编辑:///////////////////
双重启动相同活动后问题解决:
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("phone_number", number) ,它就不起作用。它非常好奇。
屏幕关闭时也叫不吃午饭。