New Ribbon
不會就太可惜的Excel+Power BI 大數據視覺圖表設計與分析 會做簡報就會製作跨平台 App:Smart Apps Creator 3 超神開發術 中老年人快樂學電腦(Windows 10+Office 2016) 快快樂樂學威力導演15 - 影片/MV剪輯活用情報特蒐 中老年人愛用APP全收錄 ( 第二版 )< 適用 iOS + Android 雙系統手機及平板 Excel 2016高效實用範例必修16課-善用資料圖表 x 函數巨集的精算達人 iOS 10+iPhone 7 / 7Plus / iPad 完全活用術 中老年人快樂學拍照、攝影 生活科技應用網路概論(第二版) 中老年人快樂學 Facebook + LINE (超大圖解好閱讀.簡單學習好上手) 快快樂樂學威力導演14 - 影片/MV剪輯活用情報特蒐 翻倍效率工作術--不會就太可惜的Google超極限應用(第二版) iOS 9+iPhone 6s/iPad 完全活用術 - 260個超進化技巧攻略 用Photoshop玩影像設計比你想的簡單:快快樂樂學Photoshop CC 翻倍效率工作術:不會就太可惜的Excel必學圖表 中老年人愛用APP全收錄:適用 iOS + Android 雙系統手機及平板 翻倍效率工作術:不會就太可惜的 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:19

 

謝謝老師回覆,不過有幾個問題想再確認一下。
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:11

 

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初學特訓班

請輸入姓名。

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


請輸入電子郵件。

格式無效。


請輸入內容。