0

因此無法正確配置或運行。在通知被按下時創建一個動作,Android

嘗試獲取通知以打開MainActivity3文件,然後讓它運行我想要的任何內容,只需在它的目標是播放聲音。

完全新的Android開發,但認爲我沿着正確的路線。 你會看到我有兩種方法,但不能得到任何工作。

MainActivity.java

package com.example.firstapp; 

import android.media.MediaPlayer; 
//import android.media.RingtoneManager; 
import android.os.Bundle; 
import android.os.Vibrator; 
import android.app.Activity; 
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.content.IntentFilter; 
import android.support.v4.app.NotificationCompat; 
import android.view.Menu; 
//import android.app.*; 
import android.view.*; 
import android.widget.*; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //vibrate controls 

    //Notification 
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) 
     .setSmallIcon(R.drawable.follownavi) 
      .setContentTitle("Hey") 
      .setContentText(""); 

    PendingIntent pendingIntent; 
    //Intent intent = new Intent(); 

    Intent intent= new Intent(MainActivity3.onNewIntent(), MainActivity3.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    //intent.setClass(getApplicationContext(),MainActivity3.class); 
    pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); 
    mBuilder.addAction(R.drawable.follownavi,"LISTEN",pendingIntent); 
    mBuilder.setContentIntent(pendingIntent); 

    NotificationManager notificationManager = (NotificationManager)  getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(1, mBuilder.build()); 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    //get touch location 
    int x = (int)event.getX(); 
    int y = (int)event.getY(); 
    //put on screen 
    TextView tester = (TextView) findViewById(R.id.textView1); 
    tester.setText("this is x:" + x + " and this is y:" + y); 

    //move image 
    ImageView iv = (ImageView) findViewById(R.id.NaviFollow); 

    if(y > 222) 
    { 
    iv.setX(x - 125); 
    iv.setY(y - 350); 


    //cause vibration 
    Vibrator v = (Vibrator) getSystemService(VIBRATOR_SERVICE); 
    v.vibrate(300); 
    } 

return true; 
} 



} 

一旦通知被調用,它的出現意味着運行這個文件 MainActivity3

package com.example.firstapp; 


import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 

public class MainActivity3 extends Activity { 

protected Context onNewIntent() 
{ 
MediaPlayer mp2 = MediaPlayer.create(getApplicationContext(), R.raw.listen); 
mp2.start(); 
return null; 


} 
} 

的錯誤似乎是呼叫是靜態的,但它想無效,非常困惑 錯誤代碼

無法對非靜態方法onNewIntent()返回靜態引用米類MainActivity3 MainActivity.java/firstApp/src目錄/ COM /例子/ firstapp線38

,如果我改變方法,以適應那麼媒體播放器getApplicationContext做更多的研究後,不會工作

我覺得清單威力停止它,但仍然不確定Android的結構。

清單

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.firstapp" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-permission android:name="android.permission.VIBRATE"/> 
<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="17" /> 


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



<application 
    android:allowBackup="true" 
    android:icon="@drawable/navibutton" 
    android:label="Navi" 
    android:theme="@style/AppTheme" > 



    <activity 
     android:name="com.example.firstapp.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> 

</manifest> 

請幫助儘可能變得非常boged下來,不自禁地放棄

+0

你知道,它應該叫acitivity3當你點擊的通知,當它出現呢?對於通知,最好使用getApplicationContext,而不是getBaseContext。 – 2013-02-12 17:51:05

+0

是的,我希望它在通知被點擊時調用它,我嘗試改變爲getApplicationContext,但不知道我明白它有什麼不同。基本上,當點擊通知要從MainActivity3運行一個函數 – user1524122 2013-02-12 18:11:52

回答

0

你是不是用的PendingIntent做任何事情。你應該將它設置在通知生成器生成調用()之前

mBuilder.setContentIntent(pendingIntent); 

你也必須意識到,建立一個新的活動和的onCreate做的事情是不是用於執行操作的好主意。如果你想要,例如在同一個活動中顯示一個敬酒,你可以在Intent中設置特定的數據,並在onNewIntent()中執行。 接受的答案有一個配置處理新意向的例子。

Android: new Intent() starts new instance with android:launchMode="singleTop"

+0

ok沒有真正幫助,我認爲它現在正在拾取正確的文件和正確的方法/函數,但是它們的聲明有問題。目前MainActivity中的通知構造函數是 – user1524122 2013-02-13 13:10:49

相關問題