Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java /Android/使用保存的字符串路径播放视频_Java_Android_Video - Fatal编程技术网

Java /Android/使用保存的字符串路径播放视频

Java /Android/使用保存的字符串路径播放视频,java,android,video,Java,Android,Video,我是Android编程新手。我目前正在做一个类似视频播放器的应用程序,但有一个问题。该应用程序如下所示: 我选择一个视频 视频路径将使用putString保存(函数)?正如您可以看到下面的代码 单击“播放”按钮时,将播放视频 现在,当我重新启动应用程序时,视频路径仍然保存,但如果我单击“播放”按钮,android将显示错误,“无法播放此视频”,因此我需要再次单击视频 我希望在我的应用程序中,即使你关闭应用程序,我也不需要在重新启动时选择要播放的视频。我想让它播放保存路径的视频。我希望这是可能

我是Android编程新手。我目前正在做一个类似视频播放器的应用程序,但有一个问题。该应用程序如下所示:

  • 我选择一个视频
  • 视频路径将使用putString保存(函数)?正如您可以看到下面的代码
  • 单击“播放”按钮时,将播放视频
  • 现在,当我重新启动应用程序时,视频路径仍然保存,但如果我单击“播放”按钮,android将显示错误,“无法播放此视频”,因此我需要再次单击视频
我希望在我的应用程序中,即使你关闭应用程序,我也不需要在重新启动时选择要播放的视频。我想让它播放保存路径的视频。我希望这是可能的

以下是主要活动代码:

public class MainActivity extends Activity {

  AlarmManager alarmManager;
  private static int RESULT_LOAD_IMAGE = 1;
  private static final int MY_INTENT_CLICK=302;
  private PendingIntent pendingIntent;
  private static MainActivity inst;
  String meduri;


 public static MainActivity instance() {
      return inst;
 }

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

    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    meduri = prefs.getString("key", "");

    Button chs = (Button) findViewById(R.id.choose);
    chs.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            chooseMed();
        }
    });
}

public void chooseMed(){
    final Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);
    galleryIntent.setType("video/*");
    startActivityForResult(galleryIntent, RESULT_LOAD_IMAGE);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(data != null) {
        setVid(data.getDataString());
    }
}

public void setVid(String uriq){
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("key", uriq);
    editor.apply();
    meduri = uriq;
}

public void playvid(){
    VideoView vdeo = (VideoView) findViewById(R.id.videoview);
    vdeo.setVisibility(View.VISIBLE);
    vdeo.setVideoURI(Uri.parse(meduri));
    vdeo.setMediaController(new MediaController(this));
    vdeo.requestFocus();
    vdeo.start();
}
}


我希望你能帮我解决我的问题

您从
ACTION\u get\u CONTENT
返回的
Uri
不需要长时间可用。您可以临时访问其内容,但可能无法永久访问

这与Web开发非常相似。URL可能是您以后可以保存和使用的内容,但如果服务器需要会话cookie或其他形式的用户身份验证/授权,则该URL可能在将来不可用

如果您使用Android 4.4+上提供的存储访问框架,您可以请求持久
Uri
权限,如果授予该权限,您将能够长期访问内容。那些
Uri
值可以保存并在以后使用