2016-03-16 2 views
4

Я делаю Android-приложение с ActionScript с помощью FlashBuilder. Мне нужно использовать разрешение WiFi для моего приложения. Приложение работает на рабочем столе без проблем (проект AIR Desktop). Теперь, когда я попытался сделать это для Android (Mobile Project), он не показал мне никаких ошибок. Я разрешил необходимые мне разрешения (сеть и Wi-Fi) и сделал файл .apk. Однако, когда я устанавливаю файл .apk на своем устройстве Android 6.0.1 (Примечание 5), он утверждает, что приложение не запрашивает никаких разрешений. я решил попросить всех разрешений на веб-сайте глинобитныхПрава доступа не отображаются при установке apk

<android> 
<manifestAdditions> 
    <![CDATA[ 
     <manifest> 
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
      <uses-permission android:name="android.permission.CAMERA" /> 
      <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
      <uses-permission android:name="android.permission.INTERNET" /> 
      <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
      <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
      <uses-permission android:name="android.permission.WAKE_LOCK" /> 
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
     </manifest> 
    ]]> 
</manifestAdditions> 

Он просит для некоторых, но не для некоторых. Те, которые он не запрашивает, следующие:

<manifest> 
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
      <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
      <uses-permission android:name="android.permission.INTERNET" /> 
      <uses-permission android:name="android.permission.WAKE_LOCK" /> 
     </manifest> 

Я попытался создать новый MobileProject с FlashBuilder. Я оставил его по умолчанию (пустой экран) и попросил разрешения на доступ в Интернет. Он также не просит разрешения. Оба приложения внезапно ломаются.

Теперь в файле, содержащем разрешения, есть предупреждение: «Никаких ограничений грамматики (DTD или XML-схемы) не обнаружено для документа», но это действительно появляется в новом проекте, прежде чем я даже касаюсь чего-либо в нем.

+0

Может быть, вы используете targetSdk = 23? Если это правда, тогда вам следует запросить все необходимые разрешения, когда им это нужно. Если вы не хотите тратить время на разрешение разрешений, просто уменьшите версию targetSdk до 22 –

ответ

1
Actually android has new policy to show runTime premission from the marshmallow to you need to implement premission at runtime like this in Activity 


    protected void checkPermissionForReadWriteStorage() { 

     final int writeExternalStorage = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE); 
     final int readExternalStorage = ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE); 
     if (writeExternalStorage == PackageManager.PERMISSION_GRANTED && readExternalStorage == PackageManager.PERMISSION_GRANTED) { 


     } else { 
      boolean requestPermissionRationale = ActivityCompat.shouldShowRequestPermissionRationale(BaseActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE); 
      if (requestPermissionRationale) { 

       Toast.makeText(BaseActivity.this, "Please provide permission for reading images from gallery.", Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent(); 
       intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
       Uri uri = Uri.fromParts("package", BaseActivity.this.getPackageName(), null); 
       intent.setData(uri); 
       BaseActivity.this.startActivity(intent); 
      } else { 
       ActivityCompat.requestPermissions(BaseActivity.this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE, 
         android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2); 
      } 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     switch (requestCode) { 
      case 2: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
//     getLocationAndSaveInDatabaseOrEnableGPS(); 


       } 
       break; 
     } 
    } 
+0

. Старый способ работы с разрешениями (app wise) должен по-прежнему работать над Marshmallow (мои другие приложения работают). Также, когда я прошу разрешения, «старый» способ попросят некоторых, но некоторые из них не являются. – Saif

0
public void verifyStoragePermissions() { 
    if (ContextCompat.checkSelfPermission(YourActivityName.this, 
      Manifest.permission.WRITE_EXTERNAL_STORAGE) 
      != PackageManager.PERMISSION_GRANTED) { 
     Toast.makeText(getBaseContext(), "Denied", Toast.LENGTH_SHORT).show(); 
     if (ActivityCompat.shouldShowRequestPermissionRationale(YourActivityName.this, 
       Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 

     } else { 


     } 
    }else{ 
     Toast.makeText(getBaseContext(), "Granted",Toast.LENGTH_SHORT).show(); 
    } 
} 

Просто измените коды ниже разрешения вам необходимую для отображения

if (ContextCompat.checkSelfPermission(YourActivityName.this, 
     Manifest.permission.WRITE_EXTERNAL_STORAGE) 
     != PackageManager.PERMISSION_GRANTED) 
+0

Я использую ActionScript, а не JAVA. – Saif

Смежные вопросы