如何启动应用程序上下文的Intent

时间:2016-07-15 09:21:27

标签: android android-intent android-context

我发现了几乎相同的问题:How to start an Intent if context is not Activity Context but Application Context

但是我在使用https://stackoverflow.com/a/9238105/6593395

时会这样做
CREATE TABLE #A
    (

 value NUMERIC(22,6), Rank INT, Type VARCHAR(10)
 )
 INSERT INTO #A VALUES 
 (1.5, 5,'alpha'),
    (2.4,4,'alpha'),
    (3.6,3,'alpha'),
    (4.63,2,'alpha'),
    (5.36,1,'alpha')


SELECT [5],[4],[3],[2],[1]
FROM
  (select value,RANK,TYPE from #A ) AS     SourceTable
PIVOT
(
MAX(value)
FOR RANK IN ([1],[2],[3],[4],[5])
) AS PivotTable;

错误日志:

public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if ("android.intent.action.BOOT_COMPLETED".equals(action)) {
        Intent applicationIntent = new Intent(context, myCamApplication.class);
        applicationIntent.setAction(myCamApplication.class.getName());
        applicationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(applicationIntent);

我已将此myCamApplication类注册为AndroidManifest.xml中的应用程序类

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.fenchtose.asyncamera/com.eason.mycamera.myCamApplication}; have you declared this activity in your AndroidManifest.xml?

那么,任何人都可以提供帮助吗?

3 个答案:

答案 0 :(得分:2)

您无法启动Application类。您只能启动活动。

从例如:

更改您的代码
Intent applicationIntent = new Intent(context, myCamApplication.class);

Intent applicationIntent = new Intent(context, myCam.class);

答案 1 :(得分:1)

尝试创建其他活动并将其添加到Manifest.xml并查看是否有任何错误,不要忘记添加此代码<activity android:name=".yourSecondActivity" />并开始新的Intent

答案 2 :(得分:0)

这里的问题是你不了解基本原则。在android中你只有4个组件:Activity,Service,ContentProvider,BroadcastReceiver。因此,在您的清单中,您声明您拥有应用程序(名称,属性......),并且在应用程序中您拥有活动,服务,接收者,内容提供者。

您的应用程序不是您的Application类。因此,要启动应用程序,您应该启动默认活动:

Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//because we use Application context
startActivity(intent);

P.S。您的Application类将自动启动。应用程序的生命周期如下: 应用程序类的开始 - &gt;组件的开始(服务,活动......) - &gt;组件停止(服务...) - &gt;停止申请类

P.S.S。 没有必要检查onReceive中的操作 - 它将出于唯一的原因:

<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>