2016-05-24 1 views
0

私が覚えているように、Avastの盗難防止機能では、UIを開くためにダイヤルできる「秘密のピン」を設定できます。私がそれをダイヤルすると、のコールがを通過せず、ダイヤラがすぐに閉じられ、UIが開きます(または、UIがダイヤラーの動作を上回ります)。アクティビティを開始した後、コールを中止してダイヤラを閉じるにはどうすればよいですか?

私は何とかこれを実装しましたが、コールが中断する代わりに、私の活動がその前に行く間に背景(緑のステータスバー、電話の鳴り声など)に行きます。

特定の番号をダイヤルしたときに自分のアクティビティを開いているときにコールを中止するにはどうすればよいですか?

私のアプローチのいくつかのコード:コール用

放送受信機:

public class OutgoingCallReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     // Match if action is outgoing call. 

      Intent i = new Intent(); 
      i.setAction(HelperClass.ACTION_NEW_OUTGOINGCALL); 
      i.setClassName(HelperClass.PACKAGE_NAME, HelperClass.CLASS_NAME_OUTGOING); 
      i.putExtra(HelperClass.CONTACT_KEY, "contact"); 
      i.putExtra(HelperClass.CLIENT_DEVICE_KEY, "DUMMY"); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      startActivity(i); 

      // Apparently, this doesn't work 
      abortBroadcast(); 





// --------------- FAILED ATTEMPT --------------------- 

//  if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { 
//   TelephonyManager tm = (TelephonyManager) context 
//     .getSystemService(Context.TELEPHONY_SERVICE); 
//   try { 
//    // Java reflection to gain access to TelephonyManager's 
//    // ITelephony getter 
//    Log.v(HelperClass.TAG, "Get getTeleService..."); 
//    Class c = Class.forName(tm.getClass().getName()); 
//    Method m = c.getDeclaredMethod("getITelephony"); 
//    m.setAccessible(true); 
//    com.android.internal.telephony.ITelephony telephonyService = 
//      (ITelephony) m.invoke(tm); 
//   } catch (Exception e) { 
//    e.printStackTrace(); 
//    Log.e(TAG, 
//      "FATAL ERROR: could not connect to telephony subsystem"); 
//    Log.e(TAG, "Exception object: " + e); 
//   } 
     } 
    } 
} 

未遂:ITelephonyが見つかりません。失敗した試行はhttps://stackoverflow.com/a/5314372/3979290

から更新されました。実装しようとしましたが、失敗しました。実装する方法がわからない:How to hang up outgoing call in Android?ところも見ています

How to abort an outgoing call after fixed seconds?更新

答えて

0

:放送受信機にsetResultData(null);を追加するには働いていました。 すぐにコールを終了しました。

サンプル:

public class OutgoingCallReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Immediately cancels the call since this sets the number to null. 
     setResultData(null); 

     // Launch activity here/other stuff you want to do 
     // Example: 
     //  Intent i = new Intent(context, MyActivity.class); 
     //  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     //  context.startActivity(i); 
    } 
} 

マニフェスト:

... 
     <receiver 
      android:name=".OutgoingCallReceiver" 
      android:enabled="true" 
      android:exported="true"> 
      <intent-filter android:priority="2147483647"> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
     </receiver> 
... 
関連する問題