开发者

How to fire onActivityResult from Javascript

I have facing a big problem with my webView application for android. It was going ok but faced problem when i need to upload image from phone galley. I can show Phone image gallery from Javascript but cant fire the onActivityResult thats why couldn't able to get the image path of the selected image. my code are given below:

public class Hello extends Activity {   
WebView webview;    
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);       

    setContentView(R.layout.main);

    webview = (WebView) findViewById(R.id.webview);

    webview.addJavascriptInterface(new JavaScriptInterface(this), "Android");

    webview.setWebViewClient(new HelloWebViewClient());
    webview.getSettings().setJavaScriptEnabled(true);

    webview.loadUrl("http://someurl.com/Login.aspx");

}                    
private static final int SELECT_PICTURE = 1;
private static final int PICK_IMAGE = 1;

private String selectedImagePath;
//ADDED
private String filemanagerstring;

public class JavaScriptInterface {
       Context mContext;

       /** Instantiate the interface and set the context */
       JavaScriptInterface(Context c) {
          mContext = c;          
       }
       /** Show a toast from the web page */
        public String showToast(String toast) {

                 try {
                    Intent intent = new Intent();
                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(intent, "Select Picture"),PICK_IMAGE);      

                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show();
                    Log.e(e.getClass().getName(), e.getMessage(), e);
                }                                               
             return selectedImagePath;
        }


         protected void onActivityResult(int requestCode, int resultCode, Intent data){
            if (resultCode == RESULT_OK) {
                if (requestCode == SELECT_PICTURE) {
                    Uri selectedImageUri = data.getData();

                    //OI FILE Manager
                    filemanagerstring = selectedImageUri.getPath();

                    //MEDIA GALLERY
                    selectedImagePath = getPath(selectedImageUri);

                    //DEBUG PURPOSE - you can delete this if you want
                    if(selectedImagePath!=null)
                        System.out.println(selectedImagePath);
                    else System.out.println("selectedImagePath is null");
                    if(filemanagerstring!=null)
                        System.out.println(filemanagerstring);
                    else System.out.println("filemanagerstring is null");

                    //NOW WE HAVE OUR WANTED STRING
                    if(selectedImagePath!=null)
                        System.out.println("selectedImagePath is the right one for you!");
                    else
                        System.out.println("filemanagerstring is the right one for you!");

                }
            }
        }

        public String getPath(Uri uri) {
            String[] projection = { MediaStore.Images.Media.DATA };
            Cursor cursor = managedQuery(uri, projection, null, null, null);
            if (cursor != null) {
                /开发者_Python百科/ HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
                // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
                int column_index = cursor
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                return cursor.getString(column_index);
            } else
                return null;
        }

    }

}

and From the Javascript :

<script type="text/javascript" language="javascript">

   var Imagepath= Android.showToast('Hello This is Test From JS');  

</script>

Can anyone help me to find out problem. I am a newbie in android


You're defining onActivityResult() in your Javascript interface class, not in your Activity. Move it out to your Activity class.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