diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b098030..d81bd21 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -8,15 +9,12 @@ - - + android:theme="@android:style/Theme.Holo.Light" + tools:targetApi="honeycomb"> - ContactMerger a été développé par\nRené Treffer\nFranziska-Bilek-Weg 7\nD-80339 München\nAllemagne\n\nMais cela n'aurait pas été possible sans ces fabuleuses bibliothèquesu00A0: + ContactMerger a été développé par\nRené Treffer\nFranziska-Bilek-Weg 7\nD-80339 München\nAllemagne\n\nMais cela n\'aurait pas été possible sans ces fabuleuses bibliothèquesu00A0: Apache Lucene Apache Lucene - Technologie Java d'indexation et de recherche, autant que de correcteur orthographique, avec des capacités notables d'analyse et de tokenisation. + Technologie Java d\'indexation et de recherche, autant que de correcteur orthographique, avec des capacités notables d\'analyse et de tokenisation. EsothericSoftware Kryo - Kryo est un cadriciel rapide et efficace pour la sérialisation de graphe objet en Java. Les objectifs du projet sont la vitesse, l'efficacité et la facilité d'utilisation de l'API. Le projet est utile dès que des objets doivent être sérialisés, que ce soit dans un fichier, une base de données ou à travers un réseau. + Kryo est un cadriciel rapide et efficace pour la sérialisation de graphe objet en Java. Les objectifs du projet sont la vitesse, l\'efficacité et la facilité d\'utilisation de l\'API. Le projet est utile dès que des objets doivent être sérialisés, que ce soit dans un fichier, une base de données ou à travers un réseau. ObjectWeb ObjectWeb ASM - ASM est une bibliothèque Java de manipulation et d'analyse du bytecode Java. ASM peut être utilisée pour modifier des classes existantes ou créer dynamiquement des classes, directement sous forme binaire. Les algorithmes de transformations et d'analyses fournis permettent d'assembler facilement des transformations complexes et des outils d'analyse statique.\n\nASM fournit des fonctionnalités similaires aux autres frameworks de manipulation du bytecode, mais porte une attention particulière sur la simplicité d'usage et la performance. Il a été conçu pour être aussi petit et rapide que possible, ce qui le rend intéressant pour être utilisé dans des systèmes dynamiques, mais il peut aussi être utilisé de manière statique. + ASM est une bibliothèque Java de manipulation et d\'analyse du bytecode Java. ASM peut être utilisée pour modifier des classes existantes ou créer dynamiquement des classes, directement sous forme binaire. Les algorithmes de transformations et d\'analyses fournis permettent d\'assembler facilement des transformations complexes et des outils d\'analyse statique.\n\nASM fournit des fonctionnalités similaires aux autres frameworks de manipulation du bytecode, mais porte une attention particulière sur la simplicité d\'usage et la performance. Il a été conçu pour être aussi petit et rapide que possible, ce qui le rend intéressant pour être utilisé dans des systèmes dynamiques, mais il peut aussi être utilisé de manière statique. Objenesis Objenesis - Objenesis est une petite bibliothèque Java qui n'a qu'un objetu00A0: instancier un nouvel objet d'une classe particulière + Objenesis est une petite bibliothèque Java qui n\'a qu\'un objetu00A0: instancier un nouvel objet d\'une classe particulière Android Open Source Project Android Open Source Project - Bienvenue sur le projet Open Source Androidu00A0!\n\nAndroid est une pile logicielle open-source pour une large gamme d'appareils mobiles et un projet open-source correspondant dirigé par Google. Ici vous pouvez trouver les informations et le code source dont vous aurez besoin pour en savoir plus sur la plate-forme Android. De là, vous pouvez créer des variantes personnalisées de la pile logicielle Android, porter les appareils et accessoires sur la plateforme Android, et vous assurer que vos appareils sont compatibles avec les spécifications de compatibilité Android. + Bienvenue sur le projet Open Source Androidu00A0!\n\nAndroid est une pile logicielle open-source pour une large gamme d\'appareils mobiles et un projet open-source correspondant dirigé par Google. Ici vous pouvez trouver les informations et le code source dont vous aurez besoin pour en savoir plus sur la plate-forme Android. De là, vous pouvez créer des variantes personnalisées de la pile logicielle Android, porter les appareils et accessoires sur la plateforme Android, et vous assurer que vos appareils sont compatibles avec les spécifications de compatibilité Android. diff --git a/src/de/measite/contactmerger/MergeActivity.java b/src/de/measite/contactmerger/MergeActivity.java index 99e8332..c1a3d7e 100644 --- a/src/de/measite/contactmerger/MergeActivity.java +++ b/src/de/measite/contactmerger/MergeActivity.java @@ -7,6 +7,7 @@ import com.tundem.aboutlibraries.Libs; import com.tundem.aboutlibraries.ui.LibsActivity; +import android.Manifest; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; @@ -14,6 +15,7 @@ import android.content.IntentFilter; import android.graphics.Typeface; import android.os.Bundle; +import android.support.v4.app.ActivityCompat; import android.support.v4.content.LocalBroadcastManager; import android.util.Log; import android.view.Menu; @@ -80,6 +82,7 @@ public void onReceive(Context context, Intent intent) { @Override protected void onCreate(Bundle savedInstanceState) { + ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS, Manifest.permission.RECEIVE_BOOT_COMPLETED},1); super.onCreate(savedInstanceState); setContentView(R.layout.merge); diff --git a/src/de/measite/contactmerger/util/ShiftedExpireLRU.java b/src/de/measite/contactmerger/util/ShiftedExpireLRU.java index f77109c..795d980 100644 --- a/src/de/measite/contactmerger/util/ShiftedExpireLRU.java +++ b/src/de/measite/contactmerger/util/ShiftedExpireLRU.java @@ -1,11 +1,7 @@ package de.measite.contactmerger.util; -import android.net.http.AndroidHttpClient; - import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.Map; import de.measite.contactmerger.contacts.ContactDataMapper; diff --git a/src/org/apache/lucene/util/SPIClassIterator.java b/src/org/apache/lucene/util/SPIClassIterator.java deleted file mode 100644 index a0e5308..0000000 --- a/src/org/apache/lucene/util/SPIClassIterator.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.apache.lucene.util; - -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Locale; -import java.util.NoSuchElementException; -import java.util.ServiceConfigurationError; - -/** - * Helper class for loading SPI classes from classpath (META-INF files). - * This is a light impl of {@link java.util.ServiceLoader} but is guaranteed to - * be bug-free regarding classpath order and does not instantiate or initialize - * the classes found. - * - * @lucene.internal - */ -public final class SPIClassIterator implements Iterator> { - private static final String META_INF_SERVICES = "/assets/META-INF/services/"; - - private final Class clazz; - private final ClassLoader loader; - private final Enumeration profilesEnum; - private Iterator linesIterator; - - public static SPIClassIterator get(Class clazz) { - return new SPIClassIterator(clazz, Thread.currentThread().getContextClassLoader()); - } - - public static SPIClassIterator get(Class clazz, ClassLoader loader) { - return new SPIClassIterator(clazz, loader); - } - - /** Utility method to check if some class loader is a (grand-)parent of or the same as another one. - * This means the child will be able to load all classes from the parent, too. */ - public static boolean isParentClassLoader(final ClassLoader parent, ClassLoader child) { - while (child != null) { - if (child == parent) { - return true; - } - child = child.getParent(); - } - return false; - } - - private SPIClassIterator(Class clazz, ClassLoader loader) { - this.clazz = clazz; - final String fullName = META_INF_SERVICES + clazz.getName(); - this.profilesEnum = - Collections.enumeration( - Arrays.asList(new URL[]{getClass().getResource(fullName)})); - this.loader = (loader == null) ? ClassLoader.getSystemClassLoader() : loader; - this.linesIterator = Collections.emptySet().iterator(); - } - - private boolean loadNextProfile() { - ArrayList lines = null; - while (profilesEnum.hasMoreElements()) { - if (lines != null) { - lines.clear(); - } else { - lines = new ArrayList(); - } - final URL url = profilesEnum.nextElement(); - try { - final InputStream in = url.openStream(); - IOException priorE = null; - try { - final BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); - String line; - while ((line = reader.readLine()) != null) { - final int pos = line.indexOf('#'); - if (pos >= 0) { - line = line.substring(0, pos); - } - line = line.trim(); - if (line.length() > 0) { - lines.add(line); - } - } - } catch (IOException ioe) { - priorE = ioe; - } finally { - IOUtils.closeWhileHandlingException(priorE, in); - } - } catch (IOException ioe) { - throw new ServiceConfigurationError("Error loading SPI class list from URL: " + url, ioe); - } - if (!lines.isEmpty()) { - this.linesIterator = lines.iterator(); - return true; - } - } - return false; - } - - @Override - public boolean hasNext() { - return linesIterator.hasNext() || loadNextProfile(); - } - - @Override - public Class next() { - // hasNext() implicitely loads the next profile, so it is essential to call this here! - if (!hasNext()) { - throw new NoSuchElementException(); - } - assert linesIterator.hasNext(); - final String c = linesIterator.next(); - try { - // don't initialize the class (pass false as 2nd parameter): - return Class.forName(c, false, loader).asSubclass(clazz); - } catch (ClassNotFoundException cnfe) { - throw new ServiceConfigurationError(String.format(Locale.ROOT, "A SPI class of type %s with classname %s does not exist, "+ - "please fix the file '%s%1$s' in your classpath.", clazz.getName(), c, META_INF_SERVICES)); - } - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - -}