2012-01-07 55 views
31

Tôi đang cố gắng sử dụng ý định chia sẻ trên Android để đăng nội dung nào đó lên facebook. Có vẻ như sau:Mục đích chia sẻ của Android cho văn bản chia sẻ facebook VÀ liên kết

shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
shareIntent.setType("text/plain"); 
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Free education for all! http://linkd.in/xU8mCc"); 
startActivity(shareIntent); 

Vì vậy, bài đăng của tôi có cả văn bản và liên kết. Nhưng khi tin nhắn được đăng trên facebook, nó chỉ có liên kết, không có tin nhắn. Tôi đã thử nhiều tính năng bổ sung nhưng không có tác dụng gì.

Bất kỳ ai gặp sự cố này và đã giải quyết sự cố? Tôi có phiên bản ứng dụng facebook 1.8.1

Chỉnh sửa: Tôi đã thử xóa liên kết và ứng dụng facebook không nhận được tin nhắn của tôi (hiển thị thông báo trống được đăng), nhưng không phải là cách khác. Vì vậy, có vẻ như ứng dụng hoàn toàn bỏ qua bất kỳ tin nhắn văn bản đơn giản nào. Tôi bị hoảng sợ! Đây có phải là một lỗi chính trong ứng dụng fb mà tin nhắn văn bản không thể được đăng tải (với mục đích chia sẻ)?

+0

chào GreenBee tôi có cùng một vấn đề nhưng liên kết này không mở cửa bây giờ [ đây là câu hỏi của tôi] (http: // stackoverflow.com/questions/14001859/không thể chia sẻ-văn bản-với-một-liên kết-thông qua-android-chia sẻ-intent) xin vui lòng giúp tôi làm thế nào để giải quyết vấn đề này – Jeetu

+0

Đây là giải pháp của tôi mà là làm việc tốt chỉ để chia sẻ URL, http://stackoverflow.com/a/29529335/513413 – Hesam

Trả lời

6

Nếu bạn định sử dụng Mục đích chia sẻ thông thường của Android, tiếc là mục đích chia sẻ Facebook chỉ có thể lấy một URL duy nhất (đảm bảo URL có http: //) và không có tin nhắn văn bản bổ sung nào. Đó là một giới hạn kỳ lạ không thực sự có ý nghĩa.

Bạn phải sử dụng Facebook SDK Android riêng biệt chính thức thực tế trong dự án của mình để có được chức năng chia sẻ đầy đủ. Đó là công việc phụ.

Tôi đã gặp phải sự cố tương tự. Cuối cùng, những gì tôi đã làm là phân nhánh ý định. Nếu họ chọn chia sẻ (trong mục đích chia sẻ thông thường trên Android) qua Facebook, hãy tạo mục đích chia sẻ mới chỉ có URL và đẩy URL đó vào facebook. Tất cả các tùy chọn chia sẻ khác (twitter, tin nhắn, email) sẽ hoạt động như bình thường.

câu hỏi và giải pháp của tôi đang ở đây:

Branching the Android Share Intent extras depending on which method they choose to share

String shareBody = "app string text " + act_txt + " more text! Get the app at http://www.appurl.com"; 

PackageManager pm = view.getContext().getPackageManager(); 
List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0); 
for(final ResolveInfo app : activityList) { 
    Log.i(TAG, "app.actinfo.name: " + app.activityInfo.name); 
    //if((app.activityInfo.name).contains("facebook")) { 
      if("com.facebook.katana.ShareLinkActivity".equals(app.activityInfo.name)) { 


     sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://www.appurl.com"); 
     startActivity(Intent.createChooser(sharingIntent, "Share idea")); 
     break; 
    } else { 
     sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "app name"); 
     sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); 
     startActivity(Intent.createChooser(sharingIntent, "Share")); 
     break; 
    } 
} 
+0

Cảm ơn ý tưởng. Nhưng tại sao bạn luôn luôn 'phá vỡ 'trong một vòng lặp' for'? –

+0

nvm, tôi hiểu tại sao ... –

8

tôi chỉ xây dựng mã này và nó làm việc cho tôi:

