Android: ошибка при запросе фотографий?

#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);
  

… и теперь все хорошо. Надеюсь, это поможет любому из вас, кто может столкнуться с такой же проблемой.