2015-10-04 10 views
9

मैं शर्मिंदा हूं। लेकिन यह पता नहीं है कि क्या गलत है।ACCESS_FINE_LOCATION अनुमति

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.szymon.gpslab1" 
android:versionCode="15" 
android:versionName="4.0.3"> 

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 

यह मेरा मैनिफेस्ट है।

public class MainActivity extends AppCompatActivity { 
LocationManager locationManager; 
LocationListener locationListener; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationListener = new MyLocationListener(); 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
} 
private class MyLocationListener implements LocationListener{ 

    @Override 
    public void onLocationChanged(Location location) { 
     System.out.println("ZMIENIAMY SIĘ, zmieniamy siebie"); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 

    } 
} 
} 

इम एम्बेडेड एमुलेटर साथ नवीनतम एंड्रॉयड स्टूडियो (IntelliJ) का उपयोग (?): और यहाँ मेरे कोड है। फोन विकल्पों से बाहर है। और यहाँ मैं क्या मिल गया है:

FATAL EXCEPTION: main 
Process: com.example.szymon.gpslab1, PID: 3274 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.szymon.gpslab1/com.example.szymon.gpslab1.MainActivity}: java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission. 

Caused by: java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission. 

मैं belive इस बेवकूफ गलती है, लेकिन मैं, एंड्रॉयड के लिए कभी नहीं विकसित पसंद किया है javaman im, और मैं नेट पर हर ट्यूटोरियल पहुँच गए हैं, नहीं कर सकते जवाब खोजने ।

आह और वाई, मेरे पास मेरे एमुलेटर में स्थान है।

+0

एंड्रॉयड का कौन-सा संस्करण पर परीक्षण कर रहे हैं, और अपने 'targetSdkVersion' क्या है:

कैसे अनुमतियों को संभालने के लिए के लिए नीचे दिए गए लिंक देखते हैं? – CommonsWare

+0

मैं डिफ़ॉल्ट को विश्वास करता हूं। तो न्यूनतम 15, अधिकतम (लक्ष्य?) 23? लेकिन पक्का नहीं। ने अभी तक मदद नहीं की है। एंड्रॉइड एंथौसियास्ट जवाब अब देख रहे हैं। – Sarseth

+0

https://commonsware.com/blog/2015/08/31/hey-where-did-my-permission-go.html – CommonsWare

उत्तर

22

यह एक आम अपवाद है यदि आपका लक्ष्य एसडीके आपके build.gradle में 23 है।

एंड्रॉइड 6.0/एसडीके 23 अनुमतियों का अनुरोध करने का एक नया तरीका प्रस्तुत करता है।

https://developer.android.com/training/permissions/index.html

+2

यह भी जांचें, जो विशेष रूप से एंड्रॉइड 6.0 (एपीआई स्तर 23) के लिए है: https: //developer.android.com/training/permissions/requesting.html –

संबंधित मुद्दे