camera+gallerry androidでファイルをアップロードします.
4008 ワード
今日はプロジェクトをする時に問題があります.jsを通じてinput of type fileを呼び出すと、androidの携帯電話のセレクタに「カメラ」と「写真」などが同時に現れてほしいです.
簡単な結び目:上のコードを通して、実際には多くの種類のアプリケーションを追加することができます.
関連リンクを添付します.強くMeをこすります. 、 input file解決方法
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
((Activity) mContext).startActivityForResult(Intent.createChooser(i, "Image Choser"), 1);
「画像」「ファイルマネージャ」などを表示しただけで、「カメラ」がない!!!そこでgoogleは以下のような方法を見つけました.final List<Intent> cameraIntents = new ArrayList<Intent>();
final Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File externalDataDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File cameraDataDir = new File(externalDataDir.getAbsolutePath()+File.separator+"browser-photos");
cameraDataDir.mkdirs();
String mCameraFilePath = cameraDataDir.getAbsolutePath()+File.separator+System.currentTimeMillis()+".jpg";
imageUri = Uri.fromFile(new File(mCameraFilePath));
final PackageManager packageManager = getPackageManager();
final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);
for(ResolveInfo res : listCam) {
final String packageName = res.activityInfo.packageName;
final Intent intent = new Intent(captureIntent);
intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
intent.setPackage(packageName);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
cameraIntents.add(intent);
}
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
Intent chooserIntent = Intent.createChooser(i,"Image Chooser");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));
MainActivity.this.startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE);
簡単に運行して、perfectは完璧です!簡単な結び目:上のコードを通して、実際には多くの種類のアプリケーションを追加することができます.
関連リンクを添付します.強くMeをこすります. 、 input file解決方法