2017-06-14 58 views
0

好了,所以我在AndroidManifest.xml文件,我正在嘗試設置我的permissions這樣,當應用程序啓動時,系統會要求用戶允許Location + Storage權限。試圖提示用戶設置應用程序的啓動權限中AndroidManifest

我正在關閉BluetoothLeGatt的例子,我用uses-permission-sdk-23標籤來做到這一點。

供參考,這是我的代碼:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.bluetoothlegatt" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <!-- Min/target SDK versions (<uses-sdk>) managed by build.gradle --> 

    <!-- Declare this required feature if you want to make the app available to BLE-capable 
    devices only. If you want to make your app available to devices that don't support BLE, 
    you should omit this in the manifest. Instead, determine BLE capability by using 
    PackageManager.hasSystemFeature(FEATURE_BLUETOOTH_LE) --> 
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> 

    <uses-permission android:name="android.permission.BLUETOOTH"/> 
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/> 
    <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/> 
    <uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher" 
     android:theme="@android:style/Theme.Holo.Light"> 
     <activity android:name=".DeviceScanActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
     <activity android:name=".DeviceControlActivity"/> 
     <service android:name=".BluetoothLeService" android:enabled="true"/> 
    </application> 

</manifest> 

回答

1

試試這個

第1步: - 添加要在manifiest文件中像這樣

android.Manifest.permission.ACCESS_FINE_LOCATION, 
android.Manifest.permission.ACCESS_COARSE_LOCATION, 

第2步許可:問這樣的運行時權限

String permission = android.Manifest.permission.ACCESS_FINE_LOCATION; 
     if (ActivityCompat.checkSelfPermission(SearchCityClass.this, permission) 
       != PackageManager.PERMISSION_GRANTED && ActivityCompat. 
       checkSelfPermission(SearchCityClass.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) 
       != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(SearchCityClass.this, new String[] 
        {permission}, PERMISSION_GPS_CODE); 

     } 

步驟3:這樣

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
            @NonNull int[] grantResults) { 
super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
if (requestCode == PERMISSION_GPS_CODE) { 
    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 


     Toast.makeText(this, location_permission_granted_msg, Toast.LENGTH_SHORT).show(); 

    } else { 

     Toast.makeText(this, location_permission_not_granted_msg, Toast.LENGTH_SHORT).show(); 
    } 
} 

手柄許可結果}

+0

我在哪裏把步驟2的代碼? 我在想onCreate(),但我想驗證? – Nazoog

+0

是的,你可以在創建方法前請求權限。步驟2 –

+0

@Nazoog在任何查詢的情況下詢問我 –

1

使用的許可機器人:名稱= 「android.permission.ACCESS_FINE_LOCATION」/>

在MainActivity加入以下內容

if (Build.VERSION.SDK_INT < 23) { 

    //We already have permission. Write your function call over hear 

} else { 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

     // Here we are asking for permission 

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


    } else { 

//If the app is running for second time, then we already have 
permission. You can write your function here, if we already have 
permission.// 



    } 

} 

做同樣的內存存儲..

+0

你不需要一個特殊的代碼來處理低於23的權限。它會自動返回true檢查權限 –

+0

我試着將該代碼複製到我的onCreate中,但是ContextCompat,PackageManager和ActivityCompat都顯示爲紅色,就好像它們不能被識別一樣 有什麼我需要確保我包含在頂部我的.java文件? – Nazoog

相關問題