[leanback] support uri

pull/137/head
FongMi 3 years ago
parent 6081fdc9ac
commit 3c0e053e01
  1. 17
      app/src/leanback/AndroidManifest.xml
  2. 20
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  3. 18
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  4. 0
      app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java

@ -37,6 +37,23 @@
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="video/*" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:scheme="http" />
<data android:scheme="smb" />
</intent-filter>
</activity>
<activity

@ -1,8 +1,10 @@
package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.text.Html;
import android.util.TypedValue;
import android.view.KeyEvent;
@ -13,6 +15,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.leanback.widget.ItemBridgeAdapter;
import androidx.leanback.widget.OnChildViewHolderSelectedListener;
@ -54,16 +57,19 @@ import com.fongmi.android.tv.ui.presenter.ParsePresenter;
import com.fongmi.android.tv.ui.presenter.PartPresenter;
import com.fongmi.android.tv.ui.presenter.SearchPresenter;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.net.OkHttp;
import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
@ -104,6 +110,20 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private Runnable mR1;
private Runnable mR2;
public static void push(FragmentActivity activity, Uri uri) {
if (uri.getScheme().startsWith("smb") || uri.getScheme().startsWith("http")) {
push(activity, uri.toString(), true);
} else {
file(activity, FileChooser.getPathFromUri(activity, uri));
}
}
public static void file(FragmentActivity activity, String path) {
String name = new File(path).getName();
if (Utils.hasPermission(activity)) start(activity, "push_agent", "file://" + path, name, true);
else PermissionX.init(activity).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> start(activity, "push_agent", "file://" + path, name, true));
}
public static void cast(Activity activity, History history) {
start(activity, history.getSiteKey(), history.getVodId(), history.getVodName(), true, true);
}

@ -1,5 +1,7 @@
package com.fongmi.android.tv.ui.activity;
import android.content.Intent;
import android.net.Uri;
import android.view.KeyEvent;
import android.view.View;
@ -68,6 +70,12 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
return mBinding = ActivityHomeBinding.inflate(getLayoutInflater());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
checkAction(intent);
}
@Override
protected void initView() {
mBinding.progressLayout.showProgress();
@ -91,6 +99,15 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
});
}
private void checkAction(Intent intent) {
boolean push = ApiConfig.hasPush() && intent.getAction() != null;
if (push && intent.getAction().equals(Intent.ACTION_SEND) && intent.getType().equals("text/plain")) {
DetailActivity.push(this, Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT)));
} else if (push && intent.getAction().equals(Intent.ACTION_VIEW)) {
DetailActivity.push(this, intent.getData());
}
}
private void setRecyclerView() {
CustomSelector selector = new CustomSelector();
selector.addPresenter(Integer.class, new HeaderPresenter());
@ -128,6 +145,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override
public void success() {
mBinding.progressLayout.showContent();
checkAction(getIntent());
getHistory();
getVideo();
setFocus();

Loading…
Cancel
Save