小编kin*_*ori的帖子

移动到youtube应用程序时,Youtube SDK与DeadObjectException崩溃

我的应用使用Youtube Android SDK提供youtube视图.没有问题显示视频但在打开youtube应用程序时崩溃与DeadObjectException.

我的代码如下

//init
FragmentTransaction fragmentTransaction = fm.beginTransaction();

YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment();
fragmentTransaction.replace(R.id.fragmentz, fragment);
fragmentTransaction.commit();

fragment.initialize(Constants.YOUTUBE_DEV_KEY, this);

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, final YouTubePlayer youTubePlayer, boolean wasRestored) {
    if (!wasRestored) {
        this.youTubePlayer = youTubePlayer;
        this.youTubePlayer.setShowFullscreenButton(true);
        try {
            this.youTubePlayer.loadVideo(youtubeLink);
            //other stuff
        } catch (IllegalStateException e) {
            Logger.e(e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当1)直接通过意图移动到youtube应用程序或2)通过播放器视图上的youtube图标移动到youtube应用程序时崩溃

崩溃日志如下所示

java.lang.IllegalStateException: android.os.DeadObjectException
        at com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.u(SourceFile:506)
        at com.google.android.apps.youtube.api.jar.a.a.t(SourceFile:467)
        at com.google.android.youtube.player.internal.h.onTransact(SourceFile:392)
        at android.os.Binder.transact(Binder.java:361)
        at com.google.android.youtube.player.internal.d$a$a.r(Unknown Source)
        at com.google.android.youtube.player.internal.s.h(Unknown Source)
        at com.google.android.youtube.player.YouTubePlayerView.e(Unknown Source)
        at com.google.android.youtube.player.YouTubePlayerSupportFragment.onSaveInstanceState(Unknown Source)
        at android.support.v4.app.Fragment.performSaveInstanceState(Fragment.java:1647)
        at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1610)
        at …
Run Code Online (Sandbox Code Playgroud)

android youtube-api android-youtube-api

14
推荐指数
1
解决办法
3368
查看次数

如果仅在活动从通知开始时从最近的应用程序中选择应用程序,则app会重新启动

我的应用有如下所示的活动堆栈

  • 答:装载活动
  • B:主要活动
  • C:详细活动

和清单是这样的

<activity A>
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
<activity B android:launchMode="singleTask"/>
<activity C/>
Run Code Online (Sandbox Code Playgroud)

当我从启动器启动应用程序时,它充当A - > B - > C.在活动C按主页按钮并从最近的应用程序列表中调出(长按Home),显示C. 还行吧.

但是当我从Notification启动app时,因为我不想显示加载屏幕,所以启动活动B.因此,用户可以导航B - > C.

但是当用户在活动C按Home并从最近的应用列表中选择应用时,B将重新启动并且不会保留状态.所以C活动总是消失.

我尝试了很多标志选项,但我找不到解决方案.我想要的是,该应用程序的行为就像用户从启动器启动应用程序一样.

我创建了这样的通知的待处理意图.在我的应用程序中,我应该Intent.FLAG_ACTIVITY_CLEAR_TOP用于活动B.

Notification notice = new Notification(R.drawable.icon_notification, context.getString(R.string.app_name), System.currentTimeMillis());

Intent intent = new Intent(context, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtras(i);

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)

我认为最近的应用程序列表通过通知发送相同的意图,因此始终调用活动B. 但是当我从启动器启动应用程序时,它只是将我发送到最后一个活动C,而不是B.

请帮助我.:(

UPDATE

我已经解决了这个问题,如下所示.

  • 添加具有不同任务关联的新活动D. 此活动刚开始B(主要活动)
  • 在通知中,开始活动D.
  • 在活动D中,使用一些标志启动活动B并完成自身
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)  != 0 ) {
  i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_NEW_TASK); …
Run Code Online (Sandbox Code Playgroud)

android android-notifications

6
推荐指数
2
解决办法
2411
查看次数

如何在动作栏menuItem之前删除divider,它只包含文本?

我想删除ActionBar之前的短分隔符,MenuItem其中包含"withText"选项.

我尝试了许多不同的主题设置,但失败了.

有没有解决方案可以删除它?

这是我的主题xml.

 <style name="my_actionbar" parent="@style/Widget.Sherlock.Light.ActionBar.Solid">
    <item name="android:background">@drawable/actionbar_bg</item>
    <item name="background">@drawable/actionbar_bg</item>
    <item name="android:actionBarDivider">@null</item>
    <item name="actionBarDivider">@null</item>
    <item name="android:showDividers">none</item>
    <item name="android:dividerVertical">@null</item>
    <item name="android:dividerPadding">0dp</item>
    <item name="android:divider">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock

5
推荐指数
1
解决办法
6262
查看次数

请求新sdk的其他权限,但对话框显示登录表单

在之前的android SDK中,我通过调用询问了新的权限,Facebook.authorize()并显示了批准权限屏幕.但是在SDK 3.0中,当我调用时FacebookActivity.openSessionForPublish(),对话框总是显示登录表单.如何显示批准权限屏幕?

我已经设置了具有令牌和到期日期的会话,其SessionState是CREATED_TOKEN_LOADED.

是否要求显示权限对话框或Facebook.authorize()始终显示登录表单?那么请教我正确的方法.

我的代码如下

 public class FbConn extends FacebookActivity {
    public void onCreate(Bundle savedInstanceState) {
       ...
       if( savedInstanceState == null ) {
          Session savedSession = CommonUtil.getFbSession(CustomSessionStore.getFbInfo(getApplicationContext())); //get access token and expiration date from session store and set up new session.
          Session.setActiveSession(savedSession); 
          setSession(savedSession);
       }

    }

    protected void onStart() {
       super.onStart();
       openSessionForPublish(EpisodeApplication.config.getSelectedServer().fbAppId, Constants.FB_PERMISSIONS);
    }

 }
Run Code Online (Sandbox Code Playgroud)

更新

我已经注释掉了这些行,并且权限请求屏幕显示成功.但我不确定这是否正确.

com.facebook.LoginActivity第62行,

Utility.clearFacebookCookies(this);
Run Code Online (Sandbox Code Playgroud)

com.facebook.Session第1202行,

Utility.clearFacebookCookies(getStaticContext());
Run Code Online (Sandbox Code Playgroud)

permissions facebook-android-sdk

0
推荐指数
1
解决办法
6580
查看次数