2016-05-23 10 views
0

電話からpdfを閲覧してから閲覧することが必要なアプリケーションを作成する必要があります(閲覧パーツが完成すると後で実行されます)。コードに問題があります。私はstackoverflowの上で見つかった、以下のリンクから行っているが、残念ながらそれは機能していない、 Browse and upload pdf or word file in Android はここ@CherryDTが指摘したように、startActivityForResult(intent, REQUEST_CODE_DOC);が欠落していたAndroidスタジオの電話からpdfを参照

import java.io.File; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Toast; 
import android.app.Activity; 
import android.content.ActivityNotFoundException; 
import android.content.Intent; 
import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import java.io.File; 
import java.net.URI; 
import java.net.URISyntaxException; 

public class MainActivity extends AppCompatActivity { 

Button btnAttach; 

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

    btnAttach = (Button) findViewById(R.id.button1);  
    //button1 is the id of the only button I have in my activity_main.xml 

    // view products click event 
    btnAttach.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      button1_OnClick(view); 
      // Launching All products Activity 

     } 
    }); 
} 


public void button1_OnClick(View view) { 
    getDocument(); 
} 


private void getDocument() { 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("application/msword,application/pdf"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    } 

} 
protected void onActivityResult (int req, int result, Intent data) 
{ 
    // TODO Auto-generated method stub 
    super.onActivityResult(req, result, data); 
    if (result == RESULT_OK) { 
     Uri fileuri = data.getData(); 
    String docFilePath = getFileNameByUri(this, fileuri); 
    } 
} 

// get file path 

private String getFileNameByUri(Context context, Uri uri) { 
    String filepath = "";//default fileName 
    File file; 
    if (uri.getScheme().toString().compareTo("content") == 0) { 
     Cursor cursor = context.getContentResolver().query(uri, new String[]{android.provider.MediaStore.Images.ImageColumns.DATA, MediaStore.Images.Media.ORIENTATION}, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 

     cursor.moveToFirst(); 

     String mImagePath = cursor.getString(column_index); 
     cursor.close(); 
     filepath = mImagePath; 

    } else if (uri.getScheme().compareTo("file") == 0) { 
     try { 
      file = new File(new URI(uri.toString())); 
      if (file.exists()) 
       filepath = file.getAbsolutePath(); 

     } catch (URISyntaxException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } else { 
     filepath = uri.getPath(); 
    } 
    return filepath; 
} 
} 
+1

"正常に動作しない"とは、正確に意味するもの(期待値と実際の結果、エラーメッセージなど)を定義してください。彼らは私が注文したクリスタル球を私に引き渡さなかった。 – CherryDT

+0

button1をクリックすると、何も起こりません。 –

+0

他のスレッドを見るだけで、実際に何かを行うには 'startActivityForResult(intent、REQUEST_CODE_DOC)​​;'がありません。加えて、中括弧には何か不思議なことがあります( 'getDocument'の中に浮遊する中括弧をチェックしてください)、最初にコンパイルされたのでしょうか? – CherryDT

答えて

0

私MainActivity.javaクラスです。追加して問題を修正しました。

関連する問題