私のアプリケーションの実行時にアクセス許可をリクエストしようとしています。私はポータブルクラスとAndroidの間で話すためにサービスプロバイダを使います。クラス内でAndroidのアクセス許可を要求しています(Xamarin)
私はPCLでボタンを押すにこのコードを呼び出すことによって開始します。しかし、私はCheckSelfPermission
とRequestPermissions
上の2つのエラーを取得
public class AndroidLocationHelper : ILocationHelper, ILocationListener
{
readonly string[] PermissionsLocation =
{
Manifest.Permission.AccessCoarseLocation
};
const int RequestLocationId = 0;
public void GetLocation(SearchViewModel viewModel)
{
try
{
const string permission = Manifest.Permission.AccessCoarseLocation;
if (((int)Build.VERSION.SdkInt < 23) || (CheckSelfPermission(permission) == Permission.Granted))
{
}
else
RequestPermissions(PermissionsLocation, RequestLocationId);
}
catch (Exception ex)
{
Debug.WriteLine("Error while getting Location service");
Debug.WriteLine(ex.Message);
Messaging.AlertUser("There was an error with determining your location");
}
}
:
using (new Busy(this))
{
var locationHelper = scope.Resolve<ILocationHelper>();
locationHelper.GetLocation(this);
}
これは私のAndroidのレベルのサービスを呼び出します。これらの2つの方法はアクティビティでのみ使用できます。コードはMainActivity
で正常に動作します。しかし、ユーザーがボタンを押したときのアクセス許可は、OnCreate
またはOnResume
などではなく、尋ねたいと思います。
ありがとうございました。
それはCheckSelfPermission' 'で働いていたように見えますが、' RequestPermissions'が必要です'ActivityCompat.RequestPermissions(これは、PermissionsLocation、RequestLocationId)のようなものです。 '。 「this」のために何を渡すべきかについてのアイデア。 –
現在の活動を追跡できます。私はこの便利なライブラリを使用しています:https://github.com/jamesmontemagno/CurrentActivityPlugin –
ハ、私がデバイスレベルでこれをやっている理由は、その余分なPCLのnugetパッケージを使用しないようにすることです。 –