2016-03-22 19 views
0

Wie kann ich android.support.v4.app.ActivityCompat.requestPermissions oder android.app.Activity.requestPermissions verwenden? Weil es immer undefinedNativeScript RequestPermission

ich diese

var context = android.content.Context; 
var wifi_service = application.android.context.getSystemService(context.WIFI_SERVICE); 

wifi_service.setWifiEnabled(true); 
var rs = wifi_service.startScan(); 

console.log(android.support.v4.app.ActivityCompat.requestPermissions); // undefined 
console.log(android.support.v4.content.ContextCompat.requestPermissions); // undefined 

application.android.registerBroadcastReceiver(
    android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION, 
    function onReceiveCallback(context, intent) {  
    var tp = wifi_service.getScanResults(); 
    console.log(tp); // empty [] 
    console.log(tp.size()); // 0 
    }); 

tun wollen, aber Array tp immer leer ist und ich Ding, weil ich die richtige Erlaubnis benötigen, und auf Android 6 wir es

fragen müssen,

i hinzufügen, auch auf manifestfile:

<uses-feature android:name="android.hardware.wifi" /> 
<uses-feature android:name="android.hardware.location" android:required="false" /> 
<uses-feature android:name="android.hardware.location.network" android:required="false" /> 
<uses-feature android:name="android.hardware.location.gps" android:required="false" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

auch auf C hinzufügen: ... \ app \ App_Resources \ Android \ app.gradle:

dependencies { 
    compile "com.android.support:support-v4:+" 
    , compile "com.android.support:appcompat-v7:+" 
} 

Dank

Antwort

0

Haben Sie die Android-Plattform zu entfernen und fügen Sie versucht? Hier ein Beispiel:

tns platform remove android 
tns platform add android 
0

Um das Problem zu beheben, müssen wir CLI aktualisieren und Anwendung neu erstellen.

Ich habe eine neue Anwendung erstellt und ich starte es von Anfang an und das funktioniert! :) Ich denke, dass das Upgrade von CLI das Problem gelöst hat, und wir müssen eine App neu erstellen, weil die \ node_modules \ tns-Kern-Module es nicht das gleiche ist

Hier der Code, um das Scan-Ergebnis Problem zu beheben:

var context = android.content.Context; 
    var wifi_service = application.android.context.getSystemService(context.WIFI_SERVICE); 
    wifi_service.setWifiEnabled(true); 

    var rs = wifi_service.startScan(); 

    var hasPermission = android.os.Build.VERSION.SDK_INT < 23; 
    if (!hasPermission) { 
     hasPermission = android.content.pm.PackageManager.PERMISSION_GRANTED == 
     android.support.v4.content.ContextCompat.checkSelfPermission(application.android.foregroundActivity, android.Manifest.permission.ACCESS_COARSE_LOCATION); 
    } 

    var ACCESS_COARSE_LOCATION_PERMISSION_REQUEST_CODE = 555; 

    if (!hasPermission) { 
     android.support.v4.app.ActivityCompat.requestPermissions(
         application.android.foregroundActivity, 
         [android.Manifest.permission.ACCESS_COARSE_LOCATION], 
         ACCESS_COARSE_LOCATION_PERMISSION_REQUEST_CODE); 
    } 

    application.android.registerBroadcastReceiver(
      android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION 
      , function onReceiveCallback(context, intent) {  
       var tp = wifi_service.getScanResults(); 
       console.log(tp); 
      });