[android-developers] Digest for android-developers@googlegroups.com - 11 Messages in 6 Topics

Group: http://groups.google.com/group/android-developers/topics

    Larry Meadors <larry.meadors@gmail.com> Feb 23 09:14PM -0700  

    I've been fighting with this all weekend and could use some help.
    Hope this isn't tl;dr. :-/
    Short version: I'm looking for a way to add a "provided" scope, but
    the trick where you add a "provided" configuration doesn't seem to
    work with android apps that use "productFlavors".
    I have an application that uses google maps and device messaging.
    I'm am now trying to make it work with amazon maps and device messaging.
    I've reconfigured the project to use "productFlavors" named "google"
    and "amazon".
    I added a dependency for the google flavor like this:
    - googleCompile('com.google.android.gms:play-services:4.0.30')
    The google flavor now compiles and works. Joy.
    Next, I tried to add the dependency for amazon in a similar way, but
    it turns out that the jars for the amazon APIs are just stubs and are
    not intended to be deployed with the APK - they are just supposed to
    be available at compile time.
    Using this "provided" trick adds the jars to the "main" compile classpath.
    compileClasspath += configurations.provided
    However, that isn't the classpath that's used when compiling the
    amazon flavor. I tried to do this:
    compileClasspath += configurations.provided
    But I get this error:
    Could not find method plus() for arguments [configuration ':provided']
    on source set 'compile classpath'.
    I've tried 100 things, and nothing seems to work. :-/
    Anyone know how to do this?


    "yvesliu@gmail.com" <yvesliu@gmail.com> Feb 23 04:41PM -0800  

    This is the strangest thing. This problem I found is on Nexus 5. Maybe this
    applies to all Android devices.
    I downloaded a picture from gmail, and from Gallery, i can see that
    picture. By click on Details, I can see the file path
    is /storage/emulated/0/Download/12345.jpg. Then in my app, I tried to
    access that picture, it says file is not found. So, I used Astro File
    Manager and get to that folder location, I cant find that file. But if I
    connect the phone to a PC, and after the storage is mounted, I get to
    \Nexus 5\Internal storage\Download folder and the file is there. Anyone
    knows why? How can I find the real path of the file?
    Any help will be appreciated.


    "yvesliu@gmail.com" <yvesliu@gmail.com> Feb 23 04:37PM -0800  

    This is the strangest thing.


    Danny D <daniel.m.devine@gmail.com> Feb 22 10:44PM -0800  

    Is the object instance for the content provider different between test runs? How are you destroying and recreating the ContentProvider?
    I suspect that if the Application instance is the same between test runs the ContentProvider might be too. It's created at the Application level through the manifest, so you may need to use an ApplicationTestCase or something similar to be sure that the App instance is killed and restarted between tests.


    Code Guru <codeguru42@gmail.com> Feb 23 12:16AM -0700  

    The `ContentProvider` is created indirectly by calling
    `getContentResolver()` from inside a method of the `Activity` under test. I
    will have to look into using `ApplicationTestCase` as you suggest.


    Code Guru <codeguru42@gmail.com> Feb 23 12:33AM -0700  

    My current test class extends `ActivityInstrumentationTestCase2`. If I
    change it to extend `ApplicationTestCase`, how do I start an activity?


    Danny D <daniel.m.devine@gmail.com> Feb 23 11:29AM -0800  

    As I read your reply, I'm confused now about what's being tested. Are you testing the ContentProvider or the Activity? If testing the Activity, it may be better to create a MockContentProvider that's responsible for providing back the info. If testing the ContentProvider, skip the Activity and use an Application test case, as you get direct control of when its created or destroyed.
    Sometimes its hard to do, but the goal in testing is to isolate the components and build known conditions around them.


    Code Guru <codeguru42@gmail.com> Feb 23 02:33PM -0700  

    In this case, I am testing the activities of my app with
    ActivityInstrumentationTestCase2. (I also have tests for the
    ContentProvider using ProviderTestCase2.) The two tests that I outlined
    earlier are for the data entry activity. I want to verify that the data
    entered is inserted into the underlying database. The Activity inserts the
    data via `getContentResolver.insert()`. The test case then opens the
    database directly to assert that the data is there. How would I use a
    MockContentProvider and/or other mock objects to perform this kind of
    > To unsubscribe from this group and all its topics, send an email to
    > android-developers+unsubscribe@googlegroups.com.
    > For more options, visit https://groups.google.com/groups/opt_out.
    On Sun, Feb 23, 2014 at 12:29 PM, Danny D <daniel.m.devine@gmail.com> wrote:


    Kostya Vasilyev <kmansoft@gmail.com> Feb 24 02:18AM +0400  

    I think you're seeing normal Unix (and Linux) file system semantics, with
    respect to deleting a file that's currently open. This unlinks the name
    from the underlying file system, but the file itself continues to stay
    open, and has same content as before unlinking -- until the process that
    has the file open terminates.
    So, if you're going to execute both tests in one run, you need a way to
    reset the database some other way.
    One method would be to ensure that the CP closes the database before
    deleting the files (then reopens).
    Another would be to delete all data (DELETE FROM tablename).
    Yet another would be to drop all tables (and to re-create them).
    In any case, you'll need a way for your test code to trigger this code
    inside the CP.
    One way to do this would be to create a special purpose content:// URI and
    call it from the test code (and the CP would recognize it and reset its
    data using one of the methods above).
    -- K


    Nikolay Elenkov <nikolay.elenkov@gmail.com> Feb 23 10:24PM +0900  

    On Sat, Feb 22, 2014 at 9:02 AM, Pradeep Phatak
    > Expectation-
    > In Wifi Settings, this EAP-TLS wifi configuration should show this user
    > certificate pre-selected.
    I haven't looked at this for a while, but IIRC it doesn't work the way
    you expect it to (see below).
    > setClientKeyEntry method throws this exception if getEncoded method returns
    > null for the PrivateKey object reference.
    > It is not clear why getEncoded returns null in this case.
    Once a key is imported into the device keystore you can use it, but
    not extract the private part. That is why getEncoded() returns null.
    If it returned the encoded key bytes, that would let you extract
    the private key, which defeats the purpose of storing it in the
    > Can a password protected .p12 file stored in keystore be used for
    > programatically configuring Wifi EAP-TLS using this procedure?
    Again IIRC (I might be wrong, so do check), WifiEnterpriseConfig
    imports the key into the keystore for you, so you should provide
    it a key it can read. To do that, load the PKCS#12 file using
    a KeyStore.getInstance("PKCS12"), then find the private key
    entry and pass it to WifiEnterpriseConfig. Do *not* import into
    the Android keystore first.


You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
For more options, visit this group at
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment