アプリケーションの主なアクティビティでは、サービスを開始します。
startService(new Intent(MainActivity.this, BluetoothService.class).putExtra("address", address));
PC との Bluetooth 接続を確立します。次に、Androidフォンのホームボタンを押すと、主なアクティビティがバックグラウンドになります。PC から電話に call コマンドを送信し、サービスが通常そのコマンドを受信して呼び出しを試みていることをデバッグ表示します。
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);
ただし、mainActivity がアクティブな場合にのみ onNewIntent が呼び出されます。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);
最初の意図はアクティビティを示し、2 番目の開始コール アクティビティを示していると思います。興味深いことに、最初のインテントからintent.putExtra("phone_number", number)を削除すると、機能しません。とても不思議です。
また、画面がオフのときは電話をかけません。