2016-08-27 4 views
0

私のギャラリーの動画を自分のアプリに関連付けようとしています。 そのビデオを検索するアクティビティを開くと、そのアクティビティから結果が得られますが、このアクティビティから出て同じビデオに再びアクセスしようとすると、ビデオ。 私は最初の瞬間にそれを見ることの許可が一時的なものであることを知っています。私はそれを永続的にしたいので、いつでもそれらのビデオにアクセスできます。 注目をいただきありがとうございます! この私が私のビデオURIを使用してビデオを再オープンするにはどうすればいいですか? Android

addVideoLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.INTERNAL_CONTENT_URI); 
      i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
      startActivityForResult(i, Constants.PICK_VIDEO); 
     } 
    }); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == Constants.PICK_VIDEO && resultCode == RESULT_OK) { 
     mVideoPath = data.getData().toString(); 
     addVideoText.setVisibility(View.GONE); 
     videoView.setVideoPath(mVideoPath); 
     videoView.start(); 
     videoView.setBackground(null); 
    } 
} 

を検索するために使用し、これはマニフェストでコード:

<?xml version="1.0" encoding="utf-8"?> 

<permission android:name="org.example.android.guitarHelper.provider.READWRITE"/> 
<uses-permission android:name="org.example.android.guitarHelper.provider.READWRITE"/> 


<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="Guitar Helper" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".EditSongActivity" 
     android:label="@string/title_activity_new_song" 
     android:parentActivityName=".MainActivity" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.danielspeixoto.guitarhelper.MainActivity" /> 
    </activity> 
    <activity 
     android:name=".RemindersActivity" 
     android:label="Reminders" 
     android:parentActivityName=".MainActivity" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.danielspeixoto.guitarhelper.MainActivity" /> 
    </activity> 
    <activity 
     android:name=".AddSongActivity" 
     android:label="Add Song" 
     android:parentActivityName=".MainActivity" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.danielspeixoto.guitarhelper.MainActivity" /> 
    </activity> 
    <activity 
     android:name=".SearchActivity" 
     android:label="@string/title_activity_search" 
     android:theme="@style/AppTheme.NoActionBar"></activity> 
    <provider android:name="com.example.danielspeixoto.guitarhelper.GuitarProvider" 
     android:authorities="com.example.danielspeixoto.guitarhelper.provider" 
     android:exported="true" 
     android:readPermission="com.example.danielspeixoto.guitarhelper.provider.READWRITE" 
     android:writePermission="com.example.danielspeixoto.guitarhelper.READWRITE"/> 

</application> 

答えて

0

URIの権限を永続化することでのみ可能ですAndroid 4.4以降。そして、他のアプリケーションがそれをサポートしている場合でも。 ContentResolver.takePersistableUriPermission()およびIntent.FLAG_GRANT_PERSISTABLE_URI_PERMISSIONのドキュメントを参照してください。

ただし、一時URIのアクセス許可を別のアクティビティに渡すことができます。そのために、受け取ったコンテンツURIを、2番目のアクティビティを開始するために使用されたインテントのデータフィールドに置きます。次に、インテントにFLAG_GRANT_READ_URI_PERMISSIONを追加します。

MediaStoreを使用しており、既に外部ストレージを読み取る権限を持っているので、外部ストレージ上のファイルへのパスを取得することもできます。 「mediastoreからuriからファイル名とパスを取得する」という質問については、this answerを参照してください。