在应用程序的主要活动中我startService:
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);
我也无法在不同的过程中调试服务。
EDITED://///////////////////////////////////
我有一个问题,我从简单的课开始活动:
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);
但仅当mainActivity处于活动状态时才调用onNewIntent。我也尝试过FLAG_ACTIVITY_SINGLE_TOP键。
EDITED://////////////////////
双重启动同一活动后问题解决了:
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),那就不行了。非常奇怪。
屏幕关闭时也不要打电话。
答案 0 :(得分:0)
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中覆盖onNewIntent
@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);
}
}