应用程序抛出错误的原因未知

时间:2015-08-03 14:22:30

标签: android google-cloud-messaging android-manifest

我有一个应用程序,之前工作正常但最近没有运行。

在它只有离线功能之前,最复杂的是本地通知 - 但我需要为其添加GCM功能。我搜索了答案,但这很难理解。

我试图复制我见过的教程代码。我了解到我需要一个名为- url: /(.+\.php)$ script: \1 secure: always 的东西,但我不知道从哪里得到它。然后我测试了我的应用程序,当然有错误,因为我没有GCMRegistrar

我所做的是将代码包含在注释块中并再次运行应用程序。那时我的应用程序不再运行了。经过几天的这次不幸事故,我决定创建另一个应用程序,我将把我的应用程序的所有离线功能。在复制和粘贴之后,我尝试运行我的新应用程序,但它也不会运行。

我已经搜索了修复方法,并找到了一些修复方法。这些修复程序适用于其他应用程序,但不适用于我的新应用程序。

这是我的gcmregistrar,这个有本地通知

MainActivity.java

这是我的androidmanifest

package com.example.mypower_build101;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    Button addDevice, showDevice, showDialog;
    String[] arrContentTxt;
    final Context ctx = this;
    int notifCount;
    int x = 0;
    Handler notifLauncher, notifStopper;
    String contentTxt;
    Resources res = getResources();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        addDevice = (Button)findViewById(R.id.btnAddDevice);
        showDevice = (Button)findViewById(R.id.btnShowDevice);
        showDialog = (Button)findViewById(R.id.btnShowDialog);

        arrContentTxt = res.getStringArray(R.array.notifContentText);
        //contentTxt = arrContentTxt[1];
        showDialog.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                /*DialogFragment diag = new SwitchCheckChange();
                diag.show(getFragmentManager(), "cbo Click");*/
                showNotif();
            }

        });
        useNotifLauncher();
        useNotifStopper();
    }
    public void useNotifLauncher(){
        notifLauncher = new Handler();
        notifLauncher.postDelayed(runNotif, 50000);
    }

    public Runnable runNotif = new Runnable(){

        @Override
        public void run() {
            showNotif();
            notifLauncher.postDelayed(runNotif, 50000);
        }

    };

    public void useNotifStopper(){
        notifStopper = new Handler();
        notifStopper.postDelayed(stopNotif, 40000);
    }
    public Runnable stopNotif = new Runnable(){

        @Override
        public void run() {

            cancelNotification(x);
            notifStopper.postDelayed(stopNotif, 40000);
        }

    };
    public void addClick(View v){
        Intent i = new Intent(this, AddDeviceForm.class);
        startActivity(i);
    }
    public void showClick(View v){
        Toast.makeText(getBaseContext(), "Please wait...", Toast.LENGTH_LONG).show();
        Intent i = new Intent(this, ListViewForm.class);
        startActivity(i);
    }

    public void showNotif(){
        Uri notifSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        Intent i = new Intent(MainActivity.this, NotifReceiver.class);
        PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, i, 0);

        //String[] notifTitle = R.array.notifTitle;
        Notification notif = new Notification.Builder(this)
            .setContentTitle("MyPower Reminder")
            .setContentText("Unplug unused appliances and chargers")
            //.setContentText(contentTxt)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(pi)
            .setSound(notifSound)

            .addAction(0, "View Full Reminder", pi)
            .build();

        NotificationManager notifMgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        notifMgr.notify(0, notif);
    }

    public void cancelNotification(int notificationId){

        if (Context.NOTIFICATION_SERVICE!=null) {
            String ns = Context.NOTIFICATION_SERVICE;
            NotificationManager nMgr = (NotificationManager) getApplicationContext().getSystemService(ns);
            nMgr.cancel(notificationId);
        }
    }
}

我没有把所有东西都放在这里,因为它会很冗长,我认为这些问题可能出现在<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mypower_build101" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".AddDeviceForm" android:label="@string/title_activity_add_device_form" > </activity> <activity android:name=".ListViewForm" android:label="@string/title_activity_list_view_form" > </activity> <activity android:name=".NotifReceiver" android:label="@string/title_activity_notif_receiver" > </activity> </application> </manifest> 或Android清单上。

如果你可以教我如何使用非常非常非常感谢的gcm。

1 个答案:

答案 0 :(得分:0)

嗨,大家好因为某些原因我的帖子有错误所以请使用并查看此文档。这是文档链接

https://www.dropbox.com/s/tc2j2a2pan53r96/Ricky%20Manalo%20LogCat%20Log.docx?dl=0