1

ウィジェットがクリックされた場合、アクティビティを開こうとしています。ただし、パッケージをエミュレーターにアップロードすると、ウィジェットをクリックした場合にのみ開くはずなのに、アクティビティーが自動的に開きます。

これは私のマニフェストファイルです。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.NewsWidget"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <service android:name=".UpdateWidgetService" >
        </service>

        <receiver android:name="MyWidgetProvider" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/widget_info" />
        </receiver>
         <activity
            android:name="com.example.NewsWidget.MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleInstance" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".DetailedNewsViewer"
            android:label="DetailedNewsViewer" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-sdk android:minSdkVersion="8" />

    <uses-permission android:name="android.permission.INTERNET" />

</manifest>

ここにある別の質問(ウィジェットからのアクティビティの起動)の詳細を使用して、ウィジェットプロバイダーに次のコードを追加しました。

 Intent i = new Intent(); 
        i.setClassName("com.example.NewsWidget", "com.example.NewsWidget.MainActivity"); 
        PendingIntent myPI = PendingIntent.getService(context, 0, i, 0); 
        //intent to start service 

      // Get the layout for the App Widget 
      RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); 

      //attach the click listener for the service start command intent 
      views.setOnClickPendingIntent(R.id.update, myPI); 

      //define the componenet for self 
      ComponentName comp = new ComponentName(context.getPackageName(), MyWidgetProvider.class.getName()); 

      //tell the manager to update all instances of the toggle widget with the click listener 
      mgr.updateAppWidget(comp, views); 

何が問題ですか ?

4

1 に答える 1

1

PendingIntent.getService()(マニフェストごとに)サービスではなくアクティビティを使用していることに気づきました。代わりに使用してみてPendingIntent.getActivity()、pendingIntentが起動するかどうかを確認してください。

あなたの主な活動はあなたが日食から走るときにロードすることです、しかしedthethirdは正しいです、それはおそらくあなたの問題とは関係がありません。これは、メインアクティビティを起動するためのデフォルトのEclipse動作です。

于 2013-02-05T01:04:06.497 に答える