2017-11-20 3 views
-2

私はussdのコードをアンドロイドバージョン23以上でダイヤルするとコードが正常に動作し、ussdが問題になりますまた、正しく動作します。 ussdのダイアログボックスをキャンセルすると、ussdウィンドウがキャンセルされず、デバイスのフォアグラウンドで連続して動作します。デバイスはフリーズのように見え、このussdウィンドウをキャンセルするためにデバイスを再起動する必要があります。しかし、アンドロイド版<(ロリポップからロリポップまで)からは、すべてが完全にうまく機能しています。この問題を解決するには?アンドロイドバージョン23以降のUSSD(* 222#のようなコード)を実用的にダイヤルするときに問題が発生する

if (Build.VERSION.SDK_INT >= 23) { 
        if (checkSelfPermission(android.Manifest.permission.CALL_PHONE) 
          == PackageManager.PERMISSION_GRANTED) { 
         String phnum = "*247"+Uri.encode("#"); 
         Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + phnum)); 
         // callIntent.setData(Uri.parse("tel:" + phnum)); 
         startActivity(callIntent); 
         sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); 
        } else { 
         Log.v("TAG","Permission is revoked"); 
         ActivityCompat.requestPermissions(MobileTransactionHelp.this, new String[]{Manifest.permission.CALL_PHONE}, 1); 
        } 
       } else { //permission is automatically granted on sdk<23 upon installation 
        String phnum = "*247"+Uri.encode("#"); 
        Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + phnum)); 
        // callIntent.setData(Uri.parse("tel:" + phnum)); 
        startActivity(callIntent); 
        sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); 
       } 

image of error : contentiously running ussd window after canceling the ussd window

答えて

0

この

if (Pattern.matches("(\\*[0-9]+[\\*[0-9]+]*#)", edtDialPad 
        .getText().toString())) { 
       String token = edtDialPad.getText().toString(); 



       String ussdCode = "" + token.substring(0, token.length() - 1) + Uri.encode("#"); 
       startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" 
         + ussdCode))); 

      } 
+0

あなたanswareをありがとうございましたが、その私のために働いていません。試してみてください –

関連する問題