private void shareAppLinkViaFacebook(String urlToShare) { 
    try { 
     Intent intent1 = new Intent(); 
     intent1.setClassName("com.facebook.katana", "com.facebook.katana.activity.composer.ImplicitShareIntentHandler"); 
     intent1.setAction("android.intent.action.SEND"); 
     intent1.setType("text/plain"); 
     intent1.putExtra("android.intent.extra.TEXT", urlToShare); 
     startActivity(intent1); 
    } catch (Exception e) { 
     // If we failed (not native FB app installed), try share through SEND 
     String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + urlToShare; 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl)); 
     startActivity(intent); 
    } 
} 
+5

Dường như chức năng try {} không hoạt động mặc dù tôi đã cài đặt ứng dụng Facebook trên thiết bị của mình nhưng bắt hoạt động tốt. – Hesam

+0

Thông điệp ở đây ở đâu? – mklimek

+1

intent1.setPackage ("com.facebook.katana"); sử dụng nó thay vì intent1.setClassName ("com.facebook.katana", "com.facebook.katana.activity.composer.ImplicitShareIntentHandler"); –

0

Trong ứng dụng của tôi, tôi đã tích hợp Facebook SDK để cho phép người dùng chia sẻ báo giá [văn bản được điền trước] trên tường của họ. Sử dụng FB SDK, có thể thực hiện việc này. Nó hoạt động trong ứng dụng của tôi và tôi có hơn 5 nghìn người dùng sử dụng cùng một ứng dụng.

Rõ ràng điều này không trái với chính sách của FB vì tôi chưa có bất kỳ cảnh báo hoặc vấn đề nào mà điều này không hoạt động.

Các đoạn mã cho cùng có thể được tìm thấy ở đây,

Do any widely used Android apps have Facebook sharing with pre-populated text field?

1

Trong Lollipop (21), bạn có thể sử dụng để ghi đè Intent.EXTRA_REPLACEMENT_EXTRAS mục đích cho các ứng dụng cụ thể.

https://developer.android.com/reference/android/content/Intent.html#EXTRA_REPLACEMENT_EXTRAS

private void doShareLink(String text, String link) { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    Intent chooserIntent = Intent.createChooser(shareIntent, getString(R.string.share_via)); 

    // for 21+, we can use EXTRA_REPLACEMENT_EXTRAS to support the specific case of Facebook 
    // (only supports a link) 
    // >=21: facebook=link, other=text+link 
    // <=20: all=link 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    shareIntent.putExtra(Intent.EXTRA_TEXT, text + " " + link); 
    Bundle facebookBundle = new Bundle(); 
    facebookBundle.putString(Intent.EXTRA_TEXT, link); 
    Bundle replacement = new Bundle(); 
    replacement.putBundle("com.facebook.katana", facebookBundle); 
    chooserIntent.putExtra(Intent.EXTRA_REPLACEMENT_EXTRAS, replacement); 
    } else { 
    shareIntent.putExtra(Intent.EXTRA_TEXT, link); 
    } 

    chooserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(chooserIntent); 
} 
+0

lý do tại sao chúng tôi không thể chia sẻ (Văn bản và liên kết) trước khi kẹo? –

0

sử dụng mã này cho hình ảnh cổ phiếu, video, liên kết và văn bản trên facebook làm việc perfectally

