Android TV用のアプリを作成したいので、AndroidスタジオでデフォルトのAndroid TVアクティビティをプロジェクトのテンプレートとして使用していますVideoDetailsFragmentでは、このボタンは、パッケージマネージャがセカンダリアクティビティがアクティブであることを検出した後にのみ表示されます。Android LeanbackアプリのVideoDetailsFragmentからgetPackageManager GetActivityInfoにアクセスできません
二次アクティビティがアクティブで実行中であることがパッケージマネージャによって検出された場合、無効にするボタンが表示され、アクティビティが無効になっている場合は有効にするボタンが表示されますが...パッケージマネージャは取得できませんアクティビティの名前、実際にパッケージやアクティビティの名前を取得することはできません。常にNameNotFoundException
の両方のアクティビティを表示するようにします。android:name="android.intent.action.MAIN"
はマニフェストです。ランチャから両方の起動インテントを追加したいので、アクティビティのラベルはandroid:enabled="false"
です.VideoDetailsFragmentに挿入するボタンは、そのアクティビティを有効または無効にするためのものです。ここで
は私のマニフェストです:ここでは
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.Leanback">
<activity
android:name=".MainActivity"
android:banner="@mipmap/banner"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:logo="@mipmap/banner"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailsActivity" />
<activity android:name=".PlaybackOverlayActivity" />
<activity android:name=".BrowseErrorActivity" />
<activity android:name=".SecondaryActivity"
android:icon="@mipmap/ic_launcher"
android:banner="@mipmap/banner"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
</application>
はVideoDetailsFragmentコードです:
private void setupDetailsOverviewRow() {
Log.d(TAG, "doInBackground: " + mSelectedMovie.toString());
final DetailsOverviewRow row = new DetailsOverviewRow(mSelectedMovie);
row.setImageDrawable(getResources().getDrawable(R.drawable.default_background));
int width = Utils.convertDpToPixel(getActivity()
.getApplicationContext(), DETAIL_THUMB_WIDTH);
int height = Utils.convertDpToPixel(getActivity()
.getApplicationContext(), DETAIL_THUMB_HEIGHT);
Glide.with(getActivity())
.load(mSelectedMovie.getCardImageUrl())
.centerCrop()
.error(R.drawable.default_background)
.into(new SimpleTarget<GlideDrawable>(width, height) {
@Override
public void onResourceReady(GlideDrawable resource,
GlideAnimation<? super GlideDrawable>
glideAnimation) {
Log.d(TAG, "details overview card image url ready: " + resource);
row.setImageDrawable(resource);
mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size());
}
});
/******************************/
/*HERE IS THE PROBLEMATIC CODE*/
/******************************/
PackageManager pm = getActivity().getPackageManager();
ComponentName cn = new ComponentName(getActivity(), "com.valecast.myapp.SecondaryActivity");
ActivityInfo info = pm.getActivityInfo(cn, 0); //<===IT NEVER LOCATE THIS
if (info != null && info.enabled) {
// Component is enabled
row.addAction(new Action(ACTION_BUY, "it works"));
} else {
// Component is disabled
row.addAction(new Action(ACTION_BUY, "it doesn't"));
}
/******************************/
row.addAction(new Action(ACTION_WATCH_TRAILER, getResources().getString(
R.string.watch_trailer_1), getResources().getString(R.string.watch_trailer_2)));
row.addAction(new Action(ACTION_RENT, getResources().getString(R.string.rent_1),
getResources().getString(R.string.rent_2)));
row.addAction(new Action(ACTION_BUY, getResources().getString(R.string.buy_1),
getResources().getString(R.string.buy_2)));
mAdapter.add(row);
}
そして、ここでは、エラーのショーのスクリーンショットですアンドロイドtudio:
ここでは、提案の答えの一つを示す別のスクリーンショットですが、それはどちらも動作しません。
私は、tryキャッチにそれを包んだ、しかし、ときに私私のアプリを実行すると、常にAndroidモニターにNameNotFoundException
が投げ込まれます。
私は間違っていますか?
new ComponentName("com.valecast.myapp", "com.valecast.myapp.SecondaryActivity");
とトライキャッチがあります:
はありがとうを、どちらもそのように動作しないように思われません、私は私の質問を更新しました2回目のスクリーンショットがあります。 –
あなたはそれを試しにキャッチする必要があります – petrumo
もう一度同じエラーが表示されましたが、今回はアンドロイドモニター –