2017-04-07 85 views
1

我試圖啓動choosePictureIntent。這是通過點擊Ap中的圖像完成的。當我點擊圖像時,沒有任何反應,但我知道else語句被執行。之後,如果我點擊圖片旁邊的視圖,整個應用程序會凍結。 沒有錯誤信息。Android - 爲什麼我無法啓動choosePictureIntent?

任何幫助表示讚賞。


getChoosePictureIntent()來源:

public static String getUniqueFileName(String prefix, String surfix) { 
    return prefix + System.currentTimeMillis() + surfix; 
} 

public static Object[] getChoosePictureIntent(Context context, PackageManager manager) { 
    final File root = new File(Environment.getExternalStorageDirectory() + File.separator + "imagedir" + File.separator); 
    root.mkdirs(); 
    final String fName = Utils.getUniqueFileName("img_purchase_", ".jpg"); 
    final File sdImageMainDirectory = new File(root, fName); 
    Uri outputFileUri = Uri.fromFile(sdImageMainDirectory); 

    // Camera. 
    final List<Intent> cameraIntents = new ArrayList<Intent>(); 
    final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    final PackageManager packageManager = manager; 
    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, outputFileUri); 
     cameraIntents.add(intent); 
    } 

    // Filesystem. 
    final Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

    // Chooser of filesystem options. 
    final Intent chooserIntent = Intent.createChooser(galleryIntent, context.getString(R.string.picture_chooser)); 

    // Add the camera options. 
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[cameraIntents.size()])); 

    return new Object[]{chooserIntent, outputFileUri}; 
} 

回答

0

如果您正在使用targetSdk> = 24,那麼你就需要添加文件提供,以取代從相機應用到內容開放的,因爲收到烏里文件由於安全原因,API等級24已阻止來自其他應用程序的File Uri。您可以查看此link以獲取更多信息

+0

嗯,我只是在沒有'chooserIntent.putExtra(「data」,data.get(position ));'部分,它實際上甚至與outputFile一起工作Uri的一部分。我不明白這一點,因爲我把這些數據放在另一部分代碼的另一個意圖中,並且工作。可能它與意圖成爲choosePictureIntent有什麼關係? – zebleckDAMM

+0

chooseData到底是什麼? –

+0

哦,只是意識到'choosePictureIntent'是我插入的方法!該代碼是很久以前的,我不記得了,等我把它添加到帖子中。 – zebleckDAMM

相關問題