2016-10-25 8 views
0

私はカレンダーのプロバイダを実装していますが、私は、私が防止したいマイナーなエラーに遭遇しました。Androidのカレンダーを確認する許可

ContentResolver contentResolver = getContentResolver(); 
ContentValues contentValues = new ContentValues(); 

.... 

Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, contentValues); // Error pops here 

「コールは、ユーザによって拒否することができる権限が必要です。コードが明示的に許可が(checkPermission付き)が利用可能であるかどうかを確認するか、明示的に潜在的な `SecurityExceptionを処理する必要があります」

に最善の方法は何ですかこのエラーを防ぐには?

ご協力いただければ幸いです。

答えて

4

ハンドルアンドロイド許可を減らします

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED 
    && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) { 
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);}else if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_GRANTED 
     && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED){ 

ContentResolver contentResolver = getContentResolver(); 
ContentValues contentValues = new ContentValues(); 
Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, contentValues);} 
+1

これは正しいですが、OP READ_CALENDARとWRITE_CALENDAR権限を要求する必要があることに注意してください。それ以外の場合は、ユーザーフレンドリーではないアプリを作成します。 OP、あなたは完全なdocをここで確認することができますhttps://developer.android.com/training/permissions/requesting.html –

+0

は@andrei_zaitcevと合意しました – Ak9637

-2

あなたtargetSdkVersionが23以上であり、ちょうど

下に示すように、あなたは権限がある場合にのみ、あなたの機能を進めるそれらを要求することができない場合は、それらが利用可能かどうかを確認、まずそれを

+0

新しいバージョンのAndroidで適切に処理する必要があります – MichaelStoddart

+0

6.0は一般的ではありませんが、少なくとも現在はapi 23を使用する必要はありません。 –

+0

アンドロイドのダッシュボードによると、アンドロイドデバイスの18.7%がmarshmallowを実行していますが、あなたは確かにマシュマロ以上のアクセス権を処理することを検討する必要があります。 "not popular"と思われるのでユーザベースの大部分を失う危険があります – MichaelStoddart

0

あなたはいつもを追加することができる利用可能なメソッドにSecurityExceptionがをスローし、さらに上流キャッチした例外の世話をします。さらに、このライブラリhttps://github.com/tbruyelle/RxPermissionsを使用することをお勧めします。

関連する問題