Android 6.0后ip拨号器权限问题

本文介绍了在Android 6.0及以上版本中,由于权限管理的变化,如何在拨号器应用中处理权限请求。开发者需要在清单文件声明权限,并在代码中动态请求`PROCESS_OUTGOING_CALLS`权限。提供了具体代码示例,包括权限检查、请求权限的实现,以及在拨号时保存和使用IP电话号码的方法。同时,给出了相关权限处理的参考资料链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.关于6.0以后的权限问题:

   因为android 6.0以后添加了权限问题,需要开发人员自己在代码中配置请求权限,所以这里举一个简单例子处理请求权限的问题

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
二.开发IP拨号器

 开发拨号器需要请求如上权限,首先需要在清单文件中配置该权限,然后自己在代码中注册该权限。

三.具体代码如下

   1.注册权限代码:

    // 允许程序监视、修改有关拨出电话PROCESS_OUTGOING_CALLS
    private static final int PROCESS_OUTGOING_CALLS = 1;
    private static String[] OUTGOING_CALLS = {
            Manifest.permission.PROCESS_OUTGOING_CALLS,
    };
    /**
     * Checks if the app has permission to PROCESS_OUTGOING_CALLS
     *
     * If the app does not has permission then the user will be prompted to grant permissions
     *
     * @param activity
     */
    public static void verifyStoragePermissions(Activity activity) {
        // Check if we have PROCESS_OUTGOING_CALLS permission检查应用是否拥有监听修改播出电话的权限
        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.PROCESS_OUTGOING_CALLS);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user如果我们没有权限就弹出提示请求用户赋予权限
            ActivityCompat.requestPermissions(activity, OUTGOING_CALLS, PROCESS_OUTGOING_CALLS);
        }
    }

 2.保存ip电话号码的代码

//我是在MainActivity的onCreate完成的,

 protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button bt= (Button) findViewById(R.id.button);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //点击后弹出权限请求提示,也可以在onCreate中请求,打开activity就发出请求
                verifyStoragePermissions(MainActivity.this);
                EditText ed= (EditText) findViewById(R.id.editText);
                String  ipn=ed.getText().toString();
                SharedPreferences sp=getSharedPreferences("ipnumber",MODE_PRIVATE);
                sp.edit().putString("ipnumber",ipn).commit();
            }
        });
    }

3.自定义广播接受者重写onReceive()方法

public void onReceive(Context context, Intent intent) {
        String sip=getResultData();
        SharedPreferences sharedPreferences=context.getSharedPreferences("ipnumber",Context.MODE_PRIVATE);
        String ipnumber=sharedPreferences.getString("ipnumber","");
        setResultData(ipnumber+sip);
        abortBroadcast();
    }

四.关于权限处理的一些相关链接

//Android M (API23) 中对权限的授权处理

http://www.tuicool.com/articles/V3eErq

//请求读写权限

http://blog.youkuaiyun.com/ynwjcf/article/details/52153372 

//权限介绍

http://blog.youkuaiyun.com/zhangmiaoping23/article/details/50053715 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值