Обмен файлами через другое приложение

Я хотел поделиться файлом через Google Drive. Поэтому, когда я нажимаю кнопку в моем приложении, оно должно загружать файл через приложение Google Drive на моем мобильном телефоне без необходимости выбора приложения пользователем. Ниже приведен код приложения, которое я сделал до сих пор.

public class MainActivity extends Activity {

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

        Button sharingButton = (Button)findViewById(R.id.button1);

        sharingButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            shareIt();
            }
            });

    }

    private void shareIt() {
        //sharing implementation here
        Intent i=new Intent(android.content.Intent.ACTION_SEND);
        i.setType("application/pdf");
        //i.putExtra(android.content.Intent.EXTRA_SUBJECT,"Subject test");
        //i.putExtra(android.content.Intent.EXTRA_TEXT, "extra text that you want to put");
        Uri uri = Uri.fromFile(getFileStreamPath("/storage/sdcard0/tweek/pdf.png"));
        i.putExtra(Intent.EXTRA_STREAM,uri);
        startActivity(Intent.createChooser(i,"Share via"));
        }

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

}

Поэтому, когда я нажимаю на кнопку, появляется следующая ошибка.

08-02 13:11:40.988: E/AndroidRuntime(25569): FATAL EXCEPTION: main
08-02 13:11:40.988: E/AndroidRuntime(25569): java.lang.IllegalArgumentException: File /storage/sdcard0/tweek/pdf.png contains a path separator
08-02 13:11:40.988: E/AndroidRuntime(25569):    at android.app.ContextImpl.makeFilename(ContextImpl.java:1921)
08-02 13:11:40.988: E/AndroidRuntime(25569):    at android.app.ContextImpl.getFileStreamPath(ContextImpl.java:945)
08-02 13:11:40.988: E/AndroidRuntime(25569):    at android.content.ContextWrapper.getFileStreamPath(ContextWrapper.java:182)
08-02 13:11:40.988: E/AndroidRuntime(25569):    at com.example.shareapp.MainActivity.shareIt(MainActivity.java:38)
08-02 13:11:40.988: E/AndroidRuntime(25569):    at com.example.shareapp.MainActivity.access$0(MainActivity.java:32)

Может кто-нибудь, пожалуйста, объясните мне. Я прошел много документов, но я запутался. Заранее спасибо.

1 ответ

Изменить это

Uri uri = Uri.fromFile(getFileStreamPath("/storage/sdcard0/tweek/pdf.png"));

в

Uri uri = Uri.fromFile(getFileStreamPath("file:///mnt/storage/sdcard0/tweek/pdf.png"));

или же

Uri.parse(new File("/mnt/storage/sdcard0/tweek/pdf.png"))

это должно решить вашу ошибку / ошибку

Другие вопросы по тегам