5
Context context; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Context context = (Permission) this; 
    // In an actual app, you'd want to request a permission when the user 
    // performs an action 
    // that requires that permission. 
    if (Build.VERSION.SDK_INT >= 23) { 
     getPermissionToReadUserContacts(); 
    } 
} 

// Identifier for the permission request 
private static final int READ_CONTACTS_PERMISSIONS_REQUEST = 1; 

// Called when the user is performing an action which requires the app to 
// read the 
// user's contacts 
public void getPermissionToReadUserContacts() { 
    // 1) Use the support library version 
    // ContextCompat.checkSelfPermission(...) to avoid 
    // checking the build version since Context.checkSelfPermission(...) is 
    // only available 
    // in Marshmallow 
    // 2) Always check for permission (even if permission has already been 
    // granted) 
    // since the user can revoke permissions at any time through Settings 
    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { 

     // Should we show an explanation? 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
       Manifest.permission.READ_CONTACTS)) { 

      // Show an expanation to the user *asynchronously* -- don't 
      // block 
      // this thread waiting for the user's response! After the user 
      // sees the explanation, try again to request the permission. 

     } else { 

      // No explanation needed, we can request the permission. 

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

      // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an 
      // app-defined int constant. The callback method gets the 
      // result of the request. 
     } 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
     String permissions[], int[] grantResults) { 
    switch (requestCode) { 
    case READ_CONTACTS_PERMISSIONS_REQUEST: { 
     // If request is cancelled, the result arrays are empty. 
     if (grantResults.length > 0 
       && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      Toast.makeText(this, "Read Contacts permission granted", 
        Toast.LENGTH_SHORT).show(); 
      // permission was granted, yay! Do the 
      // contacts-related task you need to do. 

     } else { 
      Toast.makeText(this, "Read Contacts permission denied", 
        Toast.LENGTH_SHORT).show(); 
      // permission denied, boo! Disable the 
      // functionality that depends on this permission. 
     } 
     return; 
    } 

    // other 'case' lines to check for other 
    // permissions this app might request 
    } 
} 
// Callback with the request from calling requestPermissions(...) 
/* 
* @Override public void onRequestPermissionsResult(int requestCode, String 
* permissions[], int[] grantResults) { // Make sure it's our original 
* READ_CONTACTS request if (requestCode == 
* READ_CONTACTS_PERMISSIONS_REQUEST) { if (grantResults.length == 1 && 
* grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
* Toast.makeText(this, "Read Contacts permission granted", 
* Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, 
* "Read Contacts permission denied", Toast.LENGTH_SHORT).show(); } } else { 
* super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
* } } 
*/ 

私はデモでこれをしようとすると、私はそれがtitle.Anyヘルプとしてエラーを投げているプロジェクトに含まれている場合、それはfine.Butを働いているアプリそれは私がそう考えるコンテキストのためです。 ................................................. .................................................. .................................................. .................................................. .................................................. .................................................. ...............................................checkSelfPermission(コンテキスト、文字列)型に対して定義されていない方法ContextCompat

+2

コンパイル 'com.android.support:appcompat-v7:23.0.1' –

答えて

2

ContextCompat.checkSelfPermission()には、バージョン23以降のサポートライブラリが必要です。

は、下位レベルbuild.gradledependenciesブロックに追加します。

compile 'com.android.support:appcompat-v7:23.1.1' 

あなたは(あなたはおそらく持っている)、ここで、以前のバージョンを持っている場合は、私が提供すると、あなたが車線を交換する必要があります。

+3

これは、Eclipseでgradleビルドファイルがない場合、どうすれば解決できますか?私は、Android SDKマネージャによってダウンロードされたappcompatのV7バージョンを持っていますか?私はandroid-support-v7-appcompat.jarをプロジェクトに追加しました。私が得るEclipseのIDEエラーは、 "メソッドcheckSelfPermission(MyActivity、String)はContextCompat型で定義されていません。import:android.support.v7.app。* import android.support.v7.appcompat。* import android。 support.v4.content.ContextCompat – neuman8

+4

私は自分自身の問題を解決しました。私はアンドロイドサポートv4.jarの新しいバージョンもインポートしていませんでした。プロジェクト – neuman8

+0

あなたは私にjarリンクを提供できますか?Eclipseを使って実行時のパーミッションを統合できますか? – Vasant

0

この問題は、サポートライブラリが古いために発生します。これで問題が解決しない場合は、

Android Tools > Add support library...

あなたはおそらく:

Eclipseを使用している場合

、私は最も簡単な解決策は、プロジェクトを右クリックしに行くことであることがわかりました最初のSDKを更新する必要があります。

Window > Android SDK Manager > Install Updates

サポートライブラリが追加/更新されなくなり、このエラーが表示されませんされます。

関連する問題