Android 加了电话权限,运行还是闪退报错 作者: Chuwen 时间: 2019-12-07 分类: Android 评论 `AndroidManifest.xml` 文件 ``` ``` # 运行报错 ``` D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: cc.nowtime.seven, PID: 12685 java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxx cmp=com.android.server.telecom/.components.UserCallActivity } from ProcessRecord{e2ed078 12685:cc.nowtime.seven/u0a135} (pid=12685, uid=10135) with revoked permission android.permission.CALL_PHONE at android.os.Parcel.createException(Parcel.java:2071) at android.os.Parcel.readException(Parcel.java:2039) at android.os.Parcel.readException(Parcel.java:1987) at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3851) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1705) at android.app.Activity.startActivityForResult(Activity.java:5192) at android.app.Activity.startActivityForResult(Activity.java:5150) at android.app.Activity.startActivity(Activity.java:5521) at android.app.Activity.startActivity(Activity.java:5489) at cc.nowtime.seven.MainActivity$1.onClick(MainActivity.java:36) at android.view.View.performClick(View.java:7125) at android.view.View.performClickInternal(View.java:7102) at android.view.View.access$3500(View.java:801) at android.view.View$PerformClick.run(View.java:27336) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.wm.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:1043) at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:760) at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:583) at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:1288) at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:514) Process 12685 terminated. ``` > ` java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxx cmp=com.android.server.telecom/.components.UserCallActivity } from ProcessRecord{e2ed078 12685:cc.nowtime.seven/u0a135} (pid=12685, uid=10135) with revoked permission android.permission.CALL_PHONE` # 原因 你的 APP 添加**拨打电话权限**,但是未申请拨打电话权限,所以报错,解决办法: - **APP 主动申请获取** 拨打电话权限 - **手动授予** 拨打电话权限 # 主动授予拨打电话权限 1. 打开 **设置** > **应用和通知** 2. **找到你的应用** ![Snipaste_2019-12-07_20-13-40.png][1] 3. 然后允许对应权限就可以了 ![Snipaste_2019-12-07_20-14-38.png][2] # APP 主动申请获取 拨打电话权限 > 自己百度 ❀???? [1]: https://cdn.nowtime.cc/2019/12/07/512779244.png [2]: https://cdn.nowtime.cc/2019/12/07/1174856951.png
Java 创建子线程,使它立即开始执行 作者: Chuwen 时间: 2019-11-23 分类: Java 评论 ```java public class InvokeRun extends Thread { private int i; @Override public void run() { for(; i<100; i++){ System.out.println("["+Thread.currentThread().getName()+"]\t"+i); } } public static void main(String[] args) throws Exception{ for(int i=0; i<100; i++){ System.out.println(Thread.currentThread().getName()+"\t"+i); if(i == 20){ new InvokeRun().start(); new InvokeRun().start(); //让当前主线程休眠 1ms //它会去执行另一个就绪状态的线程 //这样的话,子线程就可以立即开始执行 Thread.sleep(1); } } } } ```
JavaScript 遍历 document.querySelectorAll() 作者: Chuwen 时间: 2019-11-20 分类: JavaScript 评论 # 如果使用 `forEach` 遍历,则会报错,因为它返回的不是一个数组,而是 `NodeList` ``` document.querySelectorAll('input[type='selece']]').forEach(function() { }); ``` 我们可以通过一下方法来遍历 ``` const selects = document.querySelectorAll("input[name='select']"); [].forEach.call(selects, function(select) { console.log(select); }); ```
Java 中的标号:outer 的作用 作者: Chuwen 时间: 2019-11-08 分类: Java 评论 # 标号 label > *标号* 提供了一种简单的 break 语句所不能实现的控制循环的方法,当在循环语句中遇到break时,不管其它控制变量,都会终止。 > 但是,当你嵌套在几层循环中想退出循环时又会怎样呢? > 正常的 `break` 只退出一重循环,你可以用标号标出你想退出哪一个语句。 ``` char a; outer: //this is the label for the outer loop for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { a=(char)System.in.read(); if(a=='b') break outer; if(a=='c') continue outer; } } ``` > 在这个例子中,循环从键盘接受 100 个输入字符,输入“b”字符时,`break outer` 语句会结束两重循环。 注意:`continue outer` 语句,它告诉计算机*退出现在的循环*并**继续执行 `outer 循环`**。 例子2: > 求 100-200 之间的质数 ``` System.out.println("100~200 的质数"); int n = 0; outer: for (int i=101; i<200; i+=2){ for (int j = 2; j
[官方]国内 Android Studio 下载地址 作者: Chuwen 时间: 2019-11-08 分类: 唠嗑闲聊 评论 链接:https://developer.android.google.cn/studio