Android:从应用程序类启动新活动

Posted

技术标签:

【中文标题】Android:从应用程序类启动新活动【英文标题】:Android: Starting new Activity from Application Class 【发布时间】:2012-06-22 20:36:55 【问题描述】:

我有一个从应用程序类播放音频的 android 应用程序。我的应用程序类中有一个 PhoneStateListener,它在有电话时暂停音频。

我想在通话结束时开始一项特定的活动,但我做不到。这是我的代码:

public void getPhoneState()

TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
PhoneStateListener phoneStateListener = new PhoneStateListener() 
    @Override
    public void onCallStateChanged(int state, String incomingNumber) 

        if (state == TelephonyManager.CALL_STATE_RINGING) 
            if(audio.isPlaying())
               audioPlayer.pause();

         
            else if(state == TelephonyManager.CALL_STATE_IDLE) 

                audio.start();
                Intent missintent= new Intent(context,AudioActivity.class);
                missintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(missintent);


         
            else if(state == TelephonyManager.CALL_STATE_OFFHOOK) 

            if(audio.isPlaying())
            audioPlayer.pause();

        
        super.onCallStateChanged(state, incomingNumber);


    
;

if(mgr != null) 
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);



public boolean handleAudio(String source, int id) 

phoneState();
//Code for Playing Audio
.....
.....

如果有人能告诉我如何以正确的方式开始活动,我将不胜感激。

谢谢!

【问题讨论】:

我不确定在这个问题上的正确方法,因为我从来没有这样做过,也不知道你是否应该从应用程序类开始一个活动,因为你总是设置清单上的入口类,但考虑到您可以做到...您是否将活动添加到清单中? 我的活动已添加到清单中。不能从应用程序类启动活动吗? 我没说不是。我说我不知道​​,因为我从来没有这样做过,因为清单上已经有了 start 类,由意图定义: @RaghavShankar 我有一个非常相似的问题,你找到任何解决方案了吗? “但我做不到。” : 你需要告诉我们发生了什么。描述 + 日志 【参考方案1】:

好的,我知道您已经找到了另一种解决方案,但我正在努力研究它并找到了适合我的方法。我没有调用意图,而是使用了 pendingIntent、意图过滤器和待处理的帖子。这是其他有此问题的人的代码片段。

Context context = MyApplication.this.getApplicationContext();
Intent errorActivity = new Intent("com.error.activity");//this has to match your intent filter
errorActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 22, errorActivity, 0);
try 
    pendingIntent.send();
     
catch (CanceledException e) 
        // TODO Auto-generated catch block
    e.printStackTrace();
    

然后在你的清单中确保你为捕捉活动设置了意图过滤器

<activity
    android:name="UncaughtErrorDialogActivity"
    android:theme="@android:style/Theme.Dialog" >
    <intent-filter>
        <action android:name="com.error.activity" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

【讨论】:

以上是关于Android:从应用程序类启动新活动的主要内容,如果未能解决你的问题,请参考以下文章

无法从我的服务类(Android Lollipop)启动设备管理员活动

尝试启动新活动时,Android 应用程序崩溃

用于在Android中启动新活动的多个Intent标志

按钮无法启动新活动,而是返回到启动器活动 - android a

从服务访问应用程序类

ANDROID:从膨胀的弹出视图启动新活动