public class Shareonwall extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    JSONObject response, profile_pic_data, profile_pic_url; 
    TextView user_name, user_email; 
    ImageView user_picture; 
    NavigationView navigation_view; 
    CallbackManager callbackManager; 
    ShareDialog shareDialog; 
    int REQUEST_CAMERA = 0, SELECT_FILE = 1; 

    private static final int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE = 200; 
    private Uri fileUri; 
    // public static TextView output; 

    private static final int MY_PERMISSIONS_REQUEST_CAMERA = 110; 

    private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 222; 
    private static final int MY_PERMISSIONS_REQUEST_CAMERA_VIDEO = 333; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     facebookSDKInitialize(); 
     setContentView(R.layout.activity_details); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     Button button = (Button) findViewById(R.id.button); 
     Button imageShare = (Button) findViewById(R.id.imageShare); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Home Page"); 

     Intent intent = getIntent(); 
     String jsondata = intent.getStringExtra("jsondata"); 

     setNavigationHeader(); // call setNavigationHeader Method. 
     setUserProfile(jsondata); // call setUserProfile Method. 


     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 
     shareDialog = new ShareDialog(this); // intialize facebook shareDialog. 

     navigation_view.setNavigationItemSelectedListener(this); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       if (ShareDialog.canShow(ShareLinkContent.class)) { 
        ShareLinkContent linkContent = new ShareLinkContent.Builder() 
          .setContentTitle("How to integrate Facebook from your app") 
          .setImageUrl(Uri.parse("http://www.devglan.com/image/dashboard.jpg")) 
          .setContentDescription(
            "simple Fb Image share integration") 
          .setContentUrl(Uri.parse("http://www.devglan.com/image/dashboard.jpg")) 
          .build(); 

        shareDialog.show(linkContent); // Show facebook ShareDialog 
       } 
      } 
     }); 

     imageShare.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       selectImage(); 
      } 
     }); 

    } 

    // this method is for create a dialog box to choose options to select Image to share on facebook. 
    private void selectImage() { 
     final CharSequence[] items = { "Take Photo", "Choose from Library","Record Video", 
       "Cancel" }; 

     AlertDialog.Builder builder = new AlertDialog.Builder(Shareonwall.this); 
     builder.setTitle("Select profile Photo!"); 
     builder.setItems(items, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int item) { 
       if (items[item].equals("Take Photo")) { 



        if (Build.VERSION.SDK_INT >= 23) { 
         if ((ContextCompat.checkSelfPermission(Shareonwall.this, 
           android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
           == PackageManager.PERMISSION_GRANTED) && (ContextCompat.checkSelfPermission(Shareonwall.this, 
           android.Manifest.permission.CAMERA) 
           == PackageManager.PERMISSION_GRANTED)) { 



          Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
          startActivityForResult(intent, REQUEST_CAMERA); 


         } else { 

          if ((ContextCompat.checkSelfPermission(Shareonwall.this, 
            android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
            == PackageManager.PERMISSION_GRANTED) && (ContextCompat.checkSelfPermission(Shareonwall.this, 
            android.Manifest.permission.CAMERA) 
            == PackageManager.PERMISSION_GRANTED)) { 

           Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
           startActivityForResult(intent, REQUEST_CAMERA); 

          } else { 


           ActivityCompat.requestPermissions(Shareonwall.this, 
             new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA}, 
             MY_PERMISSIONS_REQUEST_CAMERA); 
           Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
           startActivityForResult(intent, REQUEST_CAMERA); 


          } 

         } 
        } else { 

         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
         startActivityForResult(intent, REQUEST_CAMERA);; 
        } 

       }  else if (items[item].equals("Choose from Library")) { 



        if (Build.VERSION.SDK_INT >= 23) { 
         if ((ContextCompat.checkSelfPermission(Shareonwall.this, 
           android.Manifest.permission.READ_EXTERNAL_STORAGE) 
           == PackageManager.PERMISSION_GRANTED)) { 

          Intent intent = new Intent(
            Intent.ACTION_PICK, 
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
          intent.setType("image/*"); 
          startActivityForResult(
            Intent.createChooser(intent, "Select File"), 
            SELECT_FILE); 
         } else { 

          if ((ContextCompat.checkSelfPermission(Shareonwall.this, 
            android.Manifest.permission.READ_EXTERNAL_STORAGE) 
            == PackageManager.PERMISSION_GRANTED)) { 


          } else { 


           ActivityCompat.requestPermissions(Shareonwall.this, 
             new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
             MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); 


          } 

         } 
        } else { 
         Intent intent = new Intent(
           Intent.ACTION_PICK, 
           android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
         intent.setType("image/*"); 
         startActivityForResult(
           Intent.createChooser(intent, "Select File"), 
           SELECT_FILE); 
        } 


       } if (items[item].equals("Record Video")) { 


        if (Build.VERSION.SDK_INT >= 23) { 
         if ((ContextCompat.checkSelfPermission(Shareonwall.this, 
           android.Manifest.permission.READ_EXTERNAL_STORAGE) 
           == PackageManager.PERMISSION_GRANTED)) { 

          Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
          if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { 
           startActivityForResult(takeVideoIntent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE); 
          } 
         } else { 

          if ((ContextCompat.checkSelfPermission(Shareonwall.this, 
            android.Manifest.permission.READ_EXTERNAL_STORAGE) 
            == PackageManager.PERMISSION_GRANTED)) { 


          } else { 


           ActivityCompat.requestPermissions(Shareonwall.this, 
             new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
             MY_PERMISSIONS_REQUEST_CAMERA_VIDEO); 


          } 

         } 
        } else { 
         Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
         if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { 
          startActivityForResult(takeVideoIntent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE); 
         } 
        } 


       } else if (items[item].equals("Cancel")) { 
        dialog.dismiss(); 
       } 
      } 
     }); 
     builder.show(); 
    } 


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

     if (resultCode == Activity.RESULT_OK) { 

      if (requestCode == SELECT_FILE){ 

       onSelectFromGalleryResult(data); 


      } 

      else if (requestCode == REQUEST_CAMERA){ 

       onCaptureImageResult(data); 

      } 
      if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) { 
       // Uri videoUri = data.getData(); 
       // mVideoView.setVideoURI(videoUri); 
       // recordVideo(videoUri); 
       String selectedVideoFilePath = GetFilePathFromDevice.getPath(this, data.getData()); 
       final byte[] datas; 
       try { 
        datas = readBytes(selectedVideoFilePath,data.getData()); 
        PostVideo(datas, selectedVideoFilePath); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

      } 

     } 
    } 
    public byte[] readBytes(String dataPath,Uri uri) throws IOException { 
     InputStream inputStream = new FileInputStream(dataPath); 
     ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); 
     byte[] buffer = new byte[1024]; 
     int len; 
     while ((len = inputStream.read(buffer)) != -1) { 
      byteBuffer.write(buffer, 0, len); 
     } 
     ShareDialogVideo(uri); 
     return byteBuffer.toByteArray(); 
    } 
    public void PostVideo(byte[] VideoBytes, String filePath) { 
     String url; 
     url = "/me/videos"; 

     AccessToken token = AccessToken.getCurrentAccessToken(); 
     if (token != null) { 
      Bundle param = new Bundle(); 
      param.putByteArray("video." + getFileExt(filePath), VideoBytes); 
      param.putString("description", "sample video"); 
      new GraphRequest(token,url, param, HttpMethod.POST, new GraphRequest.Callback() { 

       public void onCompleted(GraphResponse response) { 
        Log.e("New Post", "Res =" + response.toString()); 
        // dialog.dismiss(); 

        if (response != null && response.getJSONObject() != null && response.getJSONObject().has("id")) { 
         Log.e("New Post", "Success"); 
         Toast.makeText(Shareonwall.this, "Video posted successfully.", Toast.LENGTH_SHORT).show(); 
        } else { 
         Toast.makeText(Shareonwall.this, "Error in posting Video.", Toast.LENGTH_SHORT).show(); 
        } 
        setResult(Activity.RESULT_OK, new Intent()); 
        finish(); 
       } 
      }).executeAsync(); 
     } 
    } 
    public static String getFileExt(String fileName) { 
     return fileName.substring((fileName.lastIndexOf(".") + 1), fileName.length()); 
    } 

    /**** this method used for select image From Gallery *****/ 


    private void onSelectFromGalleryResult(Intent data) { 
     Uri selectedImageUri = data.getData(); 
     String[] projection = { MediaStore.MediaColumns.DATA }; 
     Cursor cursor = managedQuery(selectedImageUri, projection, null, null, 
       null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
     cursor.moveToFirst(); 

     String selectedImagePath = cursor.getString(column_index); 

     Bitmap thumbnail; 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(selectedImagePath, options); 
     final int REQUIRED_SIZE = 200; 
     int scale = 1; 
     while (options.outWidth/scale/2 >= REQUIRED_SIZE 
       && options.outHeight/scale/2 >= REQUIRED_SIZE) 
      scale *= 2; 
     options.inSampleSize = scale; 
     options.inJustDecodeBounds = false; 
     thumbnail = BitmapFactory.decodeFile(selectedImagePath, options); 

     ShareDialog(thumbnail); 
    } 

    /*** this method used for take profile photo *******/ 

    private void onCaptureImageResult(Intent data) { 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes); 

     File destination = new File(Environment.getExternalStorageDirectory(), 
       System.currentTimeMillis() + ".jpg"); 

     FileOutputStream fo; 
     try { 
      destination.createNewFile(); 
      fo = new FileOutputStream(destination); 
      fo.write(bytes.toByteArray()); 
      fo.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     ShareDialog(thumbnail); 
    } 



    // This method is used to share Image on facebook timeline. 
    public void ShareDialog(Bitmap imagePath){ 

     SharePhoto photo = new SharePhoto.Builder() 
       .setBitmap(imagePath) 
       .setCaption("Testing") 
       .build(); 
     SharePhotoContent content = new SharePhotoContent.Builder() 
       .addPhoto(photo) 
       .build(); 

     shareDialog.show(content); 

    } 
    public void ShareDialogVideo(Uri imagePath){ 

     ShareVideo shareVideo = new ShareVideo.Builder() 
       .setLocalUrl(imagePath) 
       .build(); 
     ShareVideoContent content = new ShareVideoContent.Builder() 
       .setVideo(shareVideo) 
       .build(); 
     shareDialog.show(content); 

    } 


    // Initialize the facebook sdk and then callback manager will handle the login responses. 

    protected void facebookSDKInitialize() { 

     FacebookSdk.sdkInitialize(getApplicationContext()); 

     callbackManager = CallbackManager.Factory.create(); 
    } 


    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    /* 
     Set Navigation header by using Layout Inflater. 
    */ 

    public void setNavigationHeader(){ 

     navigation_view = (NavigationView) findViewById(R.id.nav_view); 

     View header = LayoutInflater.from(this).inflate(R.layout.nav_header_home, null); 
     navigation_view.addHeaderView(header); 

     user_name = (TextView) header.findViewById(R.id.username); 
     user_picture = (ImageView) header.findViewById(R.id.profile_pic); 
     user_email = (TextView) header.findViewById(R.id.email); 
    } 

    /* 
     Set User Profile Information in Navigation Bar. 
    */ 

    public void setUserProfile(String jsondata){ 

     try { 
      response = new JSONObject(jsondata); 
      user_email.setText(response.get("email").toString()); 
      user_name.setText(response.get("name").toString()); 
      profile_pic_data = new JSONObject(response.get("picture").toString()); 
      profile_pic_url = new JSONObject(profile_pic_data.getString("data")); 

      Picasso.with(this).load(profile_pic_url.getString("url")) 
        .into(user_picture); 

     } catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     // getMenuInflater().inflate(R.menu.home, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     // Logs 'install' and 'app activate' App Events. 
     AppEventsLogger.activateApp(this); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 

     // Logs 'app deactivate' App Event. 
     AppEventsLogger.deactivateApp(this); 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

     switch (requestCode) { 
      case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 


        Intent intent = new Intent(
          Intent.ACTION_PICK, 
          android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        intent.setType("image/*"); 
        startActivityForResult(
          Intent.createChooser(intent, "Select File"), 
          SELECT_FILE); 

       } else { 


       } 
       return; 
      } 

      case MY_PERMISSIONS_REQUEST_CAMERA: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { 


        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(intent, REQUEST_CAMERA); 

       } else { 


       } 
       return; 
      } 
      case MY_PERMISSIONS_REQUEST_CAMERA_VIDEO :{ 

       Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
       if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { 
        startActivityForResult(takeVideoIntent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE); 

       } 



      } 



      // other 'case' lines to check for other 
      // permissions this app might request 
     } 
    } 


} 
Các vấn đề liên quan