In my Qt Android (5.6+, latest SDK and NDK 10d) app I need to request permissions at runtime because of targetApi 26. From Google docs I've found out that I have to do something like this:
import android.Manifest.permission;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
public class MyActivity extends QtActivity implements ActivityCompat.OnRequestPermissionsResultCallback
{
private static final String[] LOCATION_PERMS = {
permission.ACCESS_FINE_LOCATION
};
private static final int LOCATION_REQUEST = 1337;
private boolean hasPermission(String perm)
{
return (PackageManager.PERMISSION_GRANTED == checkSelfPermission(perm));
}
public boolean canAccessLocation()
{
return hasPermission(permission.ACCESS_FINE_LOCATION);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
//Figure out what was given to us
switch(requestCode)
{
case LOCATION_REQUEST:
if (canAccessLocation())
Log.i(TAG, "Access to location is granted");
else {
Log.e(TAG, "Access to location is denied");
finish();
}
break;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
//Ensure we can run the app
if (!canAccessLocation())
requestPermissions( LOCATION_PERMS, LOCATION_REQUEST );
}
}
}
I've also installed Android Support Repository:
And this is my build.gradle:
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
}
}
allprojects {
repositories {
jcenter()
google()
}
}
apply plugin: 'com.android.application'
dependencies {
compile "com.android.support:support-v4:27.0.2"
compile "com.android.support:support-v13:27.0.2"
compile fileTree(dir: 'libs', include: ['*.jar'])
}
But I get error: package android.support.v4.app does not exist. I also tried to find android-support-v4.jar on my workstation but with no success. Adding
compile 'com.android.support:support-v4:+'
from here doesn't make any difference.
One important thing: my project is built from command line with help of CMake, I can't use any IDE like Android Studio or Eclipse. What am I missing?
Thanks!