0

Android アプリに phonegap 2.5.0 を使用しています。これで、意図的に通知を有効にしています。余分なデータを持つインテント。通知コードは以下のとおりです。

Notification notification = new Notification(icon, contentTitle, when);
// Vibrate if vibrate is enabled
    notification.defaults |= Notification.DEFAULT_VIBRATE;

    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    Intent notificationIntent = new Intent(this, MainActivity.class);
    notificationIntent.putExtra("notificationType", "updateAvailable");
    notificationIntent.putExtra("updateUrl", updateUrl);
    notificationIntent.putExtra("updateVersion", updateVersion);
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
int requestID = (int) System.currentTimeMillis();
    PendingIntent contentIntent = PendingIntent.getActivity(this, requestID, notificationIntent, 0);
    //PendingIntent contentIntent = PendingIntent.getActivity(this, requestID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    notification.setLatestEventInfo(this, contentTitle, contentText, contentIntent);

    NotificationManager nm = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
    nm.notify(1, notification);

上記の生成された通知は、Android アプリの mainactivity を呼び出します。MainActivity スクリプトは以下のとおりです。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();

    Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    String notificationType = intent.getStringExtra("notificationType");

    if(extras != null)
    {
        if(extras.getString("notificationType").equals("updateAvailable"))
        {
            String updateUrl = extras.getString("updateUrl");
            String updateVersion = extras.getString("updateVersion");
            super.loadUrl("file:///android_asset/www/update.html?updateVersion="+updateVersion+"&updateUrl="+updateUrl);
        }else
            startMyApp();
    }else
    {
        startMyApp();
    }           
}

アプリケーションを起動するコードを持つ startMyApp 関数 (アプリケーション アイコンを使用してアプリケーションを直接開いているときにのみ呼び出されます)。

しかし、コードが機能しません。アプリケーションが動作しない (つまり、アプリケーション アイコンをクリックしてもアプリケーションが開かない) 残念ながら停止しました アプリケーション エラーが表示され、アプリケーションが閉じられました。oncreate 関数からインテント受信コンテンツを削除し、onCreate アプリケーションから呼び出された startMyApp() 関数のみが正常に開始された場合。

通知付きのデータを MainActivity に渡すのを手伝ってください。startMyApp() のコードは以下のとおりです

public void startMyApp()
{
    super.loadUrl("file:///android_asset/www/dashboard.html");
}
4

1 に答える 1