New Ribbon
用Canva設計超快超質感(第2版):商業設計、簡報、影片、網頁、電子書與AI應用最速技 AI繪圖工具 × AI視覺設計平台,從圖像生成到專業設計! 最強職場助攻!ChatGPT + AI 高效工作術 短影音制霸:打造TikTok、YT Shorts、IG Reels成功方程式與AI高效創作力 Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全

 

  Android初學特訓班

讀者

讀者
更新時間:2017/9/8 下午 03:51:05

 

書上第9章ExIntent01程式中的判斷是否已取得授權ActivityCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE);第12章ExLogin程式中的判斷是否已取得授權為checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);

想請問
1.checkSelfPermission前面的"ActivityCompat."是否可加可不加?
2.checkSelfPermission裡的第一個參數(this)是否可加可不加?

謝謝老師解惑!

讀者

讀者
更新時間:2017/9/8 下午 04:14:33

 

//requestPermissions 觸發的事件
@Override    
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 1) {...
        } else  {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
-----------------------------
另外也想再問一下super.onRequestPermissionsResult(requestCode, permissions,grantResults);這行的作用是如何?
(猜測如果requestCode不是1的話會無窮執行onRequestPermissionsResult這個函式?)

文淵閣工作室

文淵閣工作室
更新時間:2017/9/11 上午 08:45:29

 

您好:
第9章 ActivityCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE);
第12章 checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);

經測試,這兩種語法都是正確的,使用 ActivityCompat.checkSelfPermission 是標準的語法。

ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE}, 1);  // 自己定義授權碼為 1

@Override    
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 1) {...
        } else  {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

requestCode 是自己定義的授權碼,在上面的範例中,我們都定義為 1,因此以 if (requestCode == 1) 確認是自己的授權才處理,
requestCode 不是 1 時就不會理會授權問題,但不會無窮執行 onRequestPermissionsResult 方法。

super.onRequestPermissionsResult(requestCode, permissions,grantResults); 參數較複雜,您可以參考這篇文章。

http://givemepass.blogspot.tw/2016/09/runtime-permission.html

讀者

讀者
更新時間:2017/9/11 下午 02:57:18

 

謝謝老師回覆,不過有幾個問題想再確認一下。
1.checkSelfPermission裡的第一個參數可以不填的原因是不是預設值就是為this呢?
2.public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 1) {...
        } else  {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
----------------------------------------
requestCode若不是1時會執行"super.onRequestPermissionsResult(requestCode, permissions, grantResults);" 想詢問這一行的作用是甚麼,把這行拿掉的話是可行的嗎?

文淵閣工作室

文淵閣工作室
更新時間:2017/9/12 上午 05:31:10

 

1. ActivityCompat. 及 this 可同時移除,程式會正常執行。
2. super.onRequestPermissionsResult 是若未獲得授權就彈出內建 (super) 的請求授權對話方塊。

文淵閣工作室

文淵閣工作室
更新時間:2017/9/12 上午 11:09:41

 

this 不是預設值,不能省略。
第 12章 ActivityCompat. 及 this 都未加,使用的是 ContextWrapper 套件,此套件為內建,不需 import。
第 9章 ActivityCompat. 及 this 都加,使用的是 ActivityCompat 套件。
兩者要不就都加,要不就都不加,只加入其中之一會產生錯誤。

讀者

讀者
更新時間:2017/9/12 下午 03:49:26

 

謝謝老師的回覆!




 

 

Re:Android初學特訓班

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。