customized share button

139 views
Skip to first unread message

pravin...@gmail.com

unread,
Sep 24, 2012, 1:45:01 AM9/24/12
to codenameone...@googlegroups.com
i was trying to implement a share button with two services sms and email..here is the code
 protected void onMain_Button1Action(Component c, ActionEvent event) {
        super.onMain_Button1Action(c, event);
        Form f = Display.getInstance().getCurrent();

        t = findTextField(f).getText();
        Vector v = new Vector();
        SMSShare s = new SMSShare();
     // EmailShare e = new EmailShare();
        v.addElement(s);
     // v.addElement(e);
        for (int i = 0; i < v.size(); i++) {
            ShareService share = (ShareService) v.elementAt(i);
            share.setMessage(t);
        }
        List l = new List(v);
        l.setCommandList(true);
        final Dialog dialog = new Dialog("Share");
        dialog.setLayout(new BorderLayout());
        dialog.addComponent(BorderLayout.CENTER, l);
        l.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                dialog.dispose();
            }
        });

        dialog.show();
    }

when i click on  post button it shows  java .lang.NullPointerException and den it sends sms .....( I dont want to use all native services i want to use only sms service so i did modify code accordingly )

pravin...@gmail.com

unread,
Sep 24, 2012, 2:08:40 AM9/24/12
to codenameone...@googlegroups.com, pravin...@gmail.com

it works properly on emulator....shows NullPointerException on an android and j2me cellphones

Chen Fishbein

unread,
Sep 24, 2012, 3:34:06 AM9/24/12
to codenameone...@googlegroups.com, pravin...@gmail.com
Hi, this throws nullpointer on emulator as well, I am guessing you're project is not up to date.
The problem is that the ShareService needs the go back to the original Form once the share succeeded use setOriginalForm(Form original)

pravin...@gmail.com

unread,
Sep 24, 2012, 7:49:36 AM9/24/12
to codenameone...@googlegroups.com, pravin...@gmail.com
hii Chen... u r correct  my project was not up to date....it shows null pointer exception on emulator too.....with ur suggestion i have  added setOriginalForm(Display.getinstance().getCurrent()) method, and that worked on emulator properly but on android cell phone contacts are not getting loaded and app crashes while my application loads contact....

//code

protected void onMain_Button1Action(Component c, ActionEvent event) {
        super.onMain_Button1Action(c, event);
        Form f = Display.getInstance().getCurrent();
        t = findTextField(f).getText();
        final Vector v = new Vector();

        SMSShare s = new SMSShare();
        EmailShare e = new EmailShare();
        v.addElement(s);
        v.addElement(e);

        List l = new List(v);
        l.setCommandList(true);
        for (int i = 0; i < v.size(); i++) {
            ShareService share = (ShareService) v.elementAt(i);
            share.setMessage(t);
            share.setOriginalForm(Display.getInstance().getCurrent());

        }


        final Dialog dialog = new Dialog("Share");

        dialog.setLayout(new BorderLayout());
        dialog.addComponent(BorderLayout.CENTER, l);

        l.addActionListener(
                new ActionListener() {

                    public void actionPerformed(ActionEvent evt) {
                        dialog.dispose();
                    }
                });
        dialog.show();

    }
check out following  stack trace i got when i debug .apk file



