微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得usdd测量字符串值?

如何解决如何获得usdd测量字符串值?

我找到了这个API here来完成我的工作,但我并没有知道如何将其应用到我的应用程序中

我知道有描述,但是我如何才能将api应用于onclick方法以运行ussd并获取测量值到字符串值,然后根据测量值忽略我喜欢的任何东西。谁能帮我逐步申请? 我已经尝试过这样 在我声明的appcompatActivity中

 private HashMap map=new HashMap<>();
    private USSDApi ussdApi;

在oncreate方法

USSDController.verifyAccesibilityAccess(this);
     USSDController.verifyOverLay(this);

    map.put("KEY_LOGIN",new HashSet<>(Arrays.asList("koyu","waiting","loading","tinish yitebku")));
    map.put("KEY_ERROR",new HashSet<>(Arrays.asList("chigir tefetrwal","problem","error","chigir")));
    ussdApi = USSDController.getInstance(this);

然后使用onclick方法

atidabira.setonClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.M)
            @Override
            public void onClick(View v) {


            String suffix = Uri.encode("#");
            String ussd = "*" + "804"+suffix;



            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:" + ussd));
            if (checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                String[] PERMISSIONS={Manifest.permission.CALL_PHONE};
                ActivityCompat.requestPermissions((Activity) mContext,PERMISSIONS,REQUEST);
            }
            else {
                startActivity(intent);
            }


            ussdApi.callUSSDInvoke(ussd,map,new USSDController.CallbackInvoke() {
                @Override
                public void responseInvoke(String message) {


                    Toast.makeText(mContext,""+message,Toast.LENGTH_SHORT).show();


                }

                @Override
                public void over(String message) {

                }
            });



        }
    });

解决方法

您需要做的就是创建一个ussd Response Callback,它将监听响应并在Telephony.sendUssdRequest上使用它,该方法需要三个参数(例如* 101#,回调和Handler)的方法,如下所示:

    if (ActivityCompat.checkSelfPermission(activity,Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
        return;
    }else{
        TelephonyManager telephonyManager=  (TelephonyManager)activity.getSystemService(Context.TELEPHONY_SERVICE);
        Handler handler = new Handler();

        TelephonyManager telephonyManagerBySlot=telephonyManager.createForSubscriptionId(slot);

        TelephonyManager.UssdResponseCallback callback = new TelephonyManager.UssdResponseCallback() {
            @Override
            public void onReceiveUssdResponse(TelephonyManager telephonyManager,String request,CharSequence response) {
                super.onReceiveUssdResponse(telephonyManager,request,response);
                Log.e("ussd",response.toString());
                Toast.makeText(activity,response.toString(),Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onReceiveUssdResponseFailed(TelephonyManager telephonyManager,int failureCode) {
                super.onReceiveUssdResponseFailed(telephonyManager,failureCode);
                Toast.makeText(activity,"Rung USSD code",Toast.LENGTH_SHORT).show();

                Log.e("ussd","failed with code " + Integer.toString(failureCode));
            }
        };

        try {
            Log.e("ussd","trying to send ussd request");
            telephonyManagerBySlot.sendUssdRequest(ussdCode,callback,handler);
        }catch (Exception e){

            String msg= e.getMessage();
            Log.e("DEBUG",e.toString());
            e.printStackTrace();
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?