2011-12-16 5 views
0

У меня есть два различных видов деятельности в двух пакетах следующим образом:Невозможно начать деятельность с другим пакета [Android]

  1. com.my.application.MyActivity1
  2. com.my.application.Test.MyActivity2

в моем файле манифеста я есть
package="com.my.application"
и Боте деятельность в том же application тега.

Я начинаю MyActivity1 изнутри .Test.MyActivity2 с помощью:

Intent intent = new Intent(getApplicationContext(), MyActivity1.class); 
startActivity(intent); 

Я получаю следующие журналы в журнале кошке при запуске приложения:

I/ActivityManager(1305): Starting: Intent { cmp=com.my.application/.MyActivity1 } from pid 2336 
D/dalvikvm(1886): GC_EXTERNAL_ALLOC freed 133K, 51% free 2687K/5447K, external 1527K/1559K, paused 56ms 
D/dalvikvm(1886): GC_EXTERNAL_ALLOC freed 12K, 51% free 2675K/5447K, external 9796K/11844K, paused 40ms 
D/AndroidRuntime(1886): Shutting down VM 
W/dalvikvm(1886): threadid=1: thread exiting with uncaught exception (group=0x2018d560) 
I/ActivityManager(1305): Process com.my.application (pid 2336) has died. 

После вызова функции startActivity мои сегменты приложений/crashes, и я не могу видеть, что MyActivity2 запущен/запущен.

Невозможно запустить активность из разных пакетов в Android.

Thanks,
PP.

+0

Неа, это возможно. Можно даже начать работу с сторонними приложениями. – hovanessyan

+0

Можете ли вы предоставить свой файл манифеста? похоже, есть некоторые проблемы с путём к 'MyActivtiy1' – Jin35

+0

Извините, но я не могу предоставить файл манифеста извините. – User7723337

ответ

1

Его можно :) и ваш запуск является правильным, поэтому он должен быть установлен с этим что-то не так. Чтобы быть точным, вы должны начать Activity2 с Activity1, почему вы спрашиваете, что манифест - это ответ, который я говорю. Вы видите, что в манифесте указан пакет, в котором должно находиться ваше основное действие.

-1

Вы можете попробовать так: поставить это в манифесте:

<activity android:name=".SecondActivity"> 
    <intent-filter> 
    <action android:name="applicationB.intent.action.Launch" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

затем называют так:

Intent intent = new Intent("applicationB.intent.action.Launch"); 
startActivity(intent); 
+0

Не требуется, если есть импорт ... – Warpzit

0

Это просто сделать один пакет другому. Используйте этот код для этого.

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.setComponent(new ComponentName("another package name","another package's main activity")); 
    startActivity(intent); 
} 

Это прекрасно работает для меня.

1

Проверьте манифеста

она должна быть ниже

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

    <application android:label="@string/app_name" 
     android:icon="@drawable/logo_android"> 
     <activity android:name=".MyActivity1" 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=".Test.MyActivity2" android:label="@string/app_name"> 
     </activity> 
    </application> 
</manifest> 

я это, это поможет вам.

+0

Это то же самое, но Intent-filter MAIN и LAUNCHER, определенные в MyActivity1, находятся в теге .Test.MyActivity2, поскольку мое приложение начинается с MyActivty2. Нужно ли также добавлять в MyActivity1 функцию «Умышленный фильтр-> действие-> MAIN? – User7723337

+0

Нет, вам не нужно добавлять теги-намерения-> action-> MAIN в суб-активность. Этот тег target-filter-> action-> MAIN представляет только для активности запуска. – Satheesh

1
Intent intent = new Intent(this,com.packagename.activityname); 

также в манифесте,

<activity android:name=".packagename.Activityname" /> 

вместо <activity android:name=".Activityname" />

+0

Да, я также пробовал его, и в моих файлах манифеста также есть имя пакета с названием активности, как вы предложили. – User7723337

Смежные вопросы