#android #get #uri #android-intent #photos
#Android #получить #uri #android-намерение #Фото
Вопрос:
Я столкнулся с проблемой с моим приложением, с которой раньше не сталкивался. Что я пытаюсь сделать, так это разрешить пользователю отображать фотографию с устройства, используя intents. Затем верните эту фотографию обратно в вызывающее действие, чтобы она затем отображалась в виде изображения (на данный момент …). Проблема в том, что вчера у меня все работало, а сегодня (… ничего не изменил в коде …), похоже, вообще ничего не делает. Кажется, что приложение почти «зависает». Не уверен, как это устранить или даже устранить основную причину этого. Если у кого-нибудь есть какие-либо предложения, пожалуйста, опубликуйте, вот код:
//---Pressing this button will allow for user to choose what photo should return---
Button b2 = (Button) findViewById(R.id.btn_getPhotos);
b2.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
//Intent i = new Intent(Intent.ACTION_PICK);
i.setType("image/*");
//**Keep in mind after calling the StartActivityForResult() it seems to hang...**
startActivityForResult(i, PIC_REQUEST);
}
});
Вот onActivityResult():
protected void onActivityResult(int requestCode, int resultCode, Intent data )
{
if (resultCode == Activity.RESULT_CANCELED)
{
//handles when camera was canceled...
Toast.makeText(this, "Cancelled by user...", Toast.LENGTH_LONG).show();
}
else if (requestCode == PIC_REQUEST)
{
Uri photoUri = data.getData();
try
{
Bitmap galleryPic = Media.getBitmap(getContentResolver(), photoUri);
ImageView image = (ImageView) findViewById(R.id.currentPhoto);
image.setImageBitmap(galleryPic);
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Последнее, но не менее важное — это журнал изменений / ошибок:
11-09 10:07:47.060: WARN/InputManagerService(142): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@407d13a8
11-09 10:07:56.330: WARN/ActivityThread(3957): Application king.chad.SDE is waiting for the debugger on port 8100...
11-09 10:08:06.250: WARN/ActivityManager(142): Launch timeout has expired, giving up wake lock!
11-09 10:08:06.320: WARN/ActivityManager(142): Activity idle timeout for ActivityRecord{40939988 king.chad.SDE/.MainActivity}
Я хочу сказать, что моя проблема заключается в этом разделе журнала (на основе других вопросов, связанных с форумом, которые я исследовал …), но я не уверен:
11-09 10:08:23.090: WARN/InputManagerService(142): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@407f37e0 (uid=10022 pid=238)
11-09 10:08:45.890: WARN/InputManagerService(142): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40ce5140
Удаленное приложение, переустановленное, дублированное, журнал ошибок при втором запуске:
11-09 10:23:59.690: WARN/ActivityManager(142): No content provider found for:
11-09 10:23:59.700: WARN/PackageParser(142): Unknown element under <manifest>: uses-library at /data/app/vmdl1692687349.tmp Binary XML file line #8
11-09 10:23:59.700: WARN/ActivityManager(142): No content provider found for:
11-09 10:24:00.730: WARN/ResourceType(273): getEntry failing because entryIndex 1041 is beyond type entryCount 185
11-09 10:24:00.760: WARN/ResourceType(273): Failure getting entry for 0x7f020411 (t=1 e=1041) in package 0 (error -2147483647)
11-09 10:24:00.760: WARN/ResourceType(273): getEntry failing because entryIndex 1042 is beyond type entryCount 185
11-09 10:24:00.760: WARN/ResourceType(273): Failure getting entry for 0x7f020412 (t=1 e=1042) in package 0 (error -2147483647)
11-09 10:24:00.760: WARN/ResourceType(273): getEntry failing because entryIndex 1043 is beyond type entryCount 185
11-09 10:24:00.760: WARN/ResourceType(273): Failure getting entry for 0x7f020413 (t=1 e=1043) in package 0 (error -2147483647)
11-09 10:24:00.760: WARN/ResourceType(273): getEntry failing because entryIndex 1420 is beyond type entryCount 185
11-09 10:24:00.760: WARN/ResourceType(273): Failure getting entry for 0x7f02058c (t=1 e=1420) in package 0 (error -2147483647)
11-09 10:24:00.770: WARN/ResourceType(273): getEntry failing because entryIndex 223 is beyond type entryCount 185
11-09 10:24:00.770: WARN/ResourceType(273): Failure getting entry for 0x7f0200df (t=1 e=223) in package 0 (error -2147483647)
11-09 10:24:01.500: WARN/ActivityThread(5952): Application king.chad.SDE is waiting for the debugger on port 8100...
11-09 10:24:11.330: WARN/ActivityManager(142): Launch timeout has expired, giving up wake lock!
11-09 10:24:11.470: WARN/ActivityManager(142): Activity idle timeout for ActivityRecord{408a9dc8 king.chad.SDE/.MainActivity}
11-09 10:24:14.510: WARN/InputManagerService(142): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@407f37e0 (uid=10022 pid=238)
11-09 10:24:53.730: WARN/InputManagerService(142): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4090b358
Ответ №1:
Ну, не уверен, почему приведенный выше код не работал, но я нашел обходной путь для этого. После долгого чтения и поиска я обнаружил, что эта проблема на самом деле может быть связана не с моим кодом, а с устройством, которое я использовал. В итоге я изменил метод startActivityForResult (), изменив:
startActivityForResult(i, PIC_REQUEST);
…к этому:
startActivityForResult(Intent.createChooser(i, "Select a photo"), PIC_REQUEST);
… и теперь все хорошо. Надеюсь, это поможет любому из вас, кто может столкнуться с такой же проблемой.