2014-09-20 149 views
0

我需要在[Android]手機啓動時啓動應用程序。
我編譯了這段代碼,應用程序沒有崩潰,但也沒有顯示任何東西!
現在我嘗試用吐司,但它仍然沒有找到。 有人可以幫我嗎?啓動完成時自動運行應用程序

這是主要活動:

package com.example.simplenotification; 

import android.app.Activity; 
import android.app.AlarmManager; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.NotificationCompat; 
import android.support.v4.app.NotificationManagerCompat; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.RemoteViews; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

private static final int MY_NOTIFICATION_ID = 0; 

private int mNotificationCount; 

private final CharSequence tickerText ="this is tickerText"; 
private final CharSequence contentTitle="this contentTitle"; 
private final CharSequence contentText="this coontentText"; 

private Intent mNotificationIntent; 
private PendingIntent mContentIntent; 

RemoteViews mContentView = new RemoteViews("com.example.simplenotification.StatusBarWithCustomView", R.layout.custom_view); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mNotificationIntent = new Intent(getApplicationContext(),AppGet.class); 
    mContentIntent = PendingIntent.getActivity(getApplicationContext(), 0, mNotificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); 
    final Button button = (Button) findViewById(R.id.button1); 


    button.setOnClickListener(new OnClickListener() { 


     public void onClick(View v){ 


      startNotification(); 


     } 



    }); 


} 


public void startNotification(){ 
    Intent notificationIntent = new Intent(getApplicationContext(), MainActivity.class); 
    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
      Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = 
      PendingIntent.getActivity(MainActivity.this, 0, notificationIntent, 0); 


    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext()) 
    .setTicker(tickerText) 
    .setSmallIcon(R.drawable.ic_launcher) 
    .setAutoCancel(true) 
    .setContentTitle("titolo content") 
    .setContentText("content text") 
    .setContentIntent(intent); 


    NotificationManagerCompat mNotificationManager = NotificationManagerCompat.from(getApplicationContext()); 
    mNotificationManager.notify(MY_NOTIFICATION_ID,notificationBuilder.build()); 
} 
} 

這個的Manifest.xml:

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

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


<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> 
    <receiver android:enabled="true" android:name=".BootUpReceiver" 
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 
</application> 

我不知道如何調試模擬器上的應用程序自動運行。對不起

編輯:我把另一大類reciever,改變了「機器人名」

package com.example.simplenotification; 

    import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class BootUpReceiver extends BroadcastReceiver { 
    @Override 
     public void onReceive(Context context, Intent intent) 
    { 
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
      Intent i = new Intent(); 
      i.setAction("android.intent.action.MAIN"); 
      context.startService(i); 
      Toast.makeText(context , "saranno 3?" , Toast.LENGTH_SHORT).show(); 

     } 

    } 

} 
+0

代碼太多!將它縮小一點,當你在它的時候,你得到的錯誤是什麼? – Cullub 2014-09-20 12:40:43

+0

將Receiver類作爲獨立的類而不是內部類。 – 2014-09-20 12:43:26

+0

是的,它看起來含糊不清,你需要一個'intent-filter'和一個'BroadcastReceiver',你有。我建議不要在模擬器上進行調試,坦率地說,我甚至不知道是否有辦法做到這一點(儘管如此)。 – 2014-09-20 12:43:56

回答

0

作出BootUpReceiver一個單獨的類。而在android:name烏爾包名的清單通過正確的路徑,同時定義接收器

<receiver android:name=".receivers.BootUpReceiver" 

更新 - >

在manisfest

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
+0

我已經分開了這兩個類,並嘗試啓動一個意圖,但它仍然沒有找到.. – Gabrio 2014-09-20 14:37:15

+0

你必須通過正確的包名稱,其中urUr BootUprecver類位於 2014-09-22 05:08:44

0

不是100%肯定還可以使用此權限,但嘗試改變這種做法

Toast.makeText(context , "saranno 3?" , Toast.LENGTH_SHORT).show(); 

分成

Toast.makeText(context.getApplicationContext() , "saranno 3?" , Toast.LENGTH_SHORT).show();