09-24 16:13:19.906: I/System.out(12937): showKeyboard false
09-24 16:13:19.906: I/System.out(12937): showKeyboard false
09-24 16:13:19.960: I/System.out(12937): showKeyboard false
09-24 16:13:20.148: E/StatusBarPolicy(1541): ecio: 37
09-24 16:13:20.148: E/StatusBarPolicy(1541): iconLevel: 3
09-24 16:13:20.429: E/LogsProvider(12957): onCreate()
09-24 16:13:21.210: E/DatabaseUtils(12950): Writing exception to parcel
09-24 16:13:21.210: E/DatabaseUtils(12950): java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/contacts from pid=12937, uid=10079 requires android.permission.READ_CONTACTS
09-24 16:13:21.210: E/DatabaseUtils(12950):     at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:312)
09-24 16:13:21.210: E/DatabaseUtils(12950):     at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:173)
09-24 16:13:21.210: E/DatabaseUtils(12950):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
09-24 16:13:21.210: E/DatabaseUtils(12950):     at android.os.Binder.execTransact(Binder.java:320)
09-24 16:13:21.210: E/DatabaseUtils(12950):     at dalvik.system.NativeStart.run(Native Method)
09-24 16:13:21.210: W/System.err(12937): java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/contacts from pid=12937, uid=10079 requires android.permission.READ_CONTACTS
09-24 16:13:21.210: W/System.err(12937):     at android.os.Parcel.readException(Parcel.java:1322)
09-24 16:13:21.210: W/System.err(12937):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
09-24 16:13:21.210: W/System.err(12937):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
09-24 16:13:21.210: W/System.err(12937):     at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)
09-24 16:13:21.210: W/System.err(12937):     at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
09-24 16:13:21.210: W/System.err(12937):     at android.content.ContentResolver.query(ContentResolver.java:262)
09-24 16:13:21.210: W/System.err(12937):     at com.codename1.impl.android.AndroidContactsManager.getContacts(Unknown Source)
09-24 16:13:21.210: W/System.err(12937):     at com.codename1.impl.android.AndroidImplementation.getAllContacts(Unknown Source)
09-24 16:13:21.210: W/System.err(12937):     at com.codename1.ui.Display.getAllContacts(Unknown Source)
09-24 16:13:21.210: W/System.err(12937):     at com.codename1.contacts.ContactsManager.getAllContactsWithNumbers(Unknown Source)
09-24 16:13:21.210: W/System.err(12937):     at com.codename1.share.SMSShare$1.run(Unknown Source)
09-24 16:13:21.210: W/System.err(12937):     at com.codename1.impl.CodenameOneThread.run(Unknown Source)
09-24 16:13:21.210: I/System.out(12937): [SMS Thread] 0:0:0,0 - java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/contacts from pid=12937, uid=10079 requires android.permission.READ_CONTACTS
09-24 16:13:21.289: I/Codename One(12937): Failed to load resource: methodData.dat
09-24 16:13:21.289: W/dalvikvm(12937): threadid=12: thread exiting with uncaught exception (group=0x40018578)
09-24 16:13:21.296: E/liblog(1488): failed to call dumpstate
09-24 16:13:21.296: E/AndroidRuntime(12937): FATAL EXCEPTION: SMS Thread
09-24 16:13:21.296: E/AndroidRuntime(12937): java.lang.NullPointerException
09-24 16:13:21.296: E/AndroidRuntime(12937):     at java.io.DataInputStream.readToBuff(DataInputStream.java:159)
09-24 16:13:21.296: E/AndroidRuntime(12937):     at java.io.DataInputStream.readInt(DataInputStream.java:286)
09-24 16:13:21.296: E/AndroidRuntime(12937):     at com.codename1.impl.CodenameOneThread.getStack(Unknown Source)
09-24 16:13:21.296: E/AndroidRuntime(12937):     at com.codename1.impl.CodenameOneThread.handleException(Unknown Source)
09-24 16:13:21.296: E/AndroidRuntime(12937):     at com.codename1.impl.CodenameOneThread.run(Unknown Source)
09-24 16:13:21.335: E/(1488): Dumpstate > /data/log/dumpstate_app_error
09-24 16:13:21.429: E/StatusBarPolicy(1541): ecio: 37
09-24 16:13:21.429: E/StatusBarPolicy(1541): iconLevel: 3
09-24 16:13:21.453: D/dalvikvm(12937): GC_CONCURRENT freed 373K, 47% free 3176K/5959K, external 991K/1220K, paused 4ms+3ms
09-24 16:13:21.859: D/dalvikvm(12950): GC_CONCURRENT freed 190K, 46% free 3074K/5639K, external 408K/517K, paused 4ms+4ms



pravin...@gmail.com

unread,
Sep 24, 2012, 8:32:06 AM9/24/12
to codenameone...@googlegroups.com, pravin...@gmail.com
I have added following permission for reading contacts  :
key===>android.xpermissions
value===><uses-permission android:name = "android.permission.READ_CONTACTS" android:required="false" />
now contacts are loading properly but cant send sms....when i clicked post button it shows User 100079 does not have android.permission.SEND_SMS

Chen Fishbein

unread,
Sep 24, 2012, 11:15:58 AM9/24/12
to codenameone...@googlegroups.com, pravin...@gmail.com
add the sms permissions as well until we will fix the permissions in the build server.
Reply all
Reply to author
Forward
0 new messages