2017-08-31 16 views
0

私のアプリケーションでGPSのアクセス許可をテストしようとしました。危険なアクセス許可のダイアログボックスが表示されない

GPSが危険な許可であるため、私はパーミッションマネージャを構築し、マニフェストにGPS許可を追加しました。 しかし、アプリケーションを実行すると、このアクセス許可のダイアログボックスが表示されません。そのため、このアクセス許可を許可していないことをアプリケーションに通知するため、 ダイアログボックスでこのアクセス許可を許可またはブロックすることはできませんボックス。

は、ヘルプのいずれかの種類をお願い申し上げ、それらは私のクラスは次のとおりです。

マニフェスト許可

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

MainActiviey

public class MainActivity extends AppCompatActivity { 

public static final int GPS=1; 
public static final String gpsFinePermission="Manifest.permission.ACCESS_FINE_LOCATION"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    PermissionManager.check(MainActivity.this, gpsFinePermission, GPS); 
    System.out.println("1"); 
} 


@Override 
protected void onStart() { 
    //startService(new Intent(this,CurrentLocation.class)); 
    super.onStart(); 
    System.out.println("2"); 
} 

@Override//when user allowed OR denied a permission 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    System.out.println("3"); 
    if(grantResults[0] == PackageManager.PERMISSION_GRANTED && requestCode == GPS){//Allowed 
     Toast.makeText(MainActivity.this, "GPS permission granted", Toast.LENGTH_LONG).show(); 
     System.out.println("4"); 
    }else 
     Toast.makeText(MainActivity.this, "GPS permission is IMPORTANT for this app", Toast.LENGTH_LONG).show(); 
    } 
} 

パーミッションマネージャ

public class PermissionManager { 
//A method that can be called from any Activity, to check for specific permission 
public static void check(Activity activity, String permission, int requestCode){ 
    System.out.println("5"); 
    //If requested permission isn't Granted yet 
    if (ActivityCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { 
     System.out.println("6"); 
     //Request permission from user 
     ActivityCompat.requestPermissions(activity,new String[]{permission},requestCode); 
    } 
} 
} 

答えて

1

Manifest.permissionクラスから文字列を取得する必要があります。しかし、文字列としてManifest.permission.ACCESS_FINE_LOCATIONを渡しています。 これは使用しないでください。

public static final String gpsFinePermission="Manifest.permission.ACCESS_FINE_LOCATION"; 

これを使用してください。

public static final String gpsFinePermission= Manifest.permission.ACCESS_FINE_LOCATION; 
関連する問題