Je développe une application appareil photo Android, cela fonctionne correctement mais quand je l'exécute dans Android 7, il crée un message qui dit "L'application est arrêtée"! Je pense que le problème est de ce fichier de mon code, il est mon dossier galerie:Mon application Android ne fonctionne pas sur Android 7
public class Gallery extends Activity {
GridView gv;
ArrayList<File> list;
Context context;
private static VirtualFileSystem vfs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery2);
File f = new File("/myfiles.db");
list = imageReader(f);
gv = (GridView) findViewById(R.id.gridview);
gv.setAdapter(new GridAdapter());
gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startActivity(new Intent(getApplicationContext(), viewImage.class).putExtra("img", list.get(position).toString()));
}
});
}
class GridAdapter extends BaseAdapter {
public ImageView iv;
public Bitmap bmp = null;
public File file ;
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
class ViewHolder {
ImageView icon;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Log.e("sara" , "this part takes time");
LayoutInflater inflater = getLayoutInflater();
getLayoutInflater().inflate(R.layout.gallery_gridsq, parent, false);
convertView = getLayoutInflater().inflate(R.layout.gallery_gridsq, parent, false);
iv = (ImageView) convertView.findViewById(R.id.icon);
file = new File(Uri.parse(getItem(position).toString()).getPath());
new myTask(iv, file).execute();
return convertView;
}
private class myTask extends AsyncTask <Void , Void ,Bitmap> {
ImageView iv;
File file;
public myTask(ImageView iv, File file) {
this.iv=iv;
this.file= file;
}
@Override
protected Bitmap doInBackground(Void... params) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
try {
BitmapFactory.decodeStream(new FileInputStream(file), null, options);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
options.inJustDecodeBounds = false;
options.inSampleSize = 2;
try {
bmp = BitmapFactory.decodeStream(new FileInputStream(file), null, options);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return bmp;
}
@Override
protected void onPostExecute(Bitmap aVoid) {
iv.setImageBitmap(aVoid);
}
}
}
ArrayList<File> imageReader (File root) {
final ArrayList<File> a = new ArrayList<>();
File[] files = root.listFiles();
for (int i = files.length - 1; i >= 0; i--) {
if (files[i].isDirectory()) {
// input name directory to array list
a.addAll(imageReader(files[i]));
} else {
if (files[i].getName().endsWith(".jpg")) {
a.add(files[i]);
}
}
}
return a;
}
Dans ce lien, il utilise « getUriForFile » mais je pense qu'il ne peut pas me aider dans ce cas! Voici ma logcat:
08-07 02: 10: 21.757 2343-2343 /? E/memtrack: Impossible de charger le module memtrack (aucun fichier ou répertoire de ce type) 08-07 02: 10: 21.757 2343-2343 /? E/android.os.Debug: échec du chargement du module memtrack: -2 08-07 02: 10: 21.913 2349-2349 /? E/memtrack: Impossible de charger le module memtrack (No tel fichier ou répertoire) 08-07 02: 10: 21.913 2349-2349 /? E/android.os.Debug: échec du chargement du module memtrack: -2 08-07 02: 10: 22.220 2370-2370 /? E/cutils-trace: Erreur lors de l'ouverture du fichier de trace: Autorisation refusée (13) 08-07 02: 10: 23.334 2390-2390 /? E/memtrack: Impossible de charger le module memtrack (aucun fichier ou répertoire de ce type) 08-07 02: 10: 23.334 2390-2390 /? E/android.os.Debug: impossible de charger memtrack Module : -2 08-07 02: 10: 23.708 2399-2415 /? E/libEGL: load_driver (/system/lib/egl/libGLES_emulation.so): échec de dlopen: bibliothèque "/system/lib/egl/libGLES_emulation.so" introuvable 08-07 02: 10: 23.802 2399-2399 /? E/AndroidRuntime: EXCEPTION FATAL: principal processus: com.example.zeinab.amndoorbin, PID: 2399 java.lang.NullPointerException: annuler() appelée avec une valeur nulle PendingIntent à android.app.AlarmManager.cancel (AlarmManager. java: 890) à info.guardianproject.cacheword.CacheWordService.resetTimeout (CacheWordService.java:189) à info.guardianproject.cacheword.CacheWordService.attachSubscriber (CacheWordService.java:145) à info.guardianproject.cacheword.CacheWordHandler 2 $ .onServiceConnected (CacheWordHandler.java:457) at android.app.LoadedApk $ ServiceDispatcher.doConnected (LoadedApk.java:1453) at android.app.LoadedApk $ Se rviceDispatcher $ RunConnection.run (LoadedApk.java:1481) à android.os.Handler.handleCallback (Handler.java:751) à android.os.Handler.dispatchMessage (Handler.java:95) at android.os. Looper.loop (Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6119) à java.lang.reflect.Method.invoke (Méthode native) à com.android.internal.os .ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776) 08-07 02: 10: 25.520 2399-2415 /? E/EGL_emulation: tid 2415: eglSurfaceAttrib (1174): erreur 0x3009 (EGL_BAD_MATCH) 08-07 02: 10: 25.612 706-1732 /? E/EGL_emulation: tid 1732: eglSurfaceAttrib (1174): Erreur 0x3009 (EGL_BAD_MATCH)
https://developer.android.com/about/versions/nougat/android-7.0 -changes.html # partage-fichiers –
Voir ceci: https://stackoverflow.com/a/38858040/7746134 –
S'il vous plaît expliquer, ** en détail **, ce que "ça ne marche pas" signifie. – CommonsWare