2015-09-23 3 views
0

Im пытается создать приложение, которое позволяет обмениваться изображениями и видео из галереи в facebook. В моей кодировке в этой строке появляется ошибка (выделено красным цветом): «onActivityResult», «getContentResolver», «PlusShare», «setType», «addStream», «setText» и «getIntent» говорят, что не могут разрешить метод. Полное кодирование следующим образом:Не удается разрешить метод onActivityResult

MainActivity.java

package com.example.dothis.facebook; 


import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

private static final int REQ_SELECT_PHOTO = 1; 
private static final int REQ_START_SHARE = 2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setResult(RESULT_OK); 

    // listeners of our two buttons 
    View.OnClickListener handler = new View.OnClickListener() { 
     public void onClick(View v) { 


      Button shareMediaButton = (Button) findViewById(R.id.share_media); 
      shareMediaButton.setOnClickListener(new android.view.View.OnClickListener() { 
       public void onClick(View v) { 
        Intent photoPicker = new  Intent(Intent.ACTION_PICK); 
        photoPicker.setType("video/*, image/*"); 
        startActivityForResult(photoPicker, REQ_SELECT_PHOTO); 
       } 
      }); 

     } 

     @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
      super.onActivityResult(requestCode, resultCode, intent); 

      if (requestCode == REQ_SELECT_PHOTO) { 
       if (resultCode == Activity.RESULT_OK) { 
        Uri selectedImage = intent.getData(); 
        ContentResolver cr = this.getContentResolver(); 
        String mime = cr.getType(selectedImage); 

        PlusShare.Builder share = new PlusShare.Builder(this); 
        share.setText("hello everyone!"); 
        share.addStream(selectedImage); 
        share.setType(mime); 
        startActivityForResult(share.getIntent(), REQ_START_SHARE); 

       } 
      } 
     } 

    } 
    } 

Android файл манифеста:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.dothis.facebook" > 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/facebook_app_id" /> 


    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

Может кто-то наставит меня о том, как решить эту проблему? Любые предложения приветствуются. Спасибо.

ответ

0

Вы цитируете {} в неправильном месте, ваш onCreate метод анонимный класс View.OnClickListener не закрывал с } правильно.

Ниже приведена фиксированная версия с котировкой, размещенной правильно.

package com.example.dothis.facebook; 


import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

    private static final int REQ_SELECT_PHOTO = 1; 
    private static final int REQ_START_SHARE = 2; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setResult(RESULT_OK); 

    // listeners of our two buttons 
    View.OnClickListener handler = new View.OnClickListener() { 
     public void onClick(View v) { 

     Button shareMediaButton = (Button) findViewById(R.id.share_media); 
     shareMediaButton.setOnClickListener(new android.view.View.OnClickListener() { 
      public void onClick(View v) { 
      Intent photoPicker = new Intent(Intent.ACTION_PICK); 
      photoPicker.setType("video/*, image/*"); 
      startActivityForResult(photoPicker, REQ_SELECT_PHOTO); 
      } 
     }); 

     } 
    }; 
    } 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 

    if (requestCode == REQ_SELECT_PHOTO) { 
     if (resultCode == Activity.RESULT_OK) { 
     Uri selectedImage = intent.getData(); 
     ContentResolver cr = this.getContentResolver(); 
     String mime = cr.getType(selectedImage); 

     PlusShare.Builder share = new PlusShare.Builder(this); 
     share.setText("hello everyone!"); 
     share.addStream(selectedImage); 
     share.setType(mime); 
     startActivityForResult(share.getIntent(), REQ_START_SHARE); 

     } 
    } 
    } 

} 
+0

спасибо @Derek Fung. OnActivityResult и getContentResolver теперь без ошибок, но «PlusShare», «setType», «addStream», «setText» и «getIntent» по-прежнему выделяются красным цветом и им не удается запустить эту активность. Есть ли какие-либо предложения для этого. – marian

+0

это сообщение об ошибке:: app: compileDebugJava /Users/geraldgoh/AndroidStudioProjects/Facebook/app/src/main/java/com/example/dothis/facebook/MainActivity.java:51: ошибка: пакет PlusShare не существует PlusShare.Builder share = new PlusShare.Builder (это); ^ /Users/geraldgoh/AndroidStudioProjects/Facebook/app/src/main/java/com/example/dothis/facebook/MainActivity.java:51: ошибка: пакет PlusShare не существует PlusShare.Builder share = new PlusShare. Builder (это); – marian

+0

Вам нужно импортировать PlusShare –

1

Пробуйте этот код, надеемся, что это поможет.

Intent share = new Intent(Intent.ACTION_SEND); 
    share.setType("image/jpeg"); 
    share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/path/to/image.ext")); 

    startActivity(Intent.createChooser(share, "Share Image")); 
1

Прежде всего, вам нужно изменить файл Manifest.xml как этот

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.FLASHLIGHT" /> 
<uses-feature 
     android:name="android.hardware.camera" 
     android:required="false" /> 

Затем измените метод, как:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQ_CODE) { 
     if (resultCode == RESULT_OK) { 
      taken = true; 
      getContentResolver().notifyChange(uri, null); 
      ContentResolver cr = getContentResolver(); 
      try { 
       bmp = MediaStore.Images.Media.getBitmap(cr, uri); 
       imagePhoto.setImageBitmap(bmp); 
       Toast.makeText(UserProfile.this, "Image has been saved to " + file.getAbsolutePath() + " as " + file.getName(), Toast.LENGTH_LONG).show(); 

      } catch (Exception e) { 
       throw new RuntimeException(e.getMessage()); 
      } 
     } else if (resultCode == RESULT_CANCELED) { 
      taken = false; 
      Toast.makeText(UserProfile.this, "Action canceled", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

Где вы называете намерение использовать пришел войти в этот :

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "picture.jpg"); 
uri = Uri.fromFile(file); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
startActivityForResult(intent, REQ_CODE); 

i использовал эти значения, чтобы заставить его работать

private static final int REQ_CODE = 1152; 
public static final int MEDIA_TYPE_IMAGE = 1; 
public static final int MEDIA_TYPE_VIDEO = 2; 

Надеюсь, что это поможет !!!

Смежные вопросы