Autore Topic: Permessi non corretti apertura immagine  (Letto 469 volte)

Offline Runa1982

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Permessi non corretti apertura immagine
« il: 15 Giugno 2016, 18:24:26 CEST »
0
Salve a tutti, sto sviluppando una piccola app che dovrebbe visualizzare in una imageview un immagine. In teoria dovrei passare il path della foto e successivamente caricare la foto nella imageview relativa
Codice (Java): [Seleziona]
     Bitmap btm = null;
           
                File file = new File( ricetta.getFileTesto() );
                Uri f = Uri.fromFile( file );
                btm = getBitmapFromUri( f );
                ivRicetta.setImageBitmap( btm );
ovviamente nel mainfest ho impostato i permessi di accesso ai file sia per l'activity sia per tutta l'applicazione (questa è stata disperazione!!!) ma in ogni caso l'errore che mi da il logcat è
06-15 18:21:30.596 4690-4690/com.runa.gestionericette10 W/System.err: java.io.FileNotFoundException: Permission denied

Qualcuno può aiutarmi?

Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Permessi non corretti apertura immagine
« Risposta #1 il: 15 Giugno 2016, 20:05:24 CEST »
+1
Ciao,
quale sarebbe la path dell'immagine che vuoi caricare?
Poi scrivere anche quale permessi hai impostato nel manifest?
Su quale dispositivo e con quale versione minima di android stai provando questa app?

Offline Runa1982

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Permessi non corretti apertura immagine
« Risposta #2 il: 16 Giugno 2016, 08:39:05 CEST »
0
Ciao, sto sviluppando con AndroidStudio con API 23 e testo la app con un cellulare che monta android 4.4.2
La path dell'immagine viene caricata in base a quanto salvato nel db.
il salvataggio avviene dopo che l'utente ha scelto l'immagine da galleria quindi nella activityResult ho inserito il codice
Codice (Java): [Seleziona]
Bitmap bit = (Bitmap) data.getExtras().get( "data" );
picturePath = data.getExtras().getString( "data" );
in questo modo prelevo il path da salvare e che poi dovrei utilizzare per la visualizzazione.

