2012-09-27 31 views
0

我有一個活動下面的代碼向用戶發送到不同的應用程序:發送用戶到另一個應用程序

public void goBack(View v) { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.setComponent(new ComponentName("com.example.android.lifecycle", "com.example.android.lifecycle.DialogActivity")); 
    startActivity(intent); 
} 

該應用程序的清單文件是:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.lifecycle" 
    android:versionCode="1" 
    android:versionName="1.0"> 

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> 
<application android:label="@string/app_name" 
      android:icon="@drawable/ic_launcher"> 

    <activity android:name=".ActivityA" 
     android:launchMode="singleTask"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <action android:name="com.example.android.lifecycle" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".ActivityB" /> 

    <activity android:name=".ActivityC" /> 

    <activity android:name=".DialogActivity" 
       android:theme="@android:style/Theme.Dialog"> 
     <action android:name="com.example.android.lifecycle" /> 
     <action android:name="android.intent.action.MAIN" />    
    </activity> 

</application> 
</manifest> 

然而,當我點擊應該發送給新應用程序的按鈕時,我收到一條消息 - 應用程序意外停止。請再試一次。

我在做什麼錯,我該如何糾正?

謝謝!

09-27 14:08:42.763: E/AndroidRuntime(286): FATAL EXCEPTION: main 
09-27 14:08:42.763: E/AndroidRuntime(286): java.lang.IllegalStateException: Could not execute method of the activity 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.view.View$1.onClick(View.java:2072) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.view.View.performClick(View.java:2408) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.view.View$PerformClick.run(View.java:8816) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.os.Handler.handleCallback(Handler.java:587) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.os.Looper.loop(Looper.java:123) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-27 14:08:42.763: E/AndroidRuntime(286): at java.lang.reflect.Method.invokeNative(Native Method) 
09-27 14:08:42.763: E/AndroidRuntime(286): at java.lang.reflect.Method.invoke(Method.java:521) 
09-27 14:08:42.763: E/AndroidRuntime(286): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-27 14:08:42.763: E/AndroidRuntime(286): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-27 14:08:42.763: E/AndroidRuntime(286): at dalvik.system.NativeStart.main(Native Method) 
09-27 14:08:42.763: E/AndroidRuntime(286): Caused by: java.lang.reflect.InvocationTargetException 
09-27 14:08:42.763: E/AndroidRuntime(286): at com.example.myfirstapp.DisplayMessageActivity.goBack(DisplayMessageActivity.java:30) 
09-27 14:08:42.763: E/AndroidRuntime(286): at java.lang.reflect.Method.invokeNative(Native Method) 
09-27 14:08:42.763: E/AndroidRuntime(286): at java.lang.reflect.Method.invoke(Method.java:521) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.view.View$1.onClick(View.java:2067) 
09-27 14:08:42.763: E/AndroidRuntime(286): ... 11 more 
09-27 14:08:42.763: E/AndroidRuntime(286): Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cmp=com.example.android.lifecycle/.DialogActivity } from ProcessRecord{450fce58 286:com.example.myfirstapp/10044} (pid=286, uid=10044) requires null 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.os.Parcel.readException(Parcel.java:1247) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.os.Parcel.readException(Parcel.java:1235) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1298) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.app.Activity.startActivityForResult(Activity.java:2817) 
09-27 14:08:42.763: E/AndroidRuntime(286): at android.app.Activity.startActivity(Activity.java:2923) 
09-27 14:08:42.763: E/AndroidRuntime(286): ... 15 more 
+1

發佈錯誤logcat。 –

+0

@LalitPoptani - 我已經粘貼錯誤logcat – Ankush

+0

你是從相同的應用程序或不同的應用程序調用此? –

回答

0

添加Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_FROM_BACKGROUND標誌意圖,如果你是從背景開始新的應用程序爲:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.setComponent(new ComponentName("com.example.android.lifecycle","com.example.android.lifecycle.DialogActivity")); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setFlags(Intent.FLAG_FROM_BACKGROUND); 
startActivity(intent); 
0

我覺得清單文件下活動的android:「DialogActivity」名稱=,名稱應是 action android:name =「com.example.android.lifecycle.DialogActivity」
你可以試試嗎?

+0

不,這不起作用。仍然給我同樣的錯誤 – Ankush

+0

檢查此鏈接:http://stackoverflow.com/questions/4162447/android-java-lang-securityexception-permission-denial-start-intent並檢查您的清單文件的雙倍時間規範的活動名稱。 – vinod

相關問題