2014-09-22 3 views
1

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

public void startMyActivity(View view){ 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.setComponent(new ComponentName("com.package", "com.package.MyActivity")); 
    startActivity(intent); 
} 

Но я получаю сообщение об ошибке: Не удается найти явные деятельность com.package/com.package.MyActivity. Также я объявлял MyActivity как активность в файле манифеста, и я все равно получаю ту же ошибку. Что я делаю не так? Благодаря!

файл манифеста приложения А (из которого я хочу, чтобы начать свою деятельность):

<?xml version="1.0" encoding="utf-8"?> 

package="com.example.appA" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="15" 
    android:targetSdkVersion="21" /> 

<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" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

и это файл манифеста приложения B (который содержит деятельность, которая должна быть начала):

<?xml version="1.0" encoding="utf-8"?> 

package="com.mypackage.package.appB" 
android:versionCode="1" 
android:versionName="1.0" > 

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


<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 

    <activity 
     android:name="com.package.MyPackage" 
     android:label="@string/title" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+2

Это должно быть '' com.packet "," com.packet.MyActivity "' –

+2

Вы добавили 'android: exported =" true "в файл манифеста MyActivity ?. И убедитесь, что имя пакета правильно –

+0

действительно пакет не пакет. это была ошибка, когда я написал вопрос, но в моем коде имя пакета, на самом деле путь дыр правильный. (я проверил это несколько раз) –

ответ

0

Ok, так что я нашел свой золя социологическое загрязнение. Это немного разочаровывает. Итак, я пробовал все мысли, что вы, ребята, предложили (я это ценю), но ничего не получилось. Поэтому мои мысли побудили меня использовать оболочку adb, чтобы увидеть, как это мое приложение B, и я узнал, что это не только com.package, но и com.mypackage.package (имя mypackage/pakcage не имеет значения, только например, цели). После этого я проверил манифест для приложения B и увидел, что атрибут «package» имеет значение com.mypackage.package. Еще раз спасибо!