Codice (XML): [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.runa.miaApp10">

    <application
       android:allowBackup="true"
       android:icon="@drawable/icona_due"
       android:label="@string/app_name"
       android:supportsRtl="true"
       android:theme="@style/AppTheme">
        <uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE"/>

        <activity android:name=".MainActivity">
        </activity >
       ......
      <activity
           android:name=".Visualizza"
           android:screenOrientation="portrait">
            <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        </activity>




Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Permessi non corretti apertura immagine
« Risposta #3 il: 16 Giugno 2016, 10:17:37 CEST »
0
I permessi devono essere all'esterno dell'application e dell'activity. Quindi il manifest dovrebbe essere il seguente:
Codice (XML): [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.runa.miaApp10">

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

    <application
      android:allowBackup="true"
      android:icon="@drawable/icona_due"
      android:label="@string/app_name"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
   
        <activity android:name=".MainActivity">
        </activity >
       ......
      <activity
          android:name=".Visualizza"
          android:screenOrientation="portrait">
        </activity>

Offline Runa1982

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Permessi non corretti apertura immagine
« Risposta #4 il: 16 Giugno 2016, 10:39:06 CEST »
0
I permessi devono essere all'esterno dell'application e dell'activity. Quindi il manifest dovrebbe essere il seguente:
Codice (XML): [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.runa.miaApp10">

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

    <application
      android:allowBackup="true"
      android:icon="@drawable/icona_due"
      android:label="@string/app_name"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
   
        <activity android:name=".MainActivity">
        </activity >
       ......
      <activity
          android:name=".Visualizza"
          android:screenOrientation="portrait">
        </activity>
Innanzitutto grazie dell'aiuto, ho provato le modifiche che hai suggerito ma il problema persiste.... Altre idee???

Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Permessi non corretti apertura immagine
« Risposta #5 il: 16 Giugno 2016, 10:47:43 CEST »
0
Mmm...
Prova a stampare con un Log il valore della variabile picturePath e postala così copisco dove è salvato il file...

Offline Runa1982

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Permessi non corretti apertura immagine
« Risposta #6 il: 16 Giugno 2016, 10:58:53 CEST »
0
Il codice che carica la foto è
 
Codice (Java): [Seleziona]
try {
                File file = new File( ricetta.getFileTesto() );
                Log.d ("Path   ",ricetta.getFileTesto().toString());
                Uri f = Uri.fromFile( file );

                Log.d ("Uri   ",f.toString());
                // boolean assegna = file.exists();
                //  if (assegna){
                btm = getBitmapFromUri( f );
                ivRicetta.setImageBitmap( btm );
                //ivRicetta.setImageBitmap( Utilitys.getResizedBitmap( btm, ivRicetta.getWidth(),ivRicetta.getHeight() ));


                //ivRicetta.setImageURI( ricetta.getFileTesto() );

            } catch (IOException e) {
                makeText( this, "Immagine non caricabile\n-> Forse è stata cancellata?\n" + e.getMessage(), LENGTH_LONG ).show();
                //todo inserire immagine per file cancellato
                e.printStackTrace();
            }

il log:

06-16 10:57:43.152 30386-30386/com.runa.gestionericette10 E/Path 1: /data/data/com.runa.gestionericette10/databases/GestioneRicette
06-16 10:57:43.160 30386-30386/com.runa.gestionericette10 D/Path: /storage/sdcard0/DCIM/Camera/IMG_20160611_110745.jpg
06-16 10:57:43.161 30386-30386/com.runa.gestionericette10 D/Uri: file:///storage/sdcard0/DCIM/Camera/IMG_20160611_110745.jpg

Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Permessi non corretti apertura immagine
« Risposta #7 il: 16 Giugno 2016, 11:15:59 CEST »
0
Prova ad utilizzare la seguente instruzione per creare un bitmap
Codice (Java): [Seleziona]
BitmapFactory.decodeFile(pathName);
pathName non so se deve essere o la path o l'uri (come le hai stampate te nel log).

Fammi sapere se va e se si con quale delle due stringhe deve essere eseguito.

Offline Runa1982

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Permessi non corretti apertura immagine
« Risposta #8 il: 16 Giugno 2016, 11:22:57 CEST »
0
Non mi da più errori di accesso al file ma la bitmap restituita dalla funzione è null di conseguenza ovviamente la imageview resta vuota  >:(

Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Permessi non corretti apertura immagine
« Risposta #9 il: 16 Giugno 2016, 11:27:07 CEST »
0
Su internet ho trovato che se è troppo grande restituisce null e hanno consigliato di fare così:
Codice (Java): [Seleziona]
BitmapFactory.Options options;

try {
  String imageInSD = path; // la tua path
  Bitmap bitmap = BitmapFactory.decodeFile(imageInSD);
  return bitmap;
} catch (OutOfMemoryError e) {
  try {
    options = new BitmapFactory.Options();
    options.inSampleSize = 2;
    Bitmap bitmap = BitmapFactory.decodeFile(imageInSD, null, options);
    return bitmap;
  } catch(Exception e) {
    Log.e(e);
  }
}

Naturalmente questo è fatto per restituire una bitmap quindi ti conviene fare un metodo che lo contiene e poi lo richiami quando ti serve.

Offline Runa1982

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Permessi non corretti apertura immagine
« Risposta #10 il: 16 Giugno 2016, 11:41:09 CEST »
0
Niente ancora bitmap null!!!  :'( :'( :'(

Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Permessi non corretti apertura immagine
« Risposta #11 il: 16 Giugno 2016, 12:09:18 CEST »
0
Prova a passare la path nel seguente modo
Codice (Java): [Seleziona]
Uri uri= Uri.fromFile( file );
String path = uri.getPath();


Offline Runa1982

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Permessi non corretti apertura immagine
« Risposta #12 il: 16 Giugno 2016, 19:35:04 CEST »
0
Nulla ancora niente ho cercato online e ho trovato questo che a mio parere potrebbe risolvere il problema
Codice (Java): [Seleziona]
 public static void verifyStoragePermissions(Activity activity) {
        // Check if we have write permission
        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

        if (permission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user
            ActivityCompat.requestPermissions(
                    activity,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }

purtroppo però PERMISSIONS_STORAGE e REQUEST_EXTERNAL_STORAGE me li segna in rosso non li riconosce nemmeno...

Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Permessi non corretti apertura immagine
« Risposta #13 il: 17 Giugno 2016, 16:02:46 CEST »
0
Avevo letto che serviva così per android 6 ma non credevo servisse obbligatoriamente.

Su internet ho trovato che deve essere in questo modo:

Codice (Java): [Seleziona]
ActivityCompat.requestPermissions(
                    activity,
                    Manifest.permission.PERMISSIONS_STORAGE,
                    Manifest.permission.REQUEST_EXTERNAL_STORAGE
            );