我开发了一个Cordova插件,可以打开一个包含Twitter搜索时间轴的新视图。以下是构建它的类:
package com.example.hello;
import com.twitter.sdk.android.tweetui.TweetTimelineListAdapter;
import com.twitter.sdk.android.tweetui.SearchTimeline;
import android.os.Bundle;
import android.app.ListActivity;
public class TimelineListActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
Bundle recdData = getIntent().getExtras();
String hashtag = recdData.getString("hashtag");
super.onCreate(savedInstanceState);
setContentView(R.layout.timeline);
SearchTimeline searchTimeline = new SearchTimeline.Builder().query(hashtag).build();
final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter(this, searchTimeline);
setListAdapter(adapter);
}
}
由于找不到R包,我在编译项目时遇到了一些困难。我发现的唯一解决方案是让我的类位于MainActivity.java文件附近并与MainActivity位于同一个包中,因此:
package com.example.hello;
我还在plugin.xml中添加了一行,以便在构建项目时将我的TimelineListActivity.java放在与MainActivity.java相同的文件夹中:
<source-file src="src/android/TimelineListActivity.java" target-dir="src/com/example/hello" />
它的工作原理是这样,但是有一个问题。由于这是一个插件,我想将它添加到其他Cordova项目,我不知道他们的包名称。将Android平台添加到Cordova项目时会生成MainActivity.java文件。有没有办法可以动态获取包名?或者为了使这项工作有更好的方法来构建我的结构?
答案 0 :(得分:1)
我最初的问题可能首先是愚蠢的,但这是解决方案:
我已经删除了R包的用法,因此消除了项目的依赖性,不再需要知道项目的包名。 我从调用方法中获取了资源Id(因为这对我来说很方便,因为类扩展了CordovaPlugin)。
<p class="test">
Conact Me
</p>
.test {
border-top-style: solid;
border-bottom-style: solid;
border-bottom-width: 1px;
}
通过意图,因此避免使用R。
private void showTimeline(final String query, final Activity activity, final CallbackContext callbackContext) {
try {
Context context = cordova.getActivity().getApplicationContext();
Intent intent = new Intent(context, Class.forName("com.manifestwebdesign.twitterconnect.TimelineListActivity"));
intent.putExtra("query", query);
int resourceId = cordova.getActivity().getResources().getIdentifier("timeline", "layout", cordova.getActivity().getPackageName());
intent.putExtra("resourceid", resourceId);
cordova.startActivityForResult(this, intent, 1);
callbackContext.success();
}
catch(Exception e) {
System.err.println("Exception: " + e.getMessage());
callbackContext.error(e.getMessage());
}
}