2017-05-19 1248 views
0

在使用下面的方法,Android Studio中正在產生的關鍵字「這」以下錯誤:Android Studio中的「this」的正確用法是什麼 - ActivityCompat.requestPermissions?

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_READ_FINE_LOCATION); 

錯誤:

Wrong first argument type...found com.websmithing.wp.gpstracker.LocationService, required android.app. Activity

我可以使用「這」沒有任何錯誤引用活動當按照下面的方式評估清單文件權限檢查時。

ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != 
    PackageManager.PERMISSION_GRANTED && 
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != 
    PackageManager.PERMISSION_GRANTED) { 

任何人都可以指向正確的方向嗎?

回答

0

this指的是本課程。它只適用於this,當您在請求權限的同時處於活動狀態時。

解決方案

從服務發送通知,以便當用戶點擊它,打開 活動,並要求您需要的權限。

如何發送通知?

簡單參考Building a Notification

0

注意錯誤信息。它指向你的解決方案。

Wrong first argument type...found com.websmithing.wp.gpstracker.LocationService, required android.app. Activity

這意味着ActivityCompat.requestPermissions()期待一個活動作爲第一個參數,但您提供LocationService實例。我想你是從一個內部類中調用它,那麼也許你必須使用WhateverYouActivityClassIs.this來引用外部類。

+0

是的,我從內部類調用。猜猜我只是不明白爲什麼參考「this」適用於checkSelfPermissions作爲有效的活動,但不適用於請求代碼...我在網上研究的所有示例都使用「this」作爲有效表單... – leslieG

+0

我相信我的問題是,我從中調用請求權限的內部類擴展了Service類,而不是一個活動。因此,參考mainActivity.this也不起作用。 – leslieG

-1

您必須在調用該類的活動中編寫checkSelfpermission代碼。

+0

你能解釋一下你的答案,給我們一個例子嗎? –

+0

雖然這可能是解決問題的有價值的提示,但一個好的答案也可以證明解決方案。請[編輯]提供示例代碼來展示你的意思。或者,可以考慮將其寫爲註釋。 –

+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/17732580) – Mike

相